Показать сообщение отдельно
Старый 29.06.2006, 09:54     # 1
Chaser
Junior Member
 
Регистрация: 20.10.2005
Адрес: Москва
Сообщения: 70

Chaser Реально крут(а)Chaser Реально крут(а)Chaser Реально крут(а)Chaser Реально крут(а)
Проблема с AThread.Connection.Socket.Recv(...)

Hi All!

Проблема: Если я ставлю "AThread.Connection.Socket.Recv(...)" в "IdTCPServer1Execute(AThread: TIdPeerThread)",
то данные принимаются как надо:

Пример:

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
Rcvd: integer;
begin
Rcvd:=AThread.Connection.Socket.Recv(
PChar(@FDescriptor)[FDSize],
Sizeof(FDescriptor)-FDSize);
...
end;

Если же в IdTCPServer1Execute(AThread: TIdPeerThread) я делаю процедуру и принимаю данные уже в ней, то приложение виснет на строке "Rcvd:=AThread.Connection.Socket.Recv(...)":

Пример:

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
ch: string;
begin
ch:=Athread.Connection.ReadLn;
//
if ch='get_data'
then get_data(AThread);
...
end;

procedure get_data(AThread: TIdPeerThread);
var
Rcvd: integer;
begin
Rcvd:=AThread.Connection.Socket.Recv(
PChar(@FDescriptor)[FDSize],
Sizeof(FDescriptor)-FDSize);
...
end;

Подскажите, в чем может быть проблема и как ее решить?
Chaser вне форума