Есть две похожие задачи.
Есть буфер данных. Выглядит так:
Код: Выделить всё
buf &STRING
buf_len LONG
code
buf &= new STRING(100)
buf_len = 100
Примерно так:
Код: Выделить всё
memcpy(address(buf)+100,address(add_buf),10) ! дописываем к буферу 10 байт
buf_len = 110
Код: Выделить всё
buf &= (address(buf) + 17) ! сдвигаем на 17 байт
buf_len -= 17
На данный момент, выхожу из ситуации так:
Код: Выделить всё
tmp_buf &STRING
...
code
...
tmp_buf &= new STRING(buf_len)
memcpy(address(tmp_buf),address(buf),buf_len) ! сохранили во временном буфере
dispose(buf)
buf &= new STRING(buf_len+10) ! создали по новой необходимой длины
memcpy(address(buf),address(tmp_buf),buf_len) ! вернули из временного буфера
memcpy(address(buf)+buf_len,address(add_buf),10) ! добавили новые данные
dispose(tmp_buf)
Решение это не нравится. IMHO кажется слишком долго это все будет. Тем более, что
буфер может быть до 10МБ (примерно) и выполнятся операции будут достаточно периодично.
Необходимо другое правильное

Спасибо.
ЗЫ
перешлите плиз письмо в ClaList, у меня проблемы с мылом