![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Как можно реализовать использование компонента ScktComp напрямую без формы?
Попробовал сделать так: Код:
...
var
ServerSocket : tServerSocket;
...
procedure MyButtonEventClick( mButton : Integer; Sender, Parent : CGUIElement );
var i : Integer;
Begin
ServerSocket.Port:=StrToInt('777');
ServerSocket.Active:=True;
End; |
|
#2
|
||||
|
||||
|
Код:
var ServerSocket: TServerSocket; begin ServerSocket:=TServerSocket.Create(nil); ServerSocket.Port:=777; // .. end; |
|
#3
|
|||
|
|||
|
Ой спасибо огромное
![]() |
|
#4
|
|||
|
|||
|
Эээ а че связи нет?
Код:
...
procedure ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
var i : Integer;
begin
i := GameEngine.AddNew;
GameEngine.PlayerID := i;
GameEngine.List[ i ] := TPlayer.Create;
GameEngine.List[ i ].ID := i;
end;
procedure ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
var i : Integer;
begin
i := GameEngine.AddNew;
GameEngine.PlayerID := i;
GameEngine.List[ i ] := TPlayer.Create;
GameEngine.List[ i ].ID := i;
end;
procedure MyButtonEventClick( mButton : Integer; Sender, Parent : CGUIElement );
var i : Integer;
Begin
if id4cl=0 then
begin
ServerSocket.Port:=strtoint(( GUI.List[ id2 ] as CGUIedit ).Caption);
ServerSocket.Active:=True;
( GUI.List[ id2 ] as CGUIedit ).Enabled:=false;
( GUI.List[ id3 ] as CGUIedit ).Enabled:=false;
( GUI.List[ id5 ] as CGUIButton ).Enabled:=false;
( GUI.List[ id4 ] as CGUIButton ).Caption:=('Остановить');
id4cl:=1;
end
else
begin
ServerSocket.Active:=False;
( GUI.List[ id2 ] as CGUIedit ).Enabled:=true;
( GUI.List[ id3 ] as CGUIedit ).Enabled:=true;
( GUI.List[ id5 ] as CGUIButton ).Enabled:=true;
( GUI.List[ id4 ] as CGUIButton ).Caption:=('Создать');
id4cl:=0;
end;
End;
procedure MyButtonEvent1Click( mButton : Integer; Sender, Parent : CGUIElement );
Begin
if id5cl=0 then
begin
( GUI.List[ id2 ] as CGUIedit ).Enabled:=false;
( GUI.List[ id3 ] as CGUIedit ).Enabled:=false;
( GUI.List[ id4 ] as CGUIButton ).Enabled:=false;
ClientSocket.Port:=strtoint(( GUI.List[ id2 ] as CGUIedit ).Caption);
ClientSocket.Host:=( GUI.List[ id3 ] as CGUIedit ).Caption;
ClientSocket.Address:=( GUI.List[ id3 ] as CGUIedit ).Caption;
ClientSocket.Active:=True;
( GUI.List[ id5 ] as CGUIButton ).Caption:=('Отключится');
id5cl:=1;
end
else
begin
ClientSocket.Active:=False;
( GUI.List[ id2 ] as CGUIedit ).Enabled:=true;
( GUI.List[ id3 ] as CGUIedit ).Enabled:=true;
( GUI.List[ id4 ] as CGUIButton ).Enabled:=true;
( GUI.List[ id5 ] as CGUIButton ).Caption:=('Подключится');
id5cl:=0;
end;
End;
...
ServerSocket:=TServerSocket.Create(nil);
ClientSocket:=TClientSocket.Create(nil);
... |
|
#5
|
||||
|
||||
|
потому что по умолчанию у TServerSocket свойство ServerType == stNonBlocking и используется событийная модель, т.е. как минимум желательно обрабатывать события OnClientConnect и OnClientRead. почти то же и у TClientSocket: ClientType == ctNonBlocking, OnRead. в файле справки про это написано.
Последний раз редактировалось NumLock, 07.04.2011 в 16:49. |
|
#6
|
|||
|
|||
|
Я понял проблему нету вызова процедуры ServerSocketClientConnect как это можно сделать?
|