Programım Kilitlenmesin Diyorsanız!

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Programım Kilitlenmesin Diyorsanız!

Mesaj gönderen Trial_Cooder »

Aşağıda anlattığımı çoğumuz biliyoruz ama olsun bilmeyenler var

Arkadaşlar hepimiz uzun bir döngü yaptığımızda bilmem farkına vardıkmı programımız kilitleniyor ve döngü bittikten sonra tekrar aktif oluyor. Eğer Program işlem yaparken başka işlemlerde yapabileyim diyorsanız

o komutu işlemeye başlamadan önce

Application.ProcessMessages; Yazın.

örn:
aşağıdakini yazın ve çalıştırın
while true do

programınız kilitlenecek

Application.ProcessMessages;
While True Do

Programınız kilitlenmeyecek..
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

süper bir makale...


verdiğin her iki örnekte de program kilitlenir.. :)

Hem bu makale bu kadar kısa olmamalı, bana fıkra gibi geldi...

iyi bak.
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

Evet Bi Terslik Var, Makale İyi Olunca Sesin Çıkmıyo, Kötü Olunca Eleştiriyosun :lol:
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

iyinin üstüne ne söylenebilir ki..

bence sen laf yetiştireceğine, makaleciğini düzelt..


senin yazdıklarını bi daha dikte edeyim...

bu programı kilitler..

Kod: Tümünü seç

// sonsuz döngü, bu döngüden asla çıkılamaz..
while true do ;
bu da programı kilitler..

Kod: Tümünü seç

// bir sonsuz döngü daha..
while true do Application.ProgressMessage;
:D
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

C/P'den Bu Kadar
İdare Et :lol:
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

döngü içine yazarsak en azından form refresh olur.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

s.a.
bu application.ProgressMessage olayına millet "tavsiye edilmez" falan diyodu. niye ki acaba?
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

mkysoft yazdı:döngü içine yazarsak en azından form refresh olur.
evet dönğü içine yazarsan kullancııyı kandırırısın...
bu su demek gibi bir sey olur...

Ben en hızlı şoförüm kesin kaza yapacam
ama bu bir süre idare ederim...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
huseyinkucuk
Üye
Mesajlar: 142
Kayıt: 29 Nis 2005 10:03
Konum: İstanbul
İletişim:

Mesaj gönderen huseyinkucuk »

tuanna, benzetmelerine hayranım :). Bana da 'result:=nesne;nesne.free' soruma karşılık işçi örneğini vermiştin ("işçiyi kov, sonra da bana iş yap de"). Sen bu formun örneklendirici üyesi ol abi :) Süpersin...
29.04.2005 tarihi itibariyle Delphi öğrenmeye başlayan yeni bir kullanıcı sayılabilirim.
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Applicatiom.ProggressMessage;

faydalıdır, ancak Windows Mesaj sistemini kullanıyorsanız, kullanmadan önce düşünmeniz gerekiyor.
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

nitrokonat yazdı:s.a.
bu application.ProgressMessage olayına millet "tavsiye edilmez" falan diyodu. niye ki acaba?
A.S.
Hatırladığım kadarıyla kanallar içerisindeki döngülerde de tavsiye edilmiyor. Saygılar
turkcanfidan
Üye
Mesajlar: 380
Kayıt: 31 Eki 2005 03:26

Mesaj gönderen turkcanfidan »

Diyelimki bir döngü içinde birçok kayıt üzerinde bir işlem yapıyorsunuz, programı istediğiniz zaman sonlandırmak için aşağıdaki gibi bir mantık kullanabilirsiniz. Application.ProcessMessages kullanılmadığında yine kilitlenecektir.

Kod: Tümünü seç

procedure TForm1.btBaslatClick(Sender: TObject);
begin
   dur := false;
   btDur.Enabled := True;
   btBaslat.Enabled := False;

   while not Table1.Eof do
      begin
      Table1.Edit;
      Table1.Post;
      Table1.Next;
      if dur then exit;
      Application.ProcessMessages;
      end;
end;

procedure TForm1.btDurClick(Sender: TObject);
begin
   dur := true;
   btBaslat.Enabled := True;
   btDur.Enabled := False;
end;
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Bak bu güzel bir örnekti. turkcanfidan arkadaşa teşekkürler. makale yazarına da "nanik :lol"

Not: if dur then exit; yerine if dur then break; olsa iyi olmaz mıydı? :wink:

saygılar..
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

Kandırdımm.... :lol:
Bende Bu Sorunun Cevabını Arıyodum, Soru Olarak Sorsam Cevap Gelmez. Bende Bişey Salliyim Yanlış Diye Düzeltsinler Banada Cevap Olur Dedim :lol:

Şaka Şaka Biyerden C/P Yaptım Ama, Denemeden Yaptığım İçin C/P'yi Böyle Oldu :o
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

Trial_Cooder yazdı:Kandırdımm.... :lol:
Bende Bu Sorunun Cevabını Arıyodum, Soru Olarak Sorsam Cevap Gelmez. Bende Bişey Salliyim Yanlış Diye Düzeltsinler Banada Cevap Olur Dedim :lol:

Şaka Şaka Biyerden C/P Yaptım Ama, Denemeden Yaptığım İçin C/P'yi Böyle Oldu :o
asıl sorun olan kısım bunu makale olarak vermendi...bence :D
Siz hayal edin...Biz yapalım TuannaSoft...
Cevapla