Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Упаковка таблиц dBASE требует вызова BDE функции DbiPackTable. Пример ее использования показан ниже, включая проверку на ошибки. Чтобы воспользоваться функцией DbiPackTable, вызывающий модуль должен в своей секции uses иметь модули-обертки BDE DbiTypes, DbiErrs и DbiProcs.
При неудачном вызове DbiPackTable, сообщение об ошибке не генерится. Для того, чтобы понять как функция сработала, вам необходимо проверить возвращаемое ею значение. В случае успешного выполнения возвращаемое значение равно DBIERR_NONE. Любое другое значение указывает на ошибку, а с помощью него можно определить саму ошибку, ее причину, и наметить действия, необходимые для ее устранения.
Вот сам пример:
procedureTForm1.Button1Click(Sender: TObject); var
Error: DbiResult; ErrorMsg: string
; Special: DBIMSG; begin
table1.Active := False
; try
Table1.Exclusive := True
; Table1.Active := True
; Error := DbiPackTable(Table1.DBHandle, Table1.Handle, nil
, szdBASE, True
); Table1.Active := False
; Table1.Exclusive := False
; finally
Table1.Active := True
; end
; case
Error of
DBIERR_NONE: ErrorMsg := 'Успешно'; DBIERR_INVALIDPARAM: ErrorMsg := 'Указанное имя таблицы или указатель на имя таблицы ' + 'равен NULL'; DBIERR_INVALIDHNDL: ErrorMsg := 'Указанный дескриптор базы данных или курсора ' + 'неверен или равен NULL'; DBIERR_NOSUCHTABLE: ErrorMsg := 'Таблица с таким именем не существует'; DBIERR_UNKNOWNTBLTYPE: ErrorMsg := 'Неизвестный тип таблицы'; DBIERR_NEEDEXCLACCESS: ErrorMsg := 'Таблица открыта не в эксклюзивном режиме'; else
DbiGetErrorString(Error, Special); ErrorMsg := '[' + IntToStr(Error) + ']: ' + Special; end
; MessageDlg(ErrorMsg, mtWarning, [mbOk], 0); end
;