![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TServerSocket [D6, Win2k, WinXP]
SeF © (2003-01-08 23:51:00)Здраствуйте многоуважаемые!!! Спрошедшими и наступающисми Вас праздниками!!!!
Пожалуйста подскажите.
Есть проседура:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;//это место под вопросом
Socket: TCustomWinSocket);
var
ud:TUserData;
begin
ud:=TUserData.Create;
ud.Socket:=socket;
ud.stream:=tmemorystream.Create;
ud.Name:="connecting";
ud.ConnectedAt:=now;
socket.Data:=ud;
end;
есть вторая:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;//здесь вылетает с AV
Socket: TCustomWinSocket);
var
data:Tmydata;
ud:tuserdata;
buf:pointer;
i:integer;
begin
i:=socket.ReceiveLength;
getmem(buf,i+1);
socket.ReceiveBuf(buf, i);
ud:=tuserdata(socket.Data);
ud.stream.Seek(0,soFromEnd);
ud.stream.Write(buf, i);
.....
Verg (2003-01-09 17:52:00) [1]Да и здесь тоже
socket.ReceiveBuf(buf ^, i);
SeF (2003-01-09 17:51:00) [2]
getmem(buf,i+1);//
socket.ReceiveBuf(buf, i);
ud:=tuserdata(socket.Data);Udвсе равно nil
ud.stream.Seek(0,soFromEnd);
ud.stream.Write(buf, i);
Verg (2003-01-09 17:49:00) [3]
> ud.stream.Seek(0,soFromEnd); //здесь вылетает с AV
> ud.stream.Write(buf, i);
Вылетает, скорее всего, строчкой ниже. Т.к. там надо
ud.stream.Write(buf ^, i);
igorkuz (2003-01-09 17:13:00) [4]Socket.Data это pointer вот и создавай PUserData = ^TUserData и т.д. Тогда все будет ОК;