Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Delphi: Общие вопросы > Inser in to TStream, how ?


Автор: Jiro 05.09.15, 03:50
Допустим имеется Mem: TMemoryStream; и buf : array of Byte;

Как вставить buf в Mem с определенной позиции, не перезапись а именно вставка?

Автор: leo 05.09.15, 05:18
1) Увеличить размер стрима и переписать его хвост с заданной позиции со смещением на размер buf
2) Записать buf c заданной позиции
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    OldSize:=Mem.Size;
    Mem.Size:=OldSize + Length(buf);
    Mem.Position:=APos + Length(buf);
    Mem.WriteBuffer(pAnsiChar(Mem.Memory)[APos], OldSize-APos);
    Mem.Position:=APos;
    Mem.WriteBuffer(buf[0], Length(Buf));

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)