Доступ к таблицам физико-механических параметров материалов реализован в двух классах объектов: класс TMatDataTab определяет операции над отдельной таблицей, а класс TMatDataBase – над базой данных в целом.
Экземпляр класса TMatDataTab содержит поля данных:
** DataTab |
Double |
Динамически распределяемый массив числовых данных. Этот массив содержит максимальное число строк данных (их количество равно общему числу возможных параметров материала и определяется значением константы MATCONST в файле MatData.h) |
TabNumber |
Int |
Отсчетов температуры |
Handler |
HANDLERTYPE |
идентификатор материала |
Invar |
InvarArray (double *) |
Массив констант, не зависящих от температуры |
Name |
Char[256] |
Обозначение материала |
* Неиспользуемые строки данных содержат нулевые значения.
Методы работы с данными:
int OK() |
Проверка на существование таблицы параметров |
HANDLERTYPE Handle() |
Обеспечивает доступ к хэндлеру |
double& Data(const int i,const int T) |
Обеспечивает доступ к таблице данных по номеру параметра i и номеру температурного отсчета T, возвращая ссылку на элемент динамического массива. Это позволяет использовать данную функцию как в правой, так и в левой части оператора присваивания. |
Zero() |
Заполняет таблицу нулевыми значениями |
int UnloadToText(TFileStream*) |
Выгружает таблицу данных в описанном выше (п. 4.1.1) формате в ранее открытый файловый поток, указатель на который передается через параметр. |
int FormRows(int*) |
Формирует массив индексов строк таблицы. Этот массив размером MATCONST целых чисел содержит номера строк таблицы, заполненных, хотя бы частично, ненулевыми значениями. Остальные (правые) позиции не заполняются никакими значениями и используются для внутренних целей программами пакета. |
Экземпляр класса TMatDataBase содержит следующие поля данных:
** MatData |
TMatDataTab |
Адрес массива указателей на таблицы данных |
TabNumber |
Int |
Число используемых таблиц данных |
TabSize |
Int |
Размер массива указателей (он больше числа таблиц на величину резерва, позволяющего добавлять новые таблицы без перераспределения памяти) |
IsModify |
Int |
Признак изменения данных |
MaxHandler |
HANDLERTYPE |
|
SouDataFile |
Char[256] |
Доступ к отдельным таблицам осуществляют функции:
int SetFileName(const char*) |
Изменяет поле SouDataFile |
virtual int Save() |
Сохранение материала в *.txt |
virtual int SaveAs() |
Сохранение материала в *.txt |
virtual int Close() |
Вывод диалогового окна с запросом на сохранение. |
virtual int Open(int) |
Открываем, читая файл с заданным именем в текущем директории. |
virtual int Create(int) |
Выгружаем старую базу данных в текущий директорий модели |
int OK() |
Проверка на существование таблицы материалов |
ClearAll() |
Очищает таблицу материалов |
char* StoffName(int) |
Возвращает обозначение материала |
intTempNum(int) |
Число отсчетов температуры |
Zero(int) |
Обнуление таблицы |
int Rename(int,const char*) |
Переименование таблицы |
int LoadFromTxt(const char* FileName) |
Загружает базу данных из текстового файла. Имя файла передается через параметр. |
int UnloadToTxt(const char* FileName) |
Выгружает базу данных в текстовый файл |
Sort() |
Сортирует базу, располагая таблицы в алфавитном порядке по названиям материалов. |
Excluse(int) |
Удаляет из базы таблицу с заданным номером. Это изменение касается только копии данных, загруженной в основную память, и не затрагивает оригинал, хранящийся в файле. |
int Add(const char* s) |
Добавляет к базе новую таблицу. Это изменение касается только копии данных, загруженной в основную память, и не затрагивает оригинал, хранящийся в файле. |
int Find(const char* s) |
Находит первую таблицу, начальные символы названия которой совпадают с заданной строкой. Эта функция используется для быстрого поиска нужной таблицы набором начальных букв ее названия на клавиатуре. |
int FindHandle(HANDLERTYPE) |
Возвращает номер таблицы по заданному хэндлеру. |
int IsIsotrop(int Tab) |
|
int IsOrthotrop(int Tab) |
|
int Interpol(int Tab, double T, double* Res) |
Интерполяция |
HANDLERTYPE Handle(int Tab) |
Возвращает хэндлер заданной таблицы. |
* Следует иметь в виду, что номер таблицы в базе данных – величина не постоянная, он может меняться даже во время одного сеанса работы с пакетом. Это же замечание относится и к функции интерполяции Interpol, которая формирует массив интерполированных значений параметров для произвольного значения температуры по таблице с заданным номером.
Интерактивный доступ к базе данных необходим для ее просмотра и корректировки.
Просмотр и корректировка состава таблиц осуществляется из формы MainStofForm. Эта форма (рис. 4.1) содержит список названий таблиц, сверху которого находится строка редактирования текста. Набирая в верхней строке начальные буквы названия материала, пользователь осуществляет быстрый поиск этого названия в списке. Альтернативный способ поиска заключается в пролистывании списка с помощью скроллера; этот способ, однако, становится менее удобным, когда база данных заполняется большим числом таблиц.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.