Цитата:
Сообщение от Shaft
Здравствуйте! Что то не получается отправить динамический массив следующим способом:
type
TPacket = packed record
head: array [0 .. 5] of Char;
pack: array of Byte;
end;
готовлю к отправке и заполняю массив
var
Packet: TPacket;
SetLength(Packet.pack, 12);
Packet.head[0]:=XX;
Packet.head[1]:=XX;
Packet.pack[0]:=XX;
Packet.pack[1]:=XX;
Отправляю
idpsrvr1.SendBuffer(IP,Port,Packet,Sizeof(Packet)) ;
но почему то не получается.
P.S. до этого работал со статическими массивами по этой схеме и все получалось.
Подскажите пожалуйста как отправить динамический массив!
|
Нет. С динамическим массивом таким образом не отправить. Здесь pack это просто указатель на массив байт, т.е. просто адрес в памяти где этот массив хранится. При получении на другом компьютере (или даже в другом процессе на этом же компьютере) по этому адресу естественно не будет никакого массива. Возможно даже вообще эта память не будет зарезервирована - тогда схлопочем Access Violation.