Блэкбокс предоставляет высокоуровневые абстракции для работы с текстами, однако иногда необходима возможность прямой манипуляции с текстовыми файлами в формате 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.