Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Почему не обрабатывается событие


Автор: pomogite 9.12.2013, 22:07
Здравствуйте! Такая проблема, сервер не обрабатывает второе событие ClientRead. Вот код:
Код

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;  Socket: TCustomWinSocket);
    var window:HWND;
begin
if Socket.ReceiveText  = 'Start' then
    begin
        window:=findwindow(nil,PChar(pansichar(Edit1.Text)));
        if window=0 then
        ShellExecute(Form1.Handle,nil,pansichar(Edit1.Text),nil,nil,SW_SHOWNORMAL);
    end;


if Socket.ReceiveText  = 'Stop' then
  begin
    KillTask('starbound_server.exe');
  end;
end;

Старт обрабатывается правильно, а вот завершать процесс не хочет, если поменять условия местами, то работает стоп, а старт перестаёт, подскажите в чём проблема?

Автор: snowonthetree 9.12.2013, 22:30
Попробуйте ввести дополнительную переменную, присвойте ей Socket.ReceiveText, а затем сравнивайте ее значение.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Почему-не-обрабатывается-событие-id52a6154eae2015c51c8b4567#findElement_E7045_52a61a52ae2015561b9d4f75_0

Автор: pomogite 11.12.2013, 19:58
snowonthetree
Спасибо! 

Решение:
Код

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
    var window:HWND;
    command:string;
   // i:integer;
Socket1 : TCustomWinSocket;
begin
command:= Socket.ReceiveText;
if command  = 'Start' then
    begin
        window:=findwindow(nil,PChar(pansichar(Edit1.Text)));
        if window=0 then
        ShellExecute(Form1.Handle,nil,pansichar(Edit1.Text),nil,nil,SW_SHOWNORMAL);
    end;
if command  = 'Stop' then
  begin
    KillTask(Edit4.Text);
  end;
if command  = 'Test' then
  begin
   window:=findwindow(nil,PChar(pansichar(Edit1.Text)));
      if window=0 then
      Serversocket1.Socket.Connections[0].SendText('Ñåðâåð íå ðàáîòàåò.')
      else
      Serversocket1.Socket.Connections[0].SendText('Ñåðâåð ðàáîòàåò.')
  end;
memo1.Lines.Add(DateToStr(Time)+' *** '+r_ip+' *** '+command);
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)