Отладка программ
Например, в следующей программе показан способ включения контрольного окна, создаваемого в этом объекте, в верхний правый угол экрана:
Uses Objects,Views,App, HeapView; var H: PHeapView;{Окно для MemAvail} W: PWindow; G: PGroup; R: TRect; P: TApplication;{Стандартная программа} begin P.Init; R.Assign(70.0.80.1);{Верхний правый угол} New(H, Init(R));{Создаем окно контроля} P.Insert(H);{Помещаем его на экран} ReadLn; {Пауза – показываем начальный размер кучи} R.Assign(10.5.70.20); W: = New(PWindow,Init(R,'',0)); {Создаем окно} R.Assign(5.3.55.12); G: = New(PGroup, Init(R)); W.Insert(G); {Вставляем в окно группу} DeskTop.Insert(W); {Выводим на экран} Н.Update; {Обновляем окно контроля} ReadLn; {Пауза – размер кучи перед освобождением} Dispose(W, Done); {Освобождаем окно и группу} НА.Update; {Обновляем окно контроля} ReadLn; {Пауза – размер после освобождения} Р.Done end.
Для получения текущего значения общего размера кучи используется вызов метода THeapView.Update в нужных местах программы. Вы можете автоматизировать обновление окна контроля, если включите вызов Update в перекрываемый метод TProgramIdle. В следующем варианте показан способ отображения MemAvail в фоновом режиме. Кроме того, в программе иллюстрируется возможное использование функции MessageBox.
{$Х+} {Используется расширенный синтаксис вызова функции MessageBox} Uses Objects,Views,App,HeapView,MsgBox; type MyApp = object (TApplication) Procedure Idle; Virtual; end; var H: PHeapView; Procedure MyApp.Idle; begin H^.Update end; var W: PWindow; G: PGroup; R: TRect; P: MyApp; begin P.Init; R.Assign(70.0.80.1); New(H,Init(R)); P.Insert(H); MessageBox(#3'Размер кучи до размещения',NIL,0); R.Assign(10.5.70.20); W: = New(PWindow, Init(R,'',0)); R.Assign(5.3.55.12); G: = New(PGroup, Init(R)); WA.lnsert(G); DeskTop.Insert(W); MessageBox(#3'Размер кучи после размещения', NIL,0); Dispose(W, Done); MessageBox(#3'Размер кучи после освобождения', NIL,0); Р.Done end.
Константа #3 вставляется в начало строки сообщения в том случае, когда требуется центрировать эту строку (расположить ее симметрично относительно границ окна сообщения).