Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Turbo Vision!!!


Автор: Fighter 14.4.2005, 02:25
Я делаю программу на Turbo Vision. Что за программа - не важно. Допустим, что для того чтобы создать новый документ у меня в программе будут строки

...
var
R: TRect;
begin
R.Assign(0,0, 80, 23);
Desktop^.Insert(New(PMyDoc, Init(R, '', 0)))
end;
...

В данном случае PMyDoc - это мой собственный класс окна с документом. Предположим что моя программа работает с массивом строк (заметьте, это не текстовый редактор). Этот массив строк программа должна выводить в окно и т.д. Программа многодокументная. Вопрос следующий - где мне следует описать этот массив строк, в классе приложения или в классе окна?

Хотя мне почему то кажется что в классе окна. Прав ли я?

Автор: Fedor 14.4.2005, 07:34
Все зависит от того, где ты используешь этот массив строк. Если он юзается постоянно втечение работы программы для всех окон один и тотже, то тогда нужно в классе приложения. Если для каждого окна соотв вот такой массив, то кончено в классе окна. Если один такой массив соответствует конкретному документу, то классу документа.

Автор: Romtek 14.4.2005, 22:29
PMyDoc потомок какого объекта?

Автор: Fighter 15.4.2005, 04:31
Цитата(Romtek @ 14.4.2005, 22:29)
PMyDoc потомок какого объекта?


PMyDoc = ^TMyDoc;
TMyDoc = object(TWindow)
...

end;


Цитата(Fedor @ 14.4.2005, 07:34)
Если один такой массив соответствует конкретному документу, то классу документа.


У меня, кстати, если точнее, то не массив а коллекция. Да, кстати, у меня прямо в самой коллекции есть функция записи в файл всей коллекции (функция SaveToFile). Даже если я и объявлю её в классе окна, то как мне через приложение мне обратиться к окну чтобы я мог вызвать эту функцию?

Автор: Romtek 15.4.2005, 09:28
Стоит всё-таки объявлять объявлять глобальной переменной. Хранение строк в коллекции не имеет оношения к тому, кто их отображает.

Вот, писал где-то год назад программу для Турбо Вижна: мини база данных (создание, редактирование, поиск) на основе коллекций. Смотри как я реализовал её:
Добавлено @ 09:31
Для записи различных типов документов перекрывай в потомке коллекции функцию SaveToFile.

Автор: Fighter 16.4.2005, 03:21
Цитата(Romtek @ 15.4.2005, 09:28)
Стоит всё-таки объявлять объявлять глобальной переменной. Хранение строк в коллекции не имеет оношения к тому, кто их отображает.

Это чуть-чуть не совсем так. В коллекции у меня хранятся не строки а объекты пользовательского типа (записи, одна булевая переменная и две другие стринговые). Во-время работы комп должен просчитывать что выводить в окно.
У меня приложение многодокументное и если хранить все в глобальной переменной, то при каждом создании окна надо создавать объект. А я думал что он будет создаваться автоматически при создании окна. Так же легче и тем более определять, к кому относится данный объект совсем не нужно.

Автор: Romtek 18.4.2005, 16:17
Ну... зависит от реализации. Это делай уже как тебе удобнее.
"Автоматически" - тогда надо описывать в конструкторе (инициализация объекта).

Я не понял, ты получил ответ на вопрос или нет?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)