OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 15:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: Среда, 14 Октябрь, 2009 12:51 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Вот какой возник вопрос. По мере "продвижения" по ВВ сформулировал задачку для студиозов: создать в ВВ новое окно, записать туда два числа и написать отдельный модуль, который будет открывать текст с числами, вытаскивает их отттуда и суммирует.
Почитали студиозы справку - чет сложновато.
1. Если окно не открыто, то как его открыть из проги? Считаем, что оно лежит в том же месте, что и основной модуль и имеет имя name. В примерах ввода текста написано только об открытом окне, которое самое верхнее (или я просто не там смотрел - пункт 5.3 в главе 5). И имеет фокус.
2. Обязательно ли в открытом окне выделять кусок текста? А если не выделять, и читать весь текст?
3. Читаю я либо ридером из модели, либо сканером из маппера.
Тип элемента я могу определить, а где сам прочитанный элемент?

Если все это написано, то ткните просто в место справки, где написано.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 14 Октябрь, 2009 13:27 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Вопросы не совсем понятны...
Валерий Лаптев писал(а):
По мере "продвижения" по ВВ сформулировал задачку для студиозов: создать в ВВ новое окно, записать туда два числа и написать отдельный модуль, который будет открывать текст с числами, вытаскивает их отттуда и суммирует.
Создаются тексты.
Код:
text := TextModels.dir.New()
В них записываются числа, например, форматтером.

Текст можно показать в окне документа (в котором будет текстовое отображение).
Код:
Views.Open(TextViews.dir.New(text))

Отдельному модулю можно передать непосредственно сформированный text. Или он может получить text, который показан в сфокусированном окне:
Код:
text := TextViews.FocusText()


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 14 Октябрь, 2009 13:28 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
создать в ВВ новое окно, записать туда два числа

t := TextModels.dir.New
v := TextViews....(t)
Views.OpenView(v).

еще: formatter .ConnectTo( t ).

Цитата:
и написать отдельный модуль, который будет открывать текст с числами, вытаскивает их отттуда и суммирует.
Почитали студиозы справку - чет сложновато.
1. Если окно не открыто, то как его открыть из проги? Считаем, что оно лежит в том же месте, что и основной модуль и имеет имя name.
Views.Old, OldView

Цитата:
2. Обязательно ли в открытом окне выделять кусок текста? А если не выделять, и читать весь текст?
Зачем выделять? Не понял.
scanner.ConnetTo и понеслась.

Цитата:
3. Читаю я либо ридером из модели, либо сканером из маппера.
Тип элемента я могу определить, а где сам прочитанный элемент?

Там же, в соотв. полях. Написано в документации, TextMappers:
Scanner = RECORD
opts-: SET;
rider-: TextModels.Reader;
type, start, lines, paras: INTEGER;
char: CHAR;
int, base: INTEGER;
lint: LONGINT;
real: REAL;
bool: BOOLEAN;
set: SET;
len: INTEGER;
string: String;
view: Views.View;
w, h: INTEGER;
(VAR s: Scanner) ConnectTo (text: TextModels.Model), NEW;
(VAR s: Scanner) Pos (): INTEGER, NEW;
(VAR s: Scanner) Scan, NEW;
(VAR s: Scanner) SetOpts (opts: SET), NEW;
(VAR s: Scanner) SetPos (pos: INTEGER), NEW;
(VAR s: Scanner) Skip (OUT ch: CHAR), NEW
END;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 14 Октябрь, 2009 13:30 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Только что набросал пример (на основе ObxOpen0), который читает строчки из документа и выводит прочитанное в журнал.

Код:
MODULE TestRead;

   IMPORT Log := StdLog, Files, Converters, Views, TextModels, TextMappers, TextViews;
   
   PROCEDURE Do*;
      VAR loc: Files.Locator; name: Files.Name; v: Views.View; t: TextModels.Model; r: TextMappers.Scanner;
   BEGIN
      loc := Files.dir.This('Test\Rsrc'); name := "Name";
      v := Views.OldView(loc, name);
      IF (v # NIL) & (v IS TextViews.View) THEN      (* надо убедиться, что это текстовая картинка *)
         t := v(TextViews.View).ThisModel();   (* получение модели представления текста  *)
         r.ConnectTo(t);
         r.SetPos(0);
         WHILE ~r.rider.eot DO
            r.Scan;
            Log.String(r.string); Log.Ln;
         END
      END
   END Do;
   
END TestRead.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 14 Октябрь, 2009 14:11 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Ага! Иван почти все мне сообщил.
Остальные не совсем поняли.
Текст создается с помощью меню File|new и сохраняется с помощью меню.
А уж мой модуль его открывает и понеслась.
Получается, что открываем мы файлы стандартным способом. Только потом в зависимости от вида файла либо некий конвертер запускается, либо (убедившись, что это текст ВВ, начинаем непосредственно разбор.
Ага! И в сканере поля обнаружил. Чего-то не видал раньше - видимо с недосыпу.
Большой катта рахмат всем!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB