Yorumları: 107
Konuları: 19
Kayıt Tarihi: 26-09-2016
Rep Puanı: 625 Acemi
23-06-2020, Saat: 02:17
Bir listbox da oluşturduğum XML dökümanını aşağıdaki kod ile kaydediyorum
SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', TUTF8Encoding.Create);
Fakat Şöyle bir sorun var 'TUTF8Encoding.Create' komutu olunca aşağıdaki hatayı veriyor.
An unexpected memory leak has occurred. The unexpected small blck leaks are:
21 - 28 bytes: TUTF8Encoding x1
TUTF8Encoding.Create bu kodu kaldırdığım zaman böyle bir hata vermiyor.
Not : Unigui Trial Edition üzerinde almaktayım bu hatayı.
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.
Hz. Muhammed (sav.)
Yorumları: 1.898
Konuları: 22
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 21.184 Üstad
TUTF8Encoding.Create ile ilgili satır devamında işi bittiğinde Free etmiş olmayı ihmal etmiş olma olasılığınız nedir?
Saygılarımla
Muharrem ARMAN
Yorumları: 4.245
Konuları: 381
Kayıt Tarihi: 07-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 17.107 Üstad
23-06-2020, Saat: 09:25
(Son Düzenleme: 23-06-2020, Saat: 09:25, Düzenleyen: Fesih ARSLAN.)
(23-06-2020, Saat: 02:17)KUNTAY Adlı Kullanıcıdan Alıntı: Bir listbox da oluşturduğum XML dökümanını aşağıdaki kod ile kaydediyorum
SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', TUTF8Encoding.Create);
Fakat Şöyle bir sorun var 'TUTF8Encoding.Create' komutu olunca aşağıdaki hatayı veriyor.
An unexpected memory leak has occurred. The unexpected small blck leaks are:
21 - 28 bytes: TUTF8Encoding x1
TUTF8Encoding.Create bu kodu kaldırdığım zaman böyle bir hata vermiyor.
Not : Unigui Trial Edition üzerinde almaktayım bu hatayı.
Merhaba,
TEncoding, static class olduğundan create etmeden, doğrudan SaveToFile metoduna gönderebilirsiniz.
Örnek:
SHXml.Items.SaveToFile('TEMPXML\Irsaliye.xml', TEncoding.UTF8);
DelphiCan'dır!
Yorumları: 400
Konuları: 25
Kayıt Tarihi: 02-01-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 2.186 Programcı
TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.
Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.
varUTF8: TUTF8Encoding.Create;
SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);
FreeAndNil(varUTF8);
Yorumları: 4.245
Konuları: 381
Kayıt Tarihi: 07-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 17.107 Üstad
23-06-2020, Saat: 09:39
(Son Düzenleme: 23-06-2020, Saat: 09:40, Düzenleyen: Fesih ARSLAN.)
(23-06-2020, Saat: 09:32)sadettinpolat Adlı Kullanıcıdan Alıntı: TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.
Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.
varUTF8: TUTF8Encoding.Create;
SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);
FreeAndNil(varUTF8);
Yaptığım testte Delphi 10.3.3 Rio ve Delphi 10.4 Sydney için TEncoding static sınıfında, herhangi bir bug'a rastlamadım.
DelphiCan'dır!
Yorumları: 107
Konuları: 19
Kayıt Tarihi: 26-09-2016
Rep Puanı: 625 Acemi
23-06-2020, Saat: 13:57
(Son Düzenleme: 23-06-2020, Saat: 14:23, Düzenleyen: KUNTAY.)
(23-06-2020, Saat: 08:22)mrmarman Adlı Kullanıcıdan Alıntı: TUTF8Encoding.Create ile ilgili satır devamında işi bittiğinde Free etmiş olmayı ihmal etmiş olma olasılığınız nedir?
Free etmiyordum ettiğim zaman donuyor etmediğim zaman donmuyordu.
Bu arada uniguide bu sorunu yaşıyorum normal windows desktopta bu sorun oluşmadı.
(23-06-2020, Saat: 09:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: (23-06-2020, Saat: 02:17)KUNTAY Adlı Kullanıcıdan Alıntı: Bir listbox da oluşturduğum XML dökümanını aşağıdaki kod ile kaydediyorum
SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', TUTF8Encoding.Create);
Fakat Şöyle bir sorun var 'TUTF8Encoding.Create' komutu olunca aşağıdaki hatayı veriyor.
An unexpected memory leak has occurred. The unexpected small blck leaks are:
21 - 28 bytes: TUTF8Encoding x1
TUTF8Encoding.Create bu kodu kaldırdığım zaman böyle bir hata vermiyor.
Not : Unigui Trial Edition üzerinde almaktayım bu hatayı.
Merhaba,
TEncoding, static class olduğundan create etmeden, doğrudan SaveToFile metoduna gönderebilirsiniz.
Örnek:
SHXml.Items.SaveToFile('TEMPXML\Irsaliye.xml', TEncoding.UTF8);
Aynen dediğiniz gibi direk metoda atayabiliyormuşum :  güzel çalıştı.
Acele cevap verdim exe dosyasını kapattığım anda aynı hatayı aldım.
(23-06-2020, Saat: 09:32)sadettinpolat Adlı Kullanıcıdan Alıntı: TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.
Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.
varUTF8: TUTF8Encoding.Create;
SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);
FreeAndNil(varUTF8);
Bunda da aynı hatayı verdi
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.
Hz. Muhammed (sav.)
Yorumları: 400
Konuları: 25
Kayıt Tarihi: 02-01-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 2.186 Programcı
Aldığınız hata oluşturduğunuz bir nesneyi free etmediğinizden kaynaklı bir hata.
her create metodu ile oluşturduğunuz nesneyi free ediyorsanız ve dediğim şekilde yaparsanız bir problem çıkmaması lazım.
Kodun bir yerinde create edip ama free etmediğiniz bir nesne var.
Yorumları: 4.245
Konuları: 381
Kayıt Tarihi: 07-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 17.107 Üstad
(23-06-2020, Saat: 13:57)KUNTAY Adlı Kullanıcıdan Alıntı: (23-06-2020, Saat: 09:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
TEncoding, static class olduğundan create etmeden, doğrudan SaveToFile metoduna gönderebilirsiniz.
Örnek:
SHXml.Items.SaveToFile('TEMPXML\Irsaliye.xml', TEncoding.UTF8);
Aynen dediğiniz gibi direk metoda atayabiliyormuşum : güzel çalıştı.
Acele cevap verdim exe dosyasını kapattığım anda aynı hatayı aldım.
@ sadettinpolat ın belirttiği bug olabilir. Delphi 10.3.3 veya 10.4'te bu sorun yok.
Hangi sürümü kullanıyorsunuz?
DelphiCan'dır!
Yorumları: 107
Konuları: 19
Kayıt Tarihi: 26-09-2016
Rep Puanı: 625 Acemi
23-06-2020, Saat: 14:58
(Son Düzenleme: 23-06-2020, Saat: 15:00, Düzenleyen: KUNTAY.)
(23-06-2020, Saat: 09:32)sadettinpolat Adlı Kullanıcıdan Alıntı: TUTF8Encoding sınıfında bug vardı. Hangi sürümde düzelttiler bilmiyorum ama statik metodları kullansanız bile memory leak oluşuyordu.
Çözüm olarak bir değişkene atayıp , kullanıp , sonra free edebilirsiniz.
varUTF8: TUTF8Encoding.Create;
SHXml.Items.SaveToFile(yol+'TEMPXML\Irsaliye.xml', varUTF8);
FreeAndNil(varUTF8);
Sadeddin bey ufak bir hata yapmışım değişkeni verirken şuan sizin söylediğiniz şekilde çözüldü.
(23-06-2020, Saat: 14:33)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: (23-06-2020, Saat: 13:57)KUNTAY Adlı Kullanıcıdan Alıntı: Aynen dediğiniz gibi direk metoda atayabiliyormuşum : güzel çalıştı.
Acele cevap verdim exe dosyasını kapattığım anda aynı hatayı aldım.
@sadettinpolat ın belirttiği bug olabilir. Delphi 10.3.3 veya 10.4'te bu sorun yok.
Hangi sürümü kullanıyorsunuz?
Delphi 10.3 Community Edition
Değişkene atayıp free edince hata vermedi.
Faydalanılmayan bilgi, harcanmayan ve hiç kimseye hayrı dokunmayan define gibidir.
Hz. Muhammed (sav.)
|