Иллюстрированный самоучитель по Tirbo Pascal



Использование коллекций - часть 3


p: PString; 

Color: Byte; 

begin

Color := GetColor(1); 

for n := 0 to pred(Size.Y) do 

begin

k := Delta.Y+n; 

MoveChar(B,' ',Color,Size.X); 

if k < pred(PS.Count) then 

begin

p := PS.At(k);

MoveStr(B,Copy(р,Delta.X+1,Size.X),Color) 

end;

WriteLine(0,N,Size.X,1,B) 

end 

end; {TInterior.Draw}

Элементы коллекции нумеруются, начиная с номера 0. Длина коллекции (общее количество ее элементов) хранится в поле PS. Count. Функция PS.At(k) возвращает указатель на k-й элемент коллекции.

Созданная коллекция размещается в динамической памяти, поэтому после использования ее следует удалить из кучи. Для этого перекроем стандартный деструктор Done:

type

TInterior = object (TScroller)

.......

Destructor Done; Virtual; 

end;

Destructor TInterior.Done; 

begin

Dispose(PS, Done); {Удаляем коллекцию} 

Inherited Done {Выполняем стандартный деструктор} 

end;

Еще раз хочу обратить Ваше внимание на особенность программирования в среде Turbo Vision: Вы определяете метод, но не указываете, когда он должен быть выполнен. Правильно сконструированный объект уже «знает», когда он ему понадобится! Так было в случае правила Draw, так же обстоит дело и с деструктором Done: обработчик событий окна TWindow вызовет этот метод, как только он получит событие cmCancel (закрыть окно). Чтобы убедиться в этом, установите контрольную точку в строке

Dispose(PS, Done); {Удаляем коллекцию}

и запустите программу. Останов в контрольной точке произойдет только в том случае, если Вы загрузите окно с текстом и попытаетесь выйти из программы. Если из программы выйти сразу после ее запуска, контрольная точка не сработает.

Вид экрана с окном просмотра отсортированного файла показан на рис. 15.9.

Puc.15.9. Окно с отсортированным тестом программы




Содержание  Назад  Вперед