var
Session: hTUses;
i: integer;
ErrorCode: word;
ResultCode: word;
procedure BdeError(ResultCode: Word);
beginif ResultCode <> 0 thenraise Exception.CreateFmt('BDE ошибка %x', [ResultCode]);
end;
begintry
BdeError(DbiInit(nil));
BdeError(TUInit(@Session));
for i := 1 to High(TableNames) dobegin
WriteLn('Проверка ' + TableNames[i]);
ResultCode := TUVerifyTable(Session, @TableNames[i, 1], szPARADOX,
'TABLERRS.DB', nil, TU_Append_Errors, ErrorCode);
BdeError(ResultCode);
if ErrorCode = 0 then
WriteLn('Успешно')
else
WriteLn('ОШИБКА! -- Для информации смотри TABLERRS.DB!');
WriteLn('');
end;
finally
BdeError(TUExit(Session));
BdeError(DbiExit);
end;
end.
Программа на языке Delphi использует Библиотеку данных Borland (BDE) для проверки существования таблиц в файле базы данных Paradox с именем "TABLERRS.DB". Программа инициализирует BDE, инициализирует сессию с базой данных, а затем перебирает массив имен таблиц для проверки их наличия в базе данных. Если таблица найдена, она выводит сообщение о успехе; если нет, то выводит сообщение об ошибке вместе с информацией об ошибке.
Разбивка кода:
Переменная Session объявлена как hTUses, что является типом handle для сессии BDE.
Переменная i объявлена как integer.
Переменные ErrorCode и ResultCode объявлены как word, которые являются 16-разрядными неотрицательными целыми числами, используемыми для хранения кодов ошибок, возвращаемых функциями BDE.
Процедура BdeError принимает единственный аргумент типа Word, который является результатом кодом из вызова функции BDE. Если результат код не равен нулю (т.е., произошла ошибка), она поднимает исключение с сообщением, форматированным с помощью метода CreateFmt, которое включает код ошибки.
Главная программа блока начинается с try-finally блоком для обеспечения закрытия сессии BDE и базы данных при завершении программы.
Внутри блока try:
Вызывается функция DbiInit(nil) для инициализации BDE. Если вызов этого метода неудачен, он поднимает исключение.
Вызывается функция TUInit(@Session) для инициализации сессии TUtility (TU) с базой данных. Если вызов этого метода неудачен, он поднимает исключение.
Цикл перебирает массив имен таблиц с помощью функций High и WriteLn. Для каждой таблицы:
Вызывается функция TUVerifyTable для проверки наличия таблицы в базе данных. Эта функция возвращает результат код, указывающий, была ли таблица найдена или нет.
Если результат код не равен нулю (т.е., произошла ошибка), она поднимает исключение с помощью процедуры BdeError.
Если результат код равен нулю, она выводит сообщение о успехе; иначе, она выводит сообщение об ошибке с информацией об ошибке.
Блок finally:
Вызывается функция TUExit(@Session) для закрытия сессии TU с базой данных. Если вызов этого метода неудачен, она поднимает исключение с помощью процедуры BdeError.
Вызывается функция DbiExit() для закрытия BDE.
Обратите внимание, что код написан на языке Delphi и использует типы и функции, специфические для Borland (например, hTUses, TUInit, TUVerifyTable). Это может не быть совместимо с другими языками программирования или фреймворками.
В статье представлен код на языке Pascal, демонстрирующий вызов функции TUTILITY для инициализации сессии BDE, проверки таблиц в БД Paradox и вывода результатов выполнения операций.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.