Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;
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);
//здесь вылетает с AV
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 и т.д. Тогда все будет ОК;






Наверх

Титульная страница Поиск, карта сайта Написать письмо