Programdaki yavaşlık sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
CinAnka
Üye
Mesajlar: 84
Kayıt: 03 Nis 2006 11:27
Konum: İstanbul

Programdaki yavaşlık sorunu

Mesaj gönderen CinAnka »

S.A.
Hazırladığım programda, toplam 12 tane form kullandım. ama menüde, A formunu kapatıp başka bir B formunu açtığımda, bu işlem biraz uzun sürüyor. Formlarım:
A formu
B formu
C formu
D formu
E formu
F formu
G formu

B, C, ve D formları, A formu kapanınca otomatik olarak kapanıyor, yani, A formunun on close yordamına:

Kod: Tümünü seç

procedure TFrm_A.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Frm_B.Close;
Frm_C.Close;
Frm_D.Close;
Frm_E.Show;
end;
E formunu açmak istediğimde, var olan bütün formlarımı kapatıyorum: örneğin G formunu açmak için:

Kod: Tümünü seç


Frm_A.close;
Frm_E.close;
Frm_F.close;
Frm_G.show;
kodunu yazıyorum. Program çalışıyor, fakat dediğim gibi, formlar arası geçişlerde bu uzun süre alıyor. gözle gözükür bir performans kaybı var. Bu geçiş sürelerini mümkün olduğu kadar aza indirmek için neler yapabilirim???

Teşekkür ederim...
Güçlü olan haklı değil, haklı olan güçlüdür!
ikut

Show close ile yavaşlama olmaz.. ama şunu bir incele

Mesaj gönderen ikut »

Formları kendin create etmiyorsan ve makinenin ram ide azsa yavaşlamın kralı olur programda.

şimdi bu yüzden formlarda ne var
veritabanı ne
kaminenin ram i kaç
formları kendin ellemi create edityorsun yoksa uygulama içinde baştan sona açıklarmı

yazarsan bakalım
Kullanıcı avatarı
CinAnka
Üye
Mesajlar: 84
Kayıt: 03 Nis 2006 11:27
Konum: İstanbul

Mesaj gönderen CinAnka »

veritabanı Ado, ve makinamın RAM i: 768 MB
Formları ben elimle create etmiyorum, hepsi başta auto create ediliyor. ve formlarda, sms gönderimi yapan kod var...
Güçlü olan haklı değil, haklı olan güçlüdür!
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

formlarını show yerine showmodal ile gösterirsen bir pencere kapanmadan bir diğeri açılmaz. bende 100 formdan oluşan programlar var. bu şekilde karmaşayı önlüyorum. kolay gelsin.
Kullanıcı avatarı
CinAnka
Üye
Mesajlar: 84
Kayıt: 03 Nis 2006 11:27
Konum: İstanbul

Mesaj gönderen CinAnka »

:)
showmodal yapınca, sadece 1 form aktif oldu, ve anamenümdeki bütün butonlar işlevselliğini kaybetti. performansa gelince, bir düzelme olmadı. şimdi artık, işlevsel olmayan bir anamenüm, ve korkunç yavaşlıkta açılan formlarım var. başka fikri olan var mı?
Güçlü olan haklı değil, haklı olan güçlüdür!
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Şimdi formları autocreate yerine kendin create etmen programının hızlanmasında etkili olacaktır.

Öncelikle Project-Options menüsünden açılan pencerede Forms tabında iki listbox vardır.1.AutoCreate Forms 2.Available Forms

Ana formun ve varsa datamodulun hariç diğer tüm formlarını AutoCreateForms bölümünden AvailableFroms bölümüne taşı.

Ve formları create ederken ve açarken de

Kod: Tümünü seç


if FrmXXX=Nil then
//Eğer FrmXXX create edilmemişse create et ve göster
begin
Application.CreateForm(TFrmXXXX,FrmXXX);
FrmXXX.Show;
end
else
//Eğer FrmXXX create edilmmişse sadece göster
begin
FrmXXX.Show;
end;
Tabii formları kapatırkende bellekten iyice atman için onclose yordamında da

Kod: Tümünü seç

Action:=Cafree;
FrmXXXX:=Nil;
kodlarını kullanmalısın.

Eğer tüm formları ve projeni bu mantıkta yani lazım olduğunda belleğe yükleme ve bitincede bellekten atmak şeklinde kodlarsan form sayısı ne kadar fazla olursa olsun sadece kullandığın formlar belleğe yükleneceği için projenin performansı toplam form saysısına değilde o an aktif olarak kullanılan form saysısına bağlı olacaktır.



Ayrıca her formunda database bileşenleri var ise bunlarında form kapanırken yavaşlama yapması normal olabilir.
Datamodule kullanmanı tavsiye ederim.

Not=Ayrıca gereksiz yere kullandığın global değişkenler falan varsa tabiiki bunlarda belleği şişirir.Değişken yönetiminde de create et kullan free et mantığını gütmen gerekir.


Kolay Gelsin.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

ben form1in değil diğer formların showmodal ile gösterilmesini kastetmiştim. böylece üst üste açılan form karmaşasının önüne geçilmiş olacaktı.
autocreate olayı konusunda bence boşuna uğraşıyorsunuz, programınızda kesinlikle bir hata var. 100den fazla form bende otomotik cerate ediliyor ve bellketen de atılmıyorlar. ama herhangi bir yavaşlık yok. 256 mb ram var.
formlarında sürekli internet bağlantısını sınayan bişeyler vardır falan.
ondan yavaş açılıyor olabilirler. bence sen dikkatlice kodlarını bi gözden geçir.
Kullanıcı avatarı
CinAnka
Üye
Mesajlar: 84
Kayıt: 03 Nis 2006 11:27
Konum: İstanbul

Mesaj gönderen CinAnka »

evet, her formumda, internetten xml ile veri gönderip alan, ve gelen cevabı yorumlayan kısımlar var, yavaşlık ondan kaynaklanıyor olmalı... şu durumda, yapabileceğim birşey yok gibi gözüküyor...
Güçlü olan haklı değil, haklı olan güçlüdür!
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

bence sen ene iyisi şöyle bişey yap, farklı bir exe yaz. o exe arka planda programla beraber çalışsın ve internetten gelen xmlleri ve gidecek xmlleri göndersin. gelenleri veritabanına kaydetsin, gidecekleri veritabanından okusun.
senin asıl programın da sadece veritabanından kontrollerini yapsın.
mesela bi sms gönderilecekse o smsi veritabanındaki gidecekler bölümüne kaydetsin. diğer program da onu ordan alır ve postalar.
arka planda çalışan program istediği kadar yavaş çalışsın seni alakadar etmez böylelikle.
kolay gelsin.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

outlook express de benzer bir mantıkla çalışıyor :)
Kullanıcı avatarı
CinAnka
Üye
Mesajlar: 84
Kayıt: 03 Nis 2006 11:27
Konum: İstanbul

Mesaj gönderen CinAnka »

teşekkür ederim...
Güçlü olan haklı değil, haklı olan güçlüdür!
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

nitrokonat yazdı:autocreate olayı konusunda bence boşuna uğraşıyorsunuz, programınızda kesinlikle bir hata var. 100den fazla form bende otomotik cerate ediliyor ve bellketen de atılmıyorlar. ama herhangi bir yavaşlık yok. 256 mb ram var.
formlarında sürekli internet bağlantısını sınayan bişeyler vardır falan.
ondan yavaş açılıyor olabilirler.
Bence bu konuya dikkat edilmeli.Şimdi sorun olmaması demek ilerde sorun olmayacağı anlamına gelmeyecektir.Ayrıca windowsta biz hiç çalıştırmazsak biel arka planda bir sürü program çalışıyor.Birde biz 3-5 programı aynı anda çalıştırdığımızı düşünün.Ve birde bu çalışan tüm programların da sistem kaynaklarını bu mantıkla kullandığını düşünün o zaman değil 256 mb ram 2 gb ram ile bile sorun yaşayabiliriz. :idea: :idea: :idea:

Unutmayalım ki windows sadece bizim programımız için çalışmıyor. :lol: :lol: :lol:

Kolay gelsin...
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

CinAnka yazdı:veritabanı Ado
Böyle bir veritabanı mı var :shock:
CinAnka yazdı:ve formlarda, sms gönderimi yapan kod var...
bu kodlar hangi yordamlarda çalışıyor?
Cevapla