Ответ для подписчика с YouTube
Код:
MODULE ObxFileSave;
IMPORT Log := StdLog, Math,
Converters, Files, Views, TextModels, TextViews, TextMappers;
PROCEDURE Err (IN msg: ARRAY OF CHAR);
BEGIN
Log.String(msg); Log.Ln;
END Err;
PROCEDURE SaveUtf8 (t: TextViews.View; IN path, name: ARRAY OF CHAR);
VAR conv: Converters.Converter; loc: Files.Locator; fname: Files.Name;
res: INTEGER;
BEGIN
conv := Converters.list;
WHILE (conv # NIL) & (conv.exp # "HostTextConv.ExportUtf8") DO
conv := conv.next
END;
IF conv # NIL THEN
loc := Files.dir.This(path$);
IF loc.res = 0 THEN
fname := name$;
Views.Register(t, Views.dontAsk, loc, fname, conv, res);
IF res # 0 THEN
Err("ошибка при сохранении файла")
END
ELSE
Err("некорректный путь")
END
ELSE
Err("не найден конвертер для utf8")
END;
END SaveUtf8;
PROCEDURE DemoSave*;
VAR text: TextModels.Model; f: TextMappers.Formatter;
BEGIN
text := TextModels.dir.New();
f.ConnectTo(text);
f.WriteString("число Пи");
f.WriteLn;
f.WriteReal(Math.Pi());
f.WriteLn;
SaveUtf8(TextViews.dir.New(text), "test", "fname.txt")
END DemoSave;
END ObxFileSave.
ObxFileSave.DemoSave
Список доступных конвертеров вы можете найти в файле
Config и поменять строковую константу
HostTextConv.ExportUtf8 на ваше усмотрение.