Допилил функции побайтной записи/чтения в свою библиотеку.
Документацию править пока влом, так что опишу здесь.
Для работы нужны функции:
function file_open(path):integer;
Открыть файл path
Возвращает: 1-успешно, 0- ошибка.
path в виде root/folder/file.ext
function open_outstream:integer
Открыть поток записи.
Обязательно вызывать перед началом побайтной записи данных.
Возвращает: 1-успешно, 0- ошибка.
function open_instream:integer
Открыть поток чтения.
Обязательно вызывать перед началом побайтного чтения данных.
Возвращает: 1-успешно, 0- ошибка.
function file_write_byte(data:integer):integer;
Запись байта data в файл.
Возвращает: 1-успешно, 0- ошибка.
function file_read_byte:integer;
Чтение байта из файла.
Возвращает: прочитанный байт или 0, если ошибка.
function stream_sz:integer;
Возвращает: прочитанный байт или 0, если ошибка.
Вызывать только после open_instream.
function file_close:integer;
Запись буфера вывода и закрытие файла. Без этого данные не будут записаны в файл.
Возвращает: 1-успешно, 0- ошибка.
В программе должна быть процедура вида
procedure onerror(src,msg:string);
begin
end;
В нее ссыпаются все ошибки библиотеки.
src - краткий индекс функции, выдавшей ошибку,
msg - сообщение системы (Excaption.toString).
Другие функции соответствуют версии 3.1 (за исключением функций
*_s, их убрал).
Тестировал на таком куске кода:
program jsr75ex4test;
uses jsr75ex4;
const
path = 'root1/test.dat';
var
i:integer;
r:integer;
y:integer;
sz:integer;
cmOk:command;
procedure onerror(src,msg:string);
begin
showform;
cmOK:=CreateCommand('OK',CM_OK,1);
ShowAlert(src,msg, LoadImage('/icon.png'),ALERT_ERROR);
delay(20000);
Showcanvas;
end;
begin
r:=jsr75ex4.file_open(path);
r:=open_outstream;
for i:= 1 to 20 do
r:=file_write_byte(i);
r:=file_close;
DrawText('Done',0,0);
y:=10;
repaint;
r:=file_open(path);
r:=open_instream;
sz:=stream_sz;
DrawText(''+sz,0,y);
repaint;
y:=y+10;
for i:=1 to sz do
begin
r:=file_read_byte;
DrawText(''+r,0,y);
repaint;
y:=y+10;
end;
r:=file_close;
DrawText('closed',0,y);
repaint;
delay(10000);
end.