Процедуры конвертирования текстовых файлов: |
|
ConvertCoord() |
Преобразование файла координат coord.txt. |
ConvertOri() |
Преобразование файла координат orient. txt. |
ConvertNg() |
Преобразование файла закреплений Ng. txt. |
ConvertQ() |
Преобразование Q.txt. |
ConvertU() |
Преобразование U.txt. |
ConvertTop() |
Преобразование top.txt. |
ConvertCM() |
Преобразование cm.txt. |
ConvertExcentr() |
Преобразование Excentr.txt. |
ConvertStiff() |
Преобразование Del.txt. |
ConvertTemper() |
Преобразование Temper.txt |
ConvertMat() |
Преобразование matdata.txt. |
ConvertMD() |
Преобразование Md.txt. |
ConvertQpg() |
Преобразование Qpg.txt. |
ConvertDistance() |
Преобразование Distance.txt. |
ConvertNUP() |
Преобразование Param.txt. |
2.3 Регистрация подзадач.
Для регистрации подзадачи вызывается процедура int RegisterSubJob(const AnsiString Name, TProcessForm *AForm). Здесь Name– название подзадачи, а AForm – указатель на форму подзадачи. После её вызова указатель AFormдобавляется в список всех подзадач TProcessRec* SubJobs.
Более подробно данный раздел будет рассмотрен ниже.
3. Подзадачи.
Все подзадачи являются наследниками базового класса подзадачи TProcessForm, который находится в файле USubJobProcess.h. Каждая подзадача реализована в отдельном модуле. Класс каждой подзадачи наследует свойства класса TProcessForm.
3.1 Управление процессом.
Окно подзадачи содержит кнопки управления процессом: «Начать», «Прервать», «Продолжить», «Закрыть».
В программе управление процессом осуществляется выполнением виртуальных процедур, запускаемых обработчиками кнопок.
В форме хранится поле прерывания процесса пользователем. Если вмешательства пользователя не было, в этом поле находится нуль; если пользователь нажал кнопку «Прервать», значение устанавливается в единицу. Процедуры реализации процесса могут изменять значение этого поля. Во всех случаях ненулевое значение означает вмешательство пользователя. После окончания или прерывания процесса значение поля прерывания анализируется для определения конечного состояния процесса.
Значения поля прерывания, интерпретируемые обработчиками событий окна:
Поля прерывания процесса: |
||
BREAK_NO |
Процесс не прерывался либо полностью завершен |
Доступна кнопка «Закрыть» |
BREAK_POINT |
Процесс прерван и может быть продолжен с контрольной точки |
Доступны кнопки «Закрыть» и «Продолжить» |
BREAK_ALL |
Процесс прерван и должен быть запущен заново |
Доступна кнопка «Начать» |
BREAK_ERROR |
Процесс завершен аварийно |
Доступна только кнопка системного меню |
Функция intUserBreak() возвращает значение поля прерывания процесса. Функция SetUserBreak(intValue) устанавливает значение этого поля по аргументу.
Для рестарта процесса с контрольной точки в форме имеется поле Userbreak. Его значение устанавливается процедурой SetBreakPoint(intValue) и возвращается функцией intBreakPoint(). Значения этого поля определяются и интерпретируются виртуальной процедурой реализации процесса и в базовом классе не регламентированы.
После нормального закрытия диалога (кнопкой «Закрыть») поле Tag формы содержит значение Userbreak. Это дает возможность вызывающей программе проанализировать конечное состояние процесса.
Виртуальные процедуры управления процессом приведены ниже. Их реализация предполагается в производных классах. В базовом классе эти процедуры пустые.
Процедуры управления процессом: |
|
virtual int StartProcess() |
Запуск процесса с начала. |
virtual int RestartProcess(int Step = 0) |
Запуск процесса с шага Step. |
Процедуры возвращают нуль при аварийном завершении. В этих случаях код Userbreak устанавливается в BREAK_ERROR, что блокирует дальнейшие вычисления. В остальном никаких ограничений на реализацию этих функций в производных классах форм не накладывается.
3.2 Индикация состояния процесса.
Процедуры индикации состояния процесса предназначены для визуального контроля степени завершенности подзадачи либо её шага (индикация прогресса), величины невязки решаемой системы и т.п. Как правило, в производных классах определяются специфические для подзадачи процедуры индикации.
Однако, учитывая наличие этапов, общих для большинства планируемых подзадач, в базовом классе определены процедуры индикации, которые чаще всего не будут перекрываться. К ним относятся процедуры индикации пяти шагов (Step1 – Step4 и StepLast), а также процедуры индикации решения системы уравнений.
При конструировании окна подзадачи на основе базового класса может быть выполнена настройка индикации. В базовом классе формы имеется 5 панелей шагов. Каждая панель может быть снабжена заголовком (которого в базовом классе нет) и полосой прогресса. В производном классе ненужные панели шагов могут быть сделаны невидимыми.
Для шагов процесса в базовом классе определены процедуры установки пределов полосы прогресса и текущей позиции.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.