Программа Notebook
{---------------------} Procedure TNotebook.DOSCall; {Временный выход в ДОС} const txt ='Для возврата введите EXIT в ответ'+ ' на приглашение ДОС…'; begin DoneEvents; {Закрыть обработчик событий} DoneVideo; {Закрыть монитор экрана} DoneMemory; {Закрыть монитор памяти} SetMemTop(HeapPtr); {Освободить кучу} WriteLn(txt); {Сообщить о выходе} SwapVectors; {Установить стандартные векторы} {Передать управление командному процессору ДОС:} Exec(GetEnv('COMSPEC'),''); {Вернуться из ДОС:} SwapVectors; {Восстановить векторы} SetMemTop(HeapEnd); {Восстановить кучу} InitMemory; {Открыть монитор памяти} InitVideo; {Открыть монитор экрана} InitEvents; {Открыть обработчик событий} InitSysError; {Открыть обработчик ошибок} Redraw {Восстановить вид экрана} end; {DOSCall} {---------------} Constructor TInterior.Init; {Создает окно скрроллера} begin TScroller.Init(Bounds, Hs, VS); ReadFile; GrowMode: = gfGrowHiX+gfGrowHiY; SetLimit(LLine, РS.Count) end; {--------------} Destructor TInterior. Done; begin Dispose (PS, Done); Inherited Done end; {--------------} Procedure TInterior. ReadFile; {Читает содержимое файла данных в массив LINES} var k: Integer; s: String; Data: DataType; f: text; begin PS: = New(PStringGollection, Init (100, 10)); seek(DataFile,0); while not (EOF(DataFile) or LowMemory) do begin ReadfDataFile, data); with data do begin s: = Name; while Length (s) < LName do s: = s+ ' '; s: = s+Phone; while Length (s) < LName+LPhone do s: = s+ ' '; s: = s+Addr end; if so'' then PS .insert (NewStr (S)) end; Location: = 0; end; {ReadFile}