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ı.
TUTF8Encoding.Create ile ilgili satır devamında işi bittiğinde Free etmiş olmayı ihmal etmiş olma olasılığınız nedir?
(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.
[
attachment=1192]
Örnek:
SHXml.Items.SaveToFile('TEMPXML\Irsaliye.xml', TEncoding.UTF8);
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);
(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.
(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

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.
(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?
(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.