![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Проблема в следующем. Имеется тип данных:
Код:
TData = packed record
CMD: Word;
Count: Word;
Param:String[255];
fString: array of string[255];
end;
PData = ^TData;Клиент оптравляет: Код:
var buf: pdata; ... new(buf); buf^.CMD:=C; buf^.Count:=Len; buf^.Param:=//.. строка.. for i := 1 to Len do begin Setlength(buf^.fMessages,i); buf^.fString[i-1]:= // какое-либо значение end; s:= SizeOf(buf^); ClientSocket1.Socket.SendBuf(buf^,s); ... Сервер принимает: Код:
var
fData: PData;
fRSData : TWinSocketStream;
MS: TMemoryStream;
...
while (not Terminated) and (ClientSocket.Connected) do
begin
SizeBuf:=ClientSocket.ReceiveLength;
if SizeBuf <> 0 then
begin
i:=0;
MS.Clear;
MS.Seek(0, soFromBeginning);
fillchar(bufin,sizeof(buf),0);
repeat
i:=fRSData.Read(bufIn, 16383);
MS.Write(bufIn, i);
SizeBuf:=ClientSocket.ReceiveLength;
until SizeBuf = 0;
MS.Seek(0, soFromBeginning);
MS.Read(fData^, MS.Size);
... |