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