var
mymemo:TMemo;
Begin
mymemo:=TMemo.Create(nil);
mymemo.Lines.Add('DelphiTurkiye');
Showmessage(Mymemo.Text);
End;
Uygulamayı çalıştırıp yukarıdaki kodlar tetiklendiğim zaman mymemo.Lines.Add satırına geldiği zaman " control ' ' has no parent window " hatası alıyorum. Burada Lines.Add yerine mymemo.Text olarak değer ataması yaparsam sorun olmuyor. Bunun sebebi nedir.
Teşekkrürler.
İyi Çalışmalar.
En son xozcanx tarafından 16 Eyl 2015 05:35 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
var
mymemo:TMemo;
Begin
try
mymemo:=TMemo.Create(Self);
mymemo.Lines.Add('DelphiTurkiye');
Showmessage(Mymemo.Text);
finally
mymemo.Free;
end;
End;
Yukarıdaki "Self" parametresi senin aradığın şey olacaktır. try..finally..end bloğu ise hafıza sorunu yaşamaman için. Kod ile nesne oluşturduğunda mutlaka kod ile "Free/Close/Dispose/vs" etmen gerekli.
@ertank
self parametresi ile yalnizca owner atanir. WinControl sinifindan türeyen nesnelere parent belirtmedigi sürece bu hatayi alacaktir.
eger ki, islem bitiminde hemen free edilecekse memo kullanmak yerine TStringList kullanilir. Hemen free edilecek islemlerde görsel bir class kullanmak yersiz olur.
Hocam ilginize Teşekkürler. Demek istediğinizi çok iyi anladım. açıkcası yapmak istediğim TXT dosyam var ve buradaki verileri ayrıştırarak ait oldukları tablolara yazmak isitiyorum. 1. satırın 1. karakteri A ise Tablo1'e B ise Tablo2 ye insert edeceğim. buradaki verileri ayrıştırmada filan sıkıntım yok tek sıkıntım insert süresi test amaçlı tablolar yerine öncelikle 2 memo nesnesine ayrıştırarak aktarıyorum sn de 500 kayıt aktarıyor. Tablolara da aktarırken bu süreyi kısaltmak istiyorum açıkcası.Bunun için nasıl bir yol izlemem gerekir.
Teşerkkürler.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
öncelikle Harddisk'ten veri okumak programinizi yavaslatir.
Memory üzerinden halledeceginiz ve görsellige ihtiyac duymayacaginiz islemlerde TMemo gibi görsel bilesen kullanmayin.
Bunun yerine TStringList isinizi görecektir.
Üc adet TStringList kullanin. Birincisine MyStringList.LoadFromFile ile dosyanizi yükleyin. Ikinci'ye A ile baslayan, ücüncüye ise B ile baslayan verilerinizi eklersiniz. Daha sonra her iki StringList'i de döngü vasitasi ile tablolara ekleyebilirsiniz.
Her bir kelime icin ayri bir DataRow olusturulmayacaksa, StringList.SaveToStream diyerek verinizi bir stream üzerine yükleyip, daha sonra olusan Stream'i direkt veritabanina kayit edebilirsiniz.
Tekrar bu veriyi okuyup StringList yada benzeri görsel bir nesnede göstermek istediginizde veriyi stream'e yükleyip daha sorna MyStringList.LoadFromStream demeniz yeterli olacaktir.
Kolay gelsin.
Şunuda deneyebilirsiniz.
Parçalı download mantığı gibi veri setini birden çok parçalara ayırıp her veri setini bir thread ile veritabanına asenkron kayıt işlemi yaptırın. Süreniz thread sayınız kadar hatta daha fazla azalacaktır.
xozcanx yazdı:Hocam Sizden ALLAH razı olsun, StringList denemiştim fakat becerememiştim. sizin cevabınızdan sonra kutu açıldı Tekrar Teşekkürler Hocam.
badkursat yazdı:Şunuda deneyebilirsiniz.
Parçalı download mantığı gibi veri setini birden çok parçalara ayırıp her veri setini bir thread ile veritabanına asenkron kayıt işlemi yaptırın. Süreniz thread sayınız kadar hatta daha fazla azalacaktır.
mrmarman yazdı:
hocamızın bu konu ile ilgili bir makalesi varsı Parçalı Download dediğinizde aklıma geldi. Bu konuda yeterli bilgiye sahip olmadığımdan şuan için bunu halletmem zor olur. StringList ile düşündüğümden daha hızlı sonuç aldım ilginiz ve tavsiyeniz için Teşekür ederim.
İyi Çalışmalar.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..