![]() |
|
|
Регистрация | << Правила форума >> | 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 как это можно сделать?
|