Я уже начал думать в этом направлении.
Пока остановился на таком варианте (пример)
Здесь первый байт - длина последовательности последующих байтов.
Т.к. данные уже и так в памяти - зачем переписывать их в другой блок? Логичнее обращаться к уже имеющемуся блоку
Например так:
Видимое ограничение при такой структуре данных - длина данных не более 127 байт (чтобы старший бит байта длины не был 1).
Либо изменить структуру - сначала длина в формате Long (или Integer) потом данные побайтно. Тогда сдвиг начала данных не 1, а на 4.
Всплыл вопрос.
В связи с преобразованием при сравнении - как "красиво" сделать сравнение байта?
If PeekB(*DataBuffer+pos2)=$FF - не срабатывает
If PeekB(*DataBuffer+pos2)=255 - не срабатывает
If PeekB(*DataBuffer+pos2)=-1 - срабатывает но неэстэтично выглядит т.к. сразу непонятно что за байт ищется
И влом пересчитывать $FB, $FD и т.п. для разных случаев вручную.