Показать сообщение отдельно
Старый 01.07.2015, 11:48   #26
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Просто копируете данные в нужное место, например у нас есть массив
pck: array[1024] of byte;

Чтобы в него в нужное место поместить 4 байтное Int значение делаете:

Move(откуда, куда, количество байт);

Move(intVal, pck[100], SizeOf(intVal));

Эта конструкция скопирует значение переменной intVal в массив начиная с 100 позиции. Для других типов данных кроме текста, аналогично.


Можете также воспользоваться готовыми функциями из исходников пакетхака:

function ReadC(const pck: string; var index:integer):byte; stdcall;
function ReadH(const pck: string; var index:integer):word; stdcall;
function ReadD(const pck: string; var index:integer):integer; stdcall;
function ReadQ(const pck: string; var index:integer):int64; stdcall;
function ReadF(const pck: string; var index:integer):double; stdcall;
function ReadS(const pck: string; var index:integer):string; stdcall;
procedure WriteC(var pck: string; const v:byte; ind:integer=-1); stdcall;
procedure WriteH(var pck: string; const v:word; ind:integer=-1); stdcall;
procedure WriteD(var pck: string; const v:integer; ind:integer=-1); stdcall;
procedure WriteQ(var pck: string; const v: Int64; ind:integer=-1); stdcall;
procedure WriteF(var pck: string; const v:double; ind:integer=-1); stdcall;
procedure WriteS(var pck: string; const v: WideString; ind:integer=-1); stdcall;

Но они заточены на то что пакет хранится в переменной типа String.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием