Инструменты пользователя

Инструменты сайта


cp:obx-simple-file-write

Это старая версия документа!


Запись действительного числа в файл

Блэкбокс предоставляет высокоуровневые абстракции для работы с текстами, однако иногда необходима возможность прямой манипуляции с текстовыми файлами в формате ASCII. Полный пример реализации минимально необходимых функций для работы с ASCII вы найдете в модуле Obx/Mod/Ascii.odc.

Ниже представлен пример записи действительных чисел в файл в самом низкоуровневом режиме работы с байтами файлов через модуль Files.

MODULE DemoFiles;

IMPORT Files, Strings, Math;

PROCEDURE WriteReal (wr: Files.Writer; r: REAL);
VAR str: ARRAY 64 OF CHAR; i: INTEGER;
BEGIN
	Strings.RealToString(r, str);
	FOR i := 0 TO LEN(str$) - 1 DO
		wr.WriteByte(SHORT(SHORT(ORD(str[i]))))
	END
END WriteReal;

PROCEDURE WriteLn (wr: Files.Writer);
BEGIN 
	wr.WriteByte(0DH); wr.WriteByte(0AH)
END WriteLn;

PROCEDURE Do*;
VAR f: Files.File; wr: Files.Writer; res: INTEGER;
BEGIN
	f := Files.dir.New(Files.dir.This(""), Files.dontAsk);
	wr := f.NewWriter(NIL);
	WriteReal(wr, Math.Pi());
	WriteLn(wr);
	WriteReal(wr, Math.Pi() / 2);
	WriteLn(wr);
	f.Register("demo", "txt", Files.dontAsk, res);
	f.Close
END Do;

END DemoFiles.
cp/obx-simple-file-write.1577979173.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)