While do döngüsü exit, break, işe yaramıyo durduramadım...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
naturelmania
Üye
Mesajlar: 66
Kayıt: 27 Nis 2006 09:29

While do döngüsü exit, break, işe yaramıyo durduramadım...

Mesaj gönderen naturelmania »

İki ayrı procedure belirledim ve com porttan veri okutuyorum. Fakat bir türlü bu belirlediğim döngüyü durduramadım
Arada sırada kafasına eserse duruyor fakat başka zaman durmuyor.

Kod: Tümünü seç

Procedure TForm1.UBekle;
var
w:integer;
begin
  Application.ProcessMessages;
  while True do
  begin
    inc(w);
    Memo1.Lines.Add(inttostr(w));
    Comport.ReadStr(ex,1);
    if Comparestr(ex,'!')=0 then
    begin
      Exit;
    end;
  end;
end;

Procedure TForm1.PortOku;
begin
  Application.ProcessMessages;
  while True do
      begin
        Comport.ReadStr(ex,1);
        if CompareStr(ex,'=')=0 then
        begin
            Comport.ReadStr(veri,5);
            Exit;
        end;
      end;
end;
Acaba nerede yanlış yapıyorum? Ya da durdurabilmek için başka komutlar da var mı? While do ile ilgili yaptığım araştırmada exit, break ve abort dan başka birşey bulamadım. Yardımcı olan arkadaşlardan Allah razı olsun... İyi geceler.
var
sen : sevgili;
ben : aşık;
sevgi: aşk;
if ben aşık sana = True then
execute sevgi between(sen,ben);
:)))))
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

Hocam döngünün durması için verdiğin bir şart var o şartın gerçekleştiğine eminmisin ben bu tür olaylarda showmessage('XXXXX') gibi bişey yazarım exit veya break yerlerine mesaj veriyorsa döngü niye durmuyor diye bakarım mesaj vermezse demekki verdiğin şart gerçekleşmediği için durmuyordur.Sende bi dene istersen..
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Re: While do döngüsü exit, break, işe yaramıyo durduramadım.

Mesaj gönderen ikutluay »

naturelmania yazdı:İki ayrı procedure belirledim ve com porttan veri okutuyorum. Fakat bir türlü bu belirlediğim döngüyü durduramadım
Arada sırada kafasına eserse duruyor fakat başka zaman durmuyor.

Kod: Tümünü seç

Procedure TForm1.UBekle;
var
w:integer;
begin
  Application.ProcessMessages;
  while True do
  begin
    inc(w);
    Memo1.Lines.Add(inttostr(w));
    Comport.ReadStr(ex,1);
    if Comparestr(ex,'!')=0 then
    begin
      Exit;
    end;
  end;
end;

Procedure TForm1.PortOku;
begin
  Application.ProcessMessages;
  while True do
      begin
        Comport.ReadStr(ex,1);
        if CompareStr(ex,'=')=0 then
        begin
            Comport.ReadStr(veri,5);
            Exit;
        end;
      end;
end;
Acaba nerede yanlış yapıyorum? Ya da durdurabilmek için başka komutlar da var mı? While do ile ilgili yaptığım araştırmada exit, break ve abort dan başka birşey bulamadım. Yardımcı olan arkadaşlardan Allah razı olsun... İyi geceler.
comport için kullandığın comonentin method ve yordamlarını incelemek lazım. sourceforge da guzel bi tane vardı. 3.10 surumu. ayar ve led seti dahil.

burada bence debug manasına mesajla filan gösteriverin neredene oluyor görün.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

While true do demişssin bu yanlış zaten neden mi? şartı değiştirecek hiçbir değişkenin ve kodun yokta ondan... yapman gereken boolean bir değişken tanımlaman ve kodu ona göre yazman....ayrıca Application.ProcessMessages yanlış yere yazmışın aşağıdaki kodu bi dene

Kod: Tümünü seç

Procedure TForm1.PortOku;
var
bitir:boolean;
begin
 bitir:=True;
  while bitir=True  do
      begin
        Application.ProcessMessages;
        Comport.ReadStr(ex,1);
        if CompareStr(ex,'=')=0 then
        begin
            Comport.ReadStr(veri,5);
             bitir:=False;  // burda döngü şartını koyarak bitiriyoruz...          
             Exit; 
        end;
      end;
end;
Cevapla