[Delphi] TServerSocket - Delphi 6

0

Cześć @LL

Mam taki problem:
gdy łączę się ClientSocketem do ServerSocketu i po naciśnięciu przycisku wysyłam pewien string do servera...chcę, aby serversocket to odczytał i w zależności od tego, jaki ten text będzie, wykonywał odpowiednie zadanie. Otóż problem pojawił się przy "czuwaniu" servsocketa na więcej niż jeden string...poniżej rozjaśniam sprawę kodem:

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
if Socket.ReceiveText = 'okno' then
ShowMessage('rozkaz wykonany');
if Socket.ReceiveText = 'wylacz' then
Application.Terminate;
end;

Dlaczego jak prześlę rozkaz "okno" to server reaguje i wyświetla okienko, a jak chcę wyłączyć program poprzez servsock., przesyłając string "wylacz", to brak reakcji, żadnego błędu... [???]
To dotyczy obojętnie jakiego polecenia --> po prostu działa tylko to spod pierwszego "if ServerSocket1.Re..."...te dalsze if-y tak jakby ich nie było.

Pomocy :-)

--
Pracuję w Delphi
+------------------+
Pozdrawiam
GG: 4079188
[email protected]

0

Ja pojecia nie mam .. uzywam serverow i klijentow z pakietu indy. Sprobuj ten tekst wpisac najpierw do jakiejs zmiennej i potem porownywac.

--
Pozdrawiam [cya] Tomasz K.

0

dałem zmienną globalną k:string, później próbowałem każdej z tych metod:

  1. linijkę k:= ServerSocket1.Socket.ReceiveText; wstawiłem do jednego z TTimerów - błąd...
  2. wstawiłem ją do procedury OnRead - błąd...
  3. próbowałem też OnListen - nie działa :-[

Działa tylko tak, jak mam, ale właśnie niestety TYLKO pierwszy if...dalszych warunków nie raczy już spełnić...

Może jakąś pętlę...? Proszę o pomoc...:-) [???]
Kiedy to robiłem, nie myślałem, że będą w tym miejscu jakiekolwiek kłopoty... :-8 [stuk]

--
Pracuję w Delphi
+------------------+
Pozdrawiam
GG: 4079188
[email protected]

0

A spróbuj tak:

var
s: string;
begin
s := Socket.ReceiveText;
if s = 'okno' then ShowMessage('rozkaz wykonany');
if s = 'wylacz' then Application.Terminate;
end;

--
Pozdrawiam...
piechnat

0

w drugim i następnym użyj else if i pamiętaj, żeby w linijce wyżej skasować ';' na końcu (przed else nie wolno go stawiać :P)

--
Spin
Delphi - Lets make Windows better....

0

w drugim i następnym użyj else if i pamiętaj, żeby w linijce wyżej skasować ';' na końcu (przed else nie wolno go stawiać :P)

Ale to nie ma znaczenia ... i tak powinny zostac porownane i tak.

--
Pozdrawiam [cya] Tomasz K.

0

Cześć @LL

Piechnat...Twój sposób zadziałał [hurra] Ja robiłem bardzo podobnie, ale jednak inaczej, co powodoqwało błędy. Ja robiłem tak:

var
s: string;
begin
<font color="red">s := ServerSocket1.Socket.ReceiveText;</span>
if s = 'okno' then ShowMessage('rozkaz wykonany');
if s = 'wylacz' then Application.Terminate;
end;

A ty proponujesz:

var
s: string;
begin
<font color="red">s := Socket.ReceiveText;</span>
if s = 'okno' then ShowMessage('rozkaz wykonany');
if s = 'wylacz' then Application.Terminate;
end;

Dzięki... :-) że też tak wcześniej nie zrobiłem[stuk]...hehe

--
Pracuję w Delphi
+------------------+
Pozdrawiam
GG: 4079188
[email protected]

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