OberonCore
https://forum.oberoncore.ru/

Создание текста и сохранние в двух форматах
https://forum.oberoncore.ru/viewtopic.php?f=35&t=6707
Страница 1 из 1

Автор:  Иван Денисов [ Вторник, 05 Январь, 2021 17:47 ]
Заголовок сообщения:  Создание текста и сохранние в двух форматах

Пример для подписчика

Код:
MODULE DemoText;

   IMPORT TextModels, TextMappers, TextViews, Views, Files, Converters;
   
   PROCEDURE Start*();
   VAR
      t: TextModels.Model;
      f: TextMappers.Formatter;
      conv: Converters.Converter;
      loc: Files.Locator;
      name: Files.Name;
      res: INTEGER;
   BEGIN
      t := TextModels.dir.New();
      f.ConnectTo(t);
      f.WriteString("число Пи"); f.WriteLn;
      f.WriteReal(3.14); f.WriteLn;
      
      (* cохранить в виде оберон-документа *)
      Views.RegisterView(
         TextViews.dir.New(t),  (* создаем отображение из модели текста *)
         Files.dir.This(""),  (* путь *)
         "test.odc"  (* имя файла *)
      );
      
      (* cохранить в виде RTF документа см. модуль Config  *)
      conv := Converters.list;
      WHILE (conv # NIL) & (conv.exp # "HostTextConv.ExportRichText") DO
         conv := conv.next
      END;
      
      loc := Files.dir.This("");
      name := "test.rtf";
      Views.Register(TextViews.dir.New(t), Files.dontAsk, loc, name, conv, res);
      
   END Start;   

END DemoText.

Автор:  adimetrius [ Вторник, 05 Январь, 2021 18:31 ]
Заголовок сообщения:  Re: Создание текста и сохранние в двух форматах

А можно и напрямую, минуя Views.Register, если уж точно известно, какой конвертер (выходной формат) нужен:

Код:
   IMPORT HostTextConv;

   PROCEDURE ExportFocusPlain* (IN location, name: ARRAY OF CHAR);
   (** Экспортировать фокусный текст в формат PlainText в файл по адресу location/name *)
      VAR file: Files.File; _: INTEGER; v: TextViews.View;
   BEGIN
      v := TextViews.Focus();
      IF v # NIL THEN
         file := Files.dir.New(Files.dir.This(location), Files.dontAsk);
         HostTextConv.ExportText(v, file);
         file.Register(name$, '', Files.dontAsk, _)
      END
   END ExportFocusPlain;

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/