İ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.
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);
))))
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..
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.
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.
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
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;