İç içe olan döngülerden hızlı çıkış

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
BitByte
Üye
Mesajlar: 2
Kayıt: 01 Oca 2021 01:08

İç içe olan döngülerden hızlı çıkış

Mesaj gönderen BitByte »

Merhaba,
Eskiden kullandığım fakat eski bilgisayarımla birlikte maalesef kaybettiğim bir kod parçasını sormak istiyorum. İç içe olan ve çok hesap yapan iki döngüden keypress olayıyla çıkmak zaman alıyor fakat o kod parçasıyla anında çıkılıyordu. Hatırladığım tek şey şöyle: İf ...... 127 = 127 then..... bu sadece hatırladığım kadarı. Yanlış hatırlamıyorsam tek satır bir şeydi. Bilen kullanan arkadaş varsa ve yardımcı olursa sevinirim. Şimdiden teşekkürler.

Aradığımı daha yeni buldum 9.9.2021. İhtiyacı olanlar için:
if GetKeyState(VK_ESCAPE) and 128 = 128 then exit (veya duruma göre Break);
ESC ye basar basmaz çıkılıyor.
En son BitByte tarafından 10 Eyl 2021 02:29 tarihinde düzenlendi, toplamda 3 kere düzenlendi.
aligel54
Üye
Mesajlar: 41
Kayıt: 20 Nis 2009 11:34

Re: İç içe olan döngülerden hızlı çıkış

Mesaj gönderen aligel54 »

Demek istediğini tam anlayamadım.
Örnek kod verirsen daha iyi olur.

Ama normalde döngüden doğrudan çıkman için aşağıdaki komutu kullanabilirsin.

if Sart_olustuysa then break;
BitByte
Üye
Mesajlar: 2
Kayıt: 01 Oca 2021 01:08

Re: İç içe olan döngülerden hızlı çıkış

Mesaj gönderen BitByte »

if Sart_olustuysa then break;
Bu kodla yavaş çıkılıyor, saniyeler sürüyor. Cevabınız için teşekkürler. Aradığımı yeni buldum.

Kod şöyle:
if GetKeyState(VK_ESCAPE) and 128 = 128 then exit (veya duruma göre break);
ESC ye basar basmaz çıkılıyor.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: İç içe olan döngülerden hızlı çıkış

Mesaj gönderen ertank »

BitByte yazdı: 10 Eyl 2021 02:21 if Sart_olustuysa then break;
Bu kodla yavaş çıkılıyor, saniyeler sürüyor.
Eğer iç içe birden fazla döngü varsa her döngüde çıkma koşulu kontrol etmelisiniz. Aksi halde en içteki döngüde çıkma koşulu yakalanır ise dış döngüler çalışmaya devam eder.

Kod: Tümünü seç

var
  I: Integer;
  I2: Integer;
  KosulGerceklesti: Boolean;
begin
  KosulGerceklesti := False; // döngüler devam etsin.
  for I := 0 to 10000 do
  begin
    for I2 := 0 to 20000 do
    begin
      // Döngüden çıkma kontrolü yapılıyor
      if Kosul = True then
      begin
        KosulGerceklesti := True;
        Break; // en içteki döngü sonlandı.
      end;
    end;
    if KosulGerceklesti then
      Break; // dıştaki döngü de koşul geçekleştiği için sonlandı.
  end;
end;
Eğer yukarıdaki örnekte en altta iki for döngüsü arasında ve ilk for döngüsü içinde kalan iki satır "KosulGerceklesti" kontrlü eklenmez ise Koşul gerçekleşse dahi dıştaki döngü tamamlanmadan kod akışı döngüden çıkmaz.
Cevapla