indy bug. eller hvad ?
Rozhjeg har downloadet indy's demoer på deres hjemmeside. Der er bla. en et chat prprgram. Her er en del af koden til den:
procedure TForm1.Timer1Timer(Sender: TObject);
var
Com,
Msg : String;
begin
if not IdTcpClient1.Connected then
exit;
Msg := IdTCPClient1.ReadLn('', 5);
if Msg <> '' then
if Msg[1] <> '@' then
begin
{ Not a system command }
memLines.Lines.Add(Msg);
end
else
begin
{ System command }
Com := UpperCase(Trim(Copy(Msg, 2, Pos(':', Msg) -2)));
Msg := UpperCase(Trim(Copy(Msg, Pos(':', Msg) +1, Length(Msg))));
if Com = 'CLIENTS' then
lbClients.Items.CommaText := Msg;
end;
end;
Problemet er at programmet fryser ved:
Msg := IdTCPClient1.ReadLn('', 5);
og der forekommer ikke en timeout. Hvis serveren efter et stykke tid skriver noget til klienten, så kommer det op på skærmen, og den fryser så igen; det er altså ikke en crash, klientetns ReadLn kan bare ikke timeoute.
Jeg har samme problem på 2 pc, så det er nok ikke mit OS der er skyld i det..
nogen foreslag ?
mvh
Rozh
