[delphi]sockety i "else if"

0

napisałem prosty program ktory wciska klawisze u mnie i u klienta za pomoca socketow klawisze te sa podpiete pod registerhotkey, obsluge kilku klientow zrobilem za pomoca instrukcji for (zmniejszam index w tablicy connection), problem jest taki ze klient reaguje tylko na sygnal nr 1, a reszte 'olewa' tak wyglada procedura wysylajaca komunikaty (ona dziala);

(push to procedura ktora wciska klawisze)

procedure TForm1.wm_HOTKEY(var Msg: TMessage);
var
lindeks: Integer;
begin
if Msg.WParam = $0001 then
begin
for lindeks:=indeks  downto 0 do
 begin
 if ServerSocket1.Active then ServerSocket1.Socket.Connections[lindeks].Sendtext('1');
end;
Sleep(strtoint(Edit1.text));
Push('1');
end

else if Msg.WParam = $0002 then
begin
for lindeks:=indeks  downto 0 do
 begin
 if ServerSocket1.Active then ServerSocket1.Socket.Connections[lindeks].Sendtext('2');
end;
Sleep(strtoint(Edit2.text));
Push('2');
end

else if Msg.WParam = $0003 then
begin
for lindeks:=indeks  downto 0 do
 begin
 if ServerSocket1.Active then ServerSocket1.Socket.Connections[lindeks].Sendtext('3');
end;
Sleep(strtoint(Edit3.text));
Push('3');
end;
end;

problem jest gdzies jednak w procedurce ktora odbiera te komunikaty :/ reaguje ona tylko na komunikat '1', reszte olewa, czy ktos widzi tutaj blad ?

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
 
if socket.ReceiveText='1' then
 begin
 Sleep(strtoint(edit1.Text)); Push('1')
 end

else  if  socket.ReceiveText='2' then
 begin
 Sleep(strtoint(edit2.Text));
 Push('2')
 end

else  if  socket.ReceiveText='3' then
 begin
 Sleep(strtoint(edit3.Text));
 Push('3')
 end

end;
0

ustaw sobie breakpoint na pierwszej linijce procedury, która nie działa prawidłowo, i sam znajdź powód niedziałania programu.

0

Nie wiem, czy tak łatwo by znalazł... Problem w tym, że ReceiveText jest funkcją i nie przechowywuje wartości, tylko ją odbiera. Na początku tej procedury przypisz zwracaną wartość do zmiennej. (s := socket.ReceiveText; if s='1' ...)

0

dziękuje :) rada konkretna, rozwiązująca problem i ucząca na przyszłość, jeszcze raz thx

1 użytkowników online, w tym zalogowanych: 0, gości: 1