Показать сообщение отдельно
  #2  
Старый 11.12.2013, 17:30
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от 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.
Ответить с цитированием