Проблема в следующем. Имеется тип данных:
Код:
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);
...
После этого в переменной fData поля fData^.CMD, fData^.Count, fData^.Param содержат значения, отправленные с клиента (т.е. все верно передается), а вот строки (fString) не передаются, подскажите пожалуйста, как это сделать?