Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Lazarus - problen s while

Tak to čtení mám tak jak poradil Wikan a bych řek, že je to dobrý napad.


procedure TForm1.LazSerial1RxData(Sender: TObject);
var
    sl: TStringList;
begin
data := '';
stavvazeni := '';
vaha := '';
sleep(50);
data := lazserial1.ReadData;
sl := TStringList.Create;
sl.Delimiter := ',';
sl.DelimitedText := data;

if Trim (sl[0]) = 'ST' then
                    begin
                        stavvazeni := Trim (sl[0]);
                        vaha := Trim (sl[2]);
                        Label1.Caption:= Trim (sl[0]);
                        Label2.Caption:= Trim (sl[1]);
                        Label3.Caption:= Trim (sl[2]);
                        Label4.Caption:= Trim (sl[3]);
                    end
                    else LazSerial1.WriteData('hups');
sl.Free;
end;              

Ale to "ještě by bylo dobré dát tam nějaký timeout, aby program neuváznul v té smyčce navěky" mi nedalo spat.
Takže asi klasika s repeat.


procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
i:=0;
LazSerial1.WriteData('hups');

repeat
    inc(i);
    Application.ProcessMessages;
    if stavvazeni = 'ST' then  continue;
    sleep(50);
until i=100;

Memo1.Lines.AddText('stav vazeni ' + stavvazeni);
Label5.Caption:= stavvazeni;
Label6.Caption:= vaha;
end;       

Nějake připominky? :-D

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny