Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.04.2011, 15:01
KOTIUM KOTIUM вне форума
Прохожий
 
Регистрация: 07.04.2011
Сообщения: 8
Репутация: 10
По умолчанию Как обойтись без формы?

Как можно реализовать использование компонента ScktComp напрямую без формы?
Попробовал сделать так:
Код:
1
2
3
4
5
6
7
8
9
10
...
var
ServerSocket :  tServerSocket;
...
procedure MyButtonEventClick( mButton : Integer; Sender, Parent : CGUIElement );
var i : Integer;
Begin
ServerSocket.Port:=StrToInt('777');
ServerSocket.Active:=True;
End;
Но он выдаёт ошибку(
Ответить с цитированием
  #2  
Старый 07.04.2011, 15:05
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
1
2
3
4
5
6
7
var
  ServerSocket: TServerSocket;
begin
  ServerSocket:=TServerSocket.Create(nil);
  ServerSocket.Port:=777;
  // ..
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 07.04.2011, 15:08
KOTIUM KOTIUM вне форума
Прохожий
 
Регистрация: 07.04.2011
Сообщения: 8
Репутация: 10
По умолчанию

Ой спасибо огромное
Ответить с цитированием
  #4  
Старый 07.04.2011, 16:39
KOTIUM KOTIUM вне форума
Прохожий
 
Регистрация: 07.04.2011
Сообщения: 8
Репутация: 10
По умолчанию

Эээ а че связи нет?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
...
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);
...
Но связи между ними нет запускаю 2 проги создаю на 1 подключаюсь на 2 и нечё не происходит(((
Ответить с цитированием
  #5  
Старый 07.04.2011, 16:47
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

потому что по умолчанию у TServerSocket свойство ServerType == stNonBlocking и используется событийная модель, т.е. как минимум желательно обрабатывать события OnClientConnect и OnClientRead. почти то же и у TClientSocket: ClientType == ctNonBlocking, OnRead. в файле справки про это написано.
__________________
Пишу программы за еду.
__________________

Последний раз редактировалось NumLock, 07.04.2011 в 16:49.
Ответить с цитированием
  #6  
Старый 07.04.2011, 23:27
KOTIUM KOTIUM вне форума
Прохожий
 
Регистрация: 07.04.2011
Сообщения: 8
Репутация: 10
По умолчанию

Я понял проблему нету вызова процедуры ServerSocketClientConnect как это можно сделать?
Ответить с цитированием
  #7  
Старый 08.04.2011, 02:59
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,111
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Указав компоненту соотв. обработчик.
Ответить с цитированием
  #8  
Старый 08.04.2011, 03:01
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

наверное как-то так:
Код:
1
ServerSocket.OnClientConnect = ServerSocketClientConnect;
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #9  
Старый 08.04.2011, 08:50
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

property OnClientConnect: TSocketNotifyEvent;
type TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;
объект нужно создавать!!!

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
type
  TServerSocketEvent = class
    procedure OnClientConnect(Sender: TObject; Socket: TCustomWinSocket);
  end;
 
var
  FServerSocket: TServerSocket;
  FServerSocketEvent: TServerSocketEvent;
 
procedure TServerSocketEvent.OnClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  // собственно сам обработчик
end;
 
begin
  FServerSocket:=TServerSocket.Create(nil);
  FServerSocketEvent:=TServerSocketEvent.Create;
  FServerSocket.OnClientConnect:=FServerSocketEvent.OnClientConnect;
  // FServerSocketEvent.Free; // не забыть в конце сделать
end.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #10  
Старый 08.04.2011, 14:09
KOTIUM KOTIUM вне форума
Прохожий
 
Регистрация: 07.04.2011
Сообщения: 8
Репутация: 10
По умолчанию

К сожалению это всё уже пробовал но не работает может я что не так делаю вот весь код от и до:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
program Invaders;
 
uses
  OMEGA in 'headers\Delphi\OMEGA.pas',
  uSpriteEngine in 'units\Delphi\uSpriteEngine.pas',
  Player in 'Player.pas',
  Monster1 in 'Monster1.pas',
  Bullet in 'Bullet.pas',
  Boom in 'Boom.pas',
  GEngine in 'GEngine.pas',
  Res in 'Res.pas',
  uGUIEngine,
  Bullet2 in 'Bullet2.pas',
  Lan in 'Lan.pas',
  WinSock,
  Windows,
  Messages,
  unit1,
  moster1_bullet in 'moster1_bullet.pas',
  bullet3 in 'bullet3.pas',
  bullet4 in 'bullet4.pas',
  scktcomp,
  SysUtils,
  forms,
  Classes,
  Dialogs;
 
  type
  TServerSocketEvent = class
    procedure OnClientConnect(Sender: TObject; Socket: TCustomWinSocket);
  end;
 
var
  Process  : POTimer;
  Proc     : POTimer;
  full_scr : integer;
  id3,id4,id5      : integer;
  id4cl    : integer;
  id5cl    : integer;
    ServerSocket: TServerSocket;
  ClientSocket: TClientSocket;
   FServerSocket: TServerSocket;
  FServerSocketEvent: TServerSocketEvent;
 
  procedure TServerSocketEvent.OnClientConnect(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 SetFullScreen( Checked : Boolean; Sender, Parent : CGUIElement );
Begin
OE_ChangeScreenOptions( 1024, 768, 32, 0, Checked, FALSE );
End;
 
 
 
procedure MyButtonEventClick( mButton : Integer; Sender, Parent : CGUIElement );
var i : Integer;
Begin
if id4cl=0 then
begin
  FServerSocket:=TServerSocket.Create(nil);
  FServerSocketEvent:=TServerSocketEvent.Create;
  FServerSocket.OnClientConnect:=FServerSocketEvent.OnClientConnect;
  FServerSocket.ServerType:=stNonBlocking;
  FServerSocket.Port:=strtoint(( GUI.List[ id2 ] as CGUIedit ).Caption);
  FServerSocket.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
  FServerSocket.Active:=False;
  FServerSocketEvent.Free;
  ( 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:=TClientSocket.Create(nil);
  ClientSocket.ClientType:=ctNonBlocking;
  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;
 
 
 
procedure MyButtonEvent2Click( mButton : Integer; Sender, Parent : CGUIElement );
Begin
if full_scr=0 then
begin
OE_ChangeScreenOptions( 1024, 768, 32, 0, true, FALSE );
( GUI.List[ id ] as CGUIButton ).Caption := 'В окне';
 full_scr:=1;
End
else
begin
OE_ChangeScreenOptions( 1024, 768, 32, 0, false, FALSE );
( GUI.List[ id ] as CGUIButton ).Caption := 'На весь экран';
 full_scr:=0;
end;
end;
 
 
procedure MyButtonEvent3Click( mButton : Integer; Sender, Parent : CGUIElement );
Begin
OE_Quit;
End;
 
 
 
procedure Init;
  var
    i : Integer;
Begin
// Загружаем все ресурсы
res_Load;
Mouse.Texture := tex_Mouse;
LastEnemyAdd := U_GetTime;
id3:=GUI.AddElement( CreateEdit( nil, nil, MyFont, 1, 500, 148, 20, '127.0.0.1') );
id2:=GUI.AddElement( CreateEdit( nil, nil, MyFont, 1, 530, 148, 20, '777' ) );
id4:=GUI.AddElement( CreateButton( nil, nil, MyFont, 'Создать', 1, 600, 148, 20, @MyButtonEventClick ) );
id5:=GUI.AddElement( CreateButton( nil, nil, MyFont, 'Подключится', 1, 630, 148, 20, @MyButtonEvent1Click ) );
id:=GUI.AddElement( CreateButton( nil, nil, MyFont, 'На весь экран', 1, 660, 148, 20, @MyButtonEvent2Click ) );
 
GUI.AddElement( CreateButton( nil, nil, MyFont, 'Выход', 1, 690, 148, 20, @MyButtonEvent3Click ) );
id1:=GUI.AddElement( CreateProgressBar( nil, nil, Font, 1, 30, 148, 10 ) );
 
 
 
// Инициализируем движок игры
GameEngine := TGameEngine.Create;
GameEngine.InvertSort := TRUE;
i := GameEngine.AddNew;
GameEngine.PlayerID := i;
GameEngine.List[ i ] := TPlayer.Create;
GameEngine.List[ i ].ID := i;
 
End;
 
procedure Draw;
Begin
SSprite_Draw( tex_BackGround, 150, 0, 1920, 1080 );
SSprite_Draw( tex_Left, 0, 0, 150, 768 );
 
// Рисуем инфу
{Text_Draw( Font, 1, 40, PChar( 'Жизнь: ' + Chr( 13 ) +
           U_IntToStr( ( GameEngine.List[ 0 ] as TPlayer ).Life ) + '%' ),
           1, 1, 255, $00FF00 );
Text_Draw( Font, 1, 110, PChar( 'Опыт: ' + Chr( 13 ) +
           U_IntToStr( ( GameEngine.List[ 0 ] as TPlayer ).Score ) +PChar( '/' +
           U_IntToStr( ( GameEngine.List[ 0 ] as TPlayer ).ul ) )),
           1, 1, 255, $FF0000 );
Text_Draw( Font, 1, 180, PChar( 'Энергия: ' + Chr( 13 ) +
           U_IntToStr( ( GameEngine.List[ 0 ] as TPlayer ).inergy )+PChar( '/' +
           U_IntToStr( ( GameEngine.List[ 0 ] as TPlayer ).uing ) )),
           1, 1, 255, $555555 );
Text_Draw( Font, 1, 250, PChar( 'Уровень: ' + Chr( 13 ) +
           U_IntToStr( ( GameEngine.List[ 0 ] as TPlayer ).lvl ) ),
           1, 1, 255, $990099 );}
Text_Draw( Font, 1, 0, PChar( 'FPS: ' + U_IntToStr( OE_GetFPS ) ) );
 
if GameEngine.GameOver Then
Text_Draw( Font, 500, 400, PChar( 'Вы проиграли!' + Chr( 13 ) ),
           1, 1, 255, $0000FF );
GameEngine.Draw;
// Рисуем весь GUI
GUI.Draw;
End;
 
procedure GameTimer;
Begin
GameEngine.Process;
gui.Process;
( GUI.List[ id1 ] as CGUIProgressBar ).Max := 400;
( GUI.List[ id1 ] as CGUIProgressBar ).Progress := OE_GetFPS;
 
if ( GUI.List[ id1 ] as CGUIProgressBar ).Progress > 290 then
( GUI.List[ id1 ] as CGUIProgressBar ).Color := 500;
if (( GUI.List[ id1 ] as CGUIProgressBar ).Progress < 290) and (( GUI.List[ id1 ] as CGUIProgressBar ).Progress > 240) then
( GUI.List[ id1 ] as CGUIProgressBar ).Color := $00FFFF;
if (( GUI.List[ id1 ] as CGUIProgressBar ).Progress < 240) and (( GUI.List[ id1 ] as CGUIProgressBar ).Progress > 0) then
( GUI.List[ id1 ] as CGUIProgressBar ).Color := $00FF00;
 
if Key_Down( K_ESCAPE ) Then OE_Quit;
// соберем данные для отправки
 { Buf[0]:=ShapeCBox.ItemIndex;
  Buf[1]:=ColorCBox.ItemIndex;
  Buf[2]:=StrToInt(Value1Edit.Text);
  Buf[3]:=StrToInt(Value2Edit.Text);}
 
End;
procedure GameTimer1;
Begin
if (GameEngine.List[ GameEngine.PlayerID ] as TPlayer ).inergy<(GameEngine.List[ GameEngine.PlayerID ] as TPlayer ).uing then (GameEngine.List[ GameEngine.PlayerID ] as TPlayer ).inergy:=(GameEngine.List[ GameEngine.PlayerID ] as TPlayer ).inergy+1;
End;
 
 
 
{ TServerSocket1 }
 
 
 
begin
LoadOMEGA( 'bin DX8\rus\OMEGA.dll' );
 
 
 
 Randomize;
 Process := Timer_Create( @GameTimer, 16 );
 Proc := Timer_Create( @GameTimer1, 560 );
 
//Установка параметров экрана
OE_SetScreenOptions( 1024, 768, 32, 0, false, false );
 
//Регистрация процедур
OE_RegProcedure( SYS_INIT, @Init );
OE_RegProcedure( SYS_DRAW, @Draw );
 
// Выключаем очистку буфера цвета для оптимизации
OE_Disable( FLAG_CLEAR_COLOR_BUFFER );
// Выключаем отрезку невидных обьектов, потому как все в пределах одного экрана
OE_Disable( FLAG_CROP_UNVISIBLE_OBJ );
 
OE_SetAdvancedOptions( TRUE ); //Включить движковый лог
OE_Init; // Запуск движка
end.
Ответить с цитированием
  #11  
Старый 08.04.2011, 14:26
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

простой пример, очень грубый, ресурсы не освобождает:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  ScktComp,
  Windows, Messages;
 
var
  AMsg: TMsg;
 
type
<font color="Red">  TServerSocketEvent = class
    procedure OnClientRead(Sender: TObject; Socket: TCustomWinSocket);
  end;
</font>
var
<font color="#ff0000">  FServerSocket: TServerSocket;
  FServerSocketEvent: TServerSocketEvent;
</font>
<font color="#ff0000">procedure TServerSocketEvent.OnClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Writeln(Socket.ReceiveText);
end;
</font>
begin
<font color="#ff0000">  FServerSocket:=TServerSocket.Create(nil);
  FServerSocketEvent:=TServerSocketEvent.Create;
  FServerSocket.OnClientRead:=FServerSocketEvent.OnClientRead;
  FServerSocket.Port:=80;
  FServerSocket.Open;
</font>  while GetMessage(AMsg, 0, 0, 0) do
  begin
    TranslateMessage(AMsg);
    DispatchMessage(AMsg);
  end;
end.
-запускаем и в браузере вводим http://localhost/
-enjoy
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #12  
Старый 08.04.2011, 15:03
KOTIUM KOTIUM вне форума
Прохожий
 
Регистрация: 07.04.2011
Сообщения: 8
Репутация: 10
По умолчанию

Гениально!!! TranslateMessage(AMsg);
DispatchMessage(AMsg);
Эти строки всё делают всё заработало БОЛЬШАЯ СПАСИБОЧКА!!!
Ответить с цитированием
  #13  
Старый 08.04.2011, 15:56
KOTIUM KOTIUM вне форума
Прохожий
 
Регистрация: 07.04.2011
Сообщения: 8
Репутация: 10
По умолчанию

Извиняюсь но когда делаю так
Код:
1
2
3
4
5
while GetMessage(AMsg, 0, 0, 0) do
  begin
    TranslateMessage(AMsg);
    DispatchMessage(AMsg);
  end;

То всё остальное не запускается, а когда так
Код:
1
2
3
4
5
if GetMessage(AMsg, 0, 0, 0) then
  begin
    TranslateMessage(AMsg);
    DispatchMessage(AMsg);
  end;

То виснет чо делать???

даже так виснит
Код:
1
2
3
4
PeekMessage(AMsg, 0, 0, 0, PM_REMOVE);
 
TranslateMessage(AMsg);
DispatchMessage(AMsg);

Я с горя даже на WinSock хочу перейти только не знаю как на нем писать мне бы подробный туториальчик с примерами...

Последний раз редактировалось KOTIUM, 09.04.2011 в 00:28.
Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:48.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025