|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
TServerSocket & TClientSocket. Передача безразмерного массива по сети
Проблема в следующем. Имеется тип данных:
Код:
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); ... |
#2
|
|||
|
|||
замени string[255] на char[255]
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |