Shift: TShiftState; X, Y: Integer); // Отображение позиции курсора в панели состояния begin

StatusBarl.Panels.Items[1].Text:= IntToStr(Memol.SelStart+1);
end;

procedure TForml.AOpenExecute(Sender: TObject); // Открытие файла и загрузка текста в Memol begin

if(OpenDialogl.Execute) then Memol.Lines.LoadFromFile(OpenDialogl.FileName);
end;
procedure TForml.ASaveExecute(Sender: TObject);

// Сохранение текста в файле

begin

if (SaveDialogl.Execute) then Memol.Lines.SaveToFile(SaveDialogl.FileName);
end;
procedure TForml.ApplicationEventslHinMSender: TObject);

// Отображение подсказок в панели состояния

begin

StatusBarl.Panels[2].Text := Application.Hint;
end;
procedure TForml.AExitExecute(Sender: TObject);

// Окончание работы

begin

Closer-end;

end.

Начнем рассмотрение кода с процедуры ACalcExecute, осуществляющей трансляцию и расчет выражений. В начале этой процедуры закрывается форма сообщений об ошибках, если ранее в данном сеансе работы эта форма была создана. Далее вызовом функции CreatePZ (см. разд. 3.4) создается польская запись. Если при трансляции заданных выражений обнаружены ошибки (CreatePZ вернула false), то создается методом Application.CreateForm новая форма сообщений об ошибках FErrors и ее список LBErrors типа TListBox заполняется строками из списка сообщений об ошибках ErrorList. Поскольку тип списка ErrorList - TStrings совпадает с типом свойства Items компонента TListBox, то перенос содержимого списка осуществляется всего одним оператором - методом Assign. После заполнения списка форма FErrors делается видимой, а процедура ACalcExecute завершает работу оператором exit.

Если создание польской записи прошло благополучно, далее вызывается функция Calculate (см. разд. 3.5), которая рассчитывает заданные выражения. Результат расчета последнего выражения заносится во вспомогательную локальную переменную Y. Если во время расчета произошли ошибки (функция Calculate вернула false), то пользователю методом Application.MessageBox отображается окно сообщения, показанное на рис. 3.9, и выполнение процедуры завершается.

Рис. 3.9

Сообщение об ошибке вычислений

3.7.2 Программная реализация CGraph

Если вычисления выполнились без ошибок, то далее заполняется таблица StringGridl формы представления результатов расчета FRes. Прежде всего задается число строк таблицы - свойство RowCount. Оно задается равным Length(Data-List) - MConst + 2. Здесь Length(DataList) - число элементов в массиве DataList, хранящем именованные константы и введенные пользователем переменные (см. разд. 3.2). Из общего числа элементов вычитается MConst - число предопределенных именованных констант. Таким образом вычисляется количество переменных, введенных пользователем. К этому числу добавляются две строки: одна для заголовка, а другая для значения последнего из рассчитанных выражений (см. рис. 3.2 6).

После того как задано число строк таблицы первая строка заполняется текстами заголовков: "Переменная" и "Значение". Затем во вторую строку заносится результат вычислений - значение переменной Y. При занесении значения используется функция FloatToStrF, которая задает формат отображения числа и точность отображения - 7. Далее в цикле заполняются остальные строки таблицы данными, хранящимися в массиве DataList. Счетчик цикла изменяется от MConst до последнего индекса массива - High(DataList), так что переносятся только данные о переменных, а данные об именованных константах игнорируются. После заполнения таблицы форма FRes делается видимой.


⇐ Предыдущая страница| |Следующая страница ⇒

Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Май
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс