Тема: CaveCraft
Показать сообщение отдельно
Старый 29.11.2012, 20:26   #10
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: CaveCraft

Допилил функции побайтной записи/чтения в свою библиотеку.
Документацию править пока влом, так что опишу здесь.
Для работы нужны функции:
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.
Вложения
Тип файла: zip Lib_jsr75ex4.zip (4.2 Кб, 750 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
DeaDCore (29.11.2012)