çalışan programla ilgili
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
çalışan programla ilgili
Bugün saatlerdir çalışan bir programım var (delphide yazdığım).
Program saatlerdir çalışıyor (çok yoğun bir işi var,çok büyük toblolardan select yapıp başka bir tabloya insert yapıyor) ve ben forma hiç müdahale edemiyorum,minimize edemiyorum,formun asıl halini göremiyorum bile. Farklı bir pencere açıp onu minimize ettiğimde formun olduğu alanda minimize ettiğim pencerenin oraya denk gelen kısmı görünüyor. Bu delphiden mi kaynaklanıyor neden böyle oluyor? Program çalışmaya devam ediyor. Kayıt sayısından takip ediyorum. Delphi 6, mssql server kullanıyorum. Database kendi makinamda değil server üzerinde. bde kullanıyorum. Tanlolar gerçekten çok büyük (insert yaptığı tabloya yaptığı kayıt sayısı şuanda 909.621, tahminen 1.320.000 civarında olacak)
Program saatlerdir çalışıyor (çok yoğun bir işi var,çok büyük toblolardan select yapıp başka bir tabloya insert yapıyor) ve ben forma hiç müdahale edemiyorum,minimize edemiyorum,formun asıl halini göremiyorum bile. Farklı bir pencere açıp onu minimize ettiğimde formun olduğu alanda minimize ettiğim pencerenin oraya denk gelen kısmı görünüyor. Bu delphiden mi kaynaklanıyor neden böyle oluyor? Program çalışmaya devam ediyor. Kayıt sayısından takip ediyorum. Delphi 6, mssql server kullanıyorum. Database kendi makinamda değil server üzerinde. bde kullanıyorum. Tanlolar gerçekten çok büyük (insert yaptığı tabloya yaptığı kayıt sayısı şuanda 909.621, tahminen 1.320.000 civarında olacak)
Merhaba,
be tip drumlarda gerekli komut Update. Form1.Update komutunu verdiğiniz anda, form yeniden boyanır ve gözükür.
Ben bu tip durumlarda takip için bir değişken tanımlayıp, onu ekrana yazdırıyorum. şuna benzer birşey :
Programın minimize veya butona bastığınızda yanıt almak istiyorsanız; Application.ProcessMessage komutunu yazmalısınız.
Kolay gelsin.
be tip drumlarda gerekli komut Update. Form1.Update komutunu verdiğiniz anda, form yeniden boyanır ve gözükür.
Ben bu tip durumlarda takip için bir değişken tanımlayıp, onu ekrana yazdırıyorum. şuna benzer birşey :
Kod: Tümünü seç
var
i : integer;
begin
i := 0;
{insert işlemleri}
Inc(i);
Label1.Caption := IntToStr(i);
Form1.Update;
...
end;
Kolay gelsin.
Merhaba,
her iki yarışmacı arkadaşımın da (pardon programcı
) verdiği bilgilere diyecek bir sözüm yok.
Fakat bu şekilde yapınca işlemde bir yavaşlamayı da göze almak gerekiyor. Bence olayı hızlandırmak daha akıllıca olacaktır. select le insert i aynı query de kullanmak hızı arttırır. Eğer arada bir işlem yapman gerekiyorsa bunun için de stored procedure kullanabilirsin. Ayrıca select yaptığın query nin dbgrid, dbedit, dblookupcombo vs. bileşenlerdeki bağlantıları kapatmalısın! query bağladığın dataset leri o an için DataSource.DataSet := nil; ile ayırabilirsin. Ayrıca bu işleri query ile yaparken BDEADMIN den işlem yaptığın alias ın SQLQRYMODE SERVER seçersen işlemler server üzerinde daha hızlı olabilir.
Hızlanınca da ekranın donmasını (grafik tazelememesini) çözmüş olursun.
Kolay gelsin.
her iki yarışmacı arkadaşımın da (pardon programcı


Hızlanınca da ekranın donmasını (grafik tazelememesini) çözmüş olursun.
Kolay gelsin.
şöyle bişi yapsak sorunu çözemezmiyiz
uygun gördüğün muthelif yerlere(uzun süreceğini düşündüğün döngülerin içine) mesala her kayıt insert ettiğinde
application.ProcessMessages
yazıp programın diğer işlerini yapması için fırsat versek olmazmı? aynı şekilde çalışan benimde bir programım var ve 365 gün 6 saat sürekli çalışacak (5 saniyede bir) bir tabloya bakıyor ve kendisine ait olan kayıtları kendi localine çekiyor. bu şekilde bir tıkanma yaşadığı için böyle bir çözüm bulmuştum.
uygun gördüğün muthelif yerlere(uzun süreceğini düşündüğün döngülerin içine) mesala her kayıt insert ettiğinde
application.ProcessMessages
yazıp programın diğer işlerini yapması için fırsat versek olmazmı? aynı şekilde çalışan benimde bir programım var ve 365 gün 6 saat sürekli çalışacak (5 saniyede bir) bir tabloya bakıyor ve kendisine ait olan kayıtları kendi localine çekiyor. bu şekilde bir tıkanma yaşadığı için böyle bir çözüm bulmuştum.