forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_bytes - Динамический массив байт (http://forum.boolean.name/showthread.php?t=6376)

odd 16.09.2008 06:23

Lib_bytes - Динамический массив байт
 
Вложений: 2
Ещё один пример динамического массива.
Пока функции такие:

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

Пожалуйста, потестируйте и скажите что ещё добавить кому не хватило какой-нибудь функции. У меня в планах ещё и отправлять и получать такие байтовые массивы по сети в качестве пакетов, что откроет просто невероятные возможности при сетевом взаимодействии. Пока же данную библиотеку можно применять, например: при обработке картинок; более экономичной по использованию памяти работе со строками; организации своих массивов каких-либо структур и т.п.

Skythrone 23.09.2008 10:56

Ответ: Lib_bytes - Динамический массив байт
 
Да, удобная штука, спасибо.

А есть ли возможность использовать одновременно два и более таких массивов?

odd 24.09.2008 06:03

Ответ: Lib_bytes - Динамический массив байт
 
Цитата:

Сообщение от Skythrone (Сообщение 86690)
Да, удобная штука, спасибо.

А есть ли возможность использовать одновременно два и более таких массивов?

Пока нет. Но что тебе мешает сделать один большой массив и часть его использовать для хранения одной информации, часть для другой?

PS: До меня только щас дошло. С помощью этой библиотеки ещё можно делать эмуляторы разных устройств, например, Spectrum. Просто хранить прошивку устройства в массиве и обработчик команд процессора написать...

FighteR 14.12.2010 21:02

Ответ: Lib_bytes - Динамический массив байт
 
Цитата:

Сообщение от odd (Сообщение 86757)
Пока нет. Но что тебе мешает сделать один большой массив и часть его использовать для хранения одной информации, часть для другой?

PS: До меня только щас дошло. С помощью этой библиотеки ещё можно делать эмуляторы разных устройств, например, Spectrum. Просто хранить прошивку устройства в массиве и обработчик команд процессора написать...

эт че можно эмуль на паскале )) круто!!! а можно изменить что бы хранило не по 1му байту а по несоклько в одной ячейке?

odd 16.12.2010 19:01

Ответ: Lib_bytes - Динамический массив байт
 
Нет, увы. Хранить в одном байте несколько байт пока никому не удавалось.

ViNT 16.12.2010 19:47

Ответ: Lib_bytes - Динамический массив байт
 
Цитата:

Сообщение от odd (Сообщение 172093)
Нет, увы. Хранить в одном байте несколько байт пока никому не удавалось.

Видимо, имеется в виду возможность хранения нескольких байт в ячейке соответствующего размера (т.е., массив int'ов, с ячейками по 4 байта, например).

odd 17.12.2010 16:08

Ответ: Lib_bytes - Динамический массив байт
 
Я это заранее предусмотрел и в массиве байт можно хранить числа как int так и short, ну и byte конечно. Только при чтении этих чисел нужно на соответствующее количество байт нужно сдвигать и указатель.
А для извлечения 4 байт по отдельности нужно ещё и использовать библиотеку Lib_bits для битовых операций.

nil0q 18.12.2010 20:45

Ответ: Lib_bytes - Динамический массив байт
 
А можно создать на основе массива поток ввода-вывода и подключить его к плееру???
Если возможно, то это будет супер :super:
Можно будет программно вписать в массив звуковые данные (wave) и проиграть. И полузится синтезатор звука :-)
А если плееру задать команду "capture://audio", то можно и писать звук в массив :cool:

odd 21.12.2010 00:34

Ответ: Lib_bytes - Динамический массив байт
 
Гм, интересная идея.

nil0q 07.03.2011 19:56

Ответ: Lib_bytes - Динамический массив байт
 
Вот и статейка
http://www.mobilab.ru/articles/84/


Часовой пояс GMT +4, время: 23:22.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot