Lib_bytes - Динамический массив байт
Ещё один пример динамического массива.
Пока функции такие:
integer Dim(len: integer) - Выделить в памяти массив байт длинной len
Функция возвращает 0 если операция прошла успешно или -1 если нет (например, не хватает оперативки).
Если len задать равной 0 происходит очистка памяти с вызовом Сборщика Мусора.
Clear - Очистка памяти от различных временных массивов.
Крайне рекомендуется вызывать после операций с картинками и длинными строками.
integer GetLen - Функция возвращает длину массива в байтах
PokeByte(pos: integer; b: integer) - Записать в ячейку под номером pos байт b
integer PeekByte(pos: integer) - Считать байт из ячейки памяти по адресу pos
PokeInt16(pos: integer; b: integer) - Записать 2 байта из числа b по смещению pos
integer PeekInt16(pos: integer) - Считать 2 байта по адресу pos
PokeInt32(pos: integer; b: integer) - Записать 4 байта из числа b по смещению pos
integer PeekInt32(pos: integer) - Считать 4 байта по адресу pos
integer PokeImage(pos: integer; im: image) - Записать в память картинку
Функция возвращает количество записанных байт (равна высота * ширина * 4).
image PeekImage(pos: integer; w: integer; h: integer) - Считать картинку по адресу pos
w и h - ширина и высота записанной картинки в пикселах.
integer PokeUTF(pos: integer; s: string) - Записать в память строку
Функция возвращает количество записанных байт.
string PeekUTF(pos: integer; len: integer) - Считать из памяти по адресу pos строку длиной len
Пожалуйста, потестируйте и скажите что ещё добавить кому не хватило какой-нибудь функции. У меня в планах ещё и отправлять и получать такие байтовые массивы по сети в качестве пакетов, что откроет просто невероятные возможности при сетевом взаимодействии. Пока же данную библиотеку можно применять, например: при обработке картинок; более экономичной по использованию памяти работе со строками; организации своих массивов каких-либо структур и т.п.
|