Есть три способа сделать это... No1 годится только для постоянных псевдонимов
BDE. No2 работает с BDE и локальными псевдонимами, и No3 работает с BDE и
локальными псевдонимами, используя "тяжелый" путь, через вызовы DBI.
function GetDBPath1(AliasName: string): TFileName;
var
ParamList: TStringList;
begin
ParamList := TStringList.Create;
with Session dotry
GetAliasParams(AliasName, ParamList);
Result := UpperCase(ParamList.Values['PATH']) + '\';
finally
Paramlist.Free;
end;
end;
function GetDBPath2(AliasName: string): TFileName;
var
ParamList: TStringList;
i: integer;
begin
ParamList := TStringList.Create;
with Session dotrytry
GetAliasParams(AliasName, ParamList);
exceptfor i := 0 to pred(DatabaseCount) doif (Databases[i].DatabaseName = AliasName) then
ParamList.Assign(Databases[i].Params);
end;
Result := UpperCase(ParamList.Values['PATH']) + '\';
finally
Paramlist.Free;
end;
end;
function GetDBPath3(ATable: TTable): TFileName;
var
TblProps: CURProps;
pTblName, pFullName: DBITblName;
beginwith ATable dobegin
AnsiToNative(Locale, TableName, pTblName, 255);
Check(DBIGetCursorProps(Handle, TblProps));
Check(DBIFormFullName(DBHandle,
pTblName,
TblProps.szTableType,
pFullName));
Result := ExtractFilePath(StrPas(pFullName));
end;
end;
Программный код на языке Delphi предлагает три функции для получения пути к базе данных или таблице:
GetDBPath1: Функция получает путь к постоянной базе данных с помощью BDE (Borland Database Engine). Она принимает имя alias в качестве входного параметра и возвращает путь в виде строки.
GetDBPath2: Функция получает путь к постоянной или локальной базе данных также с помощью BDE. Если alias не найден, функция итерирует по всем доступным базам данных, чтобы найти одну, соответствующую имени alias, и присваивает ее параметры переменной ParamList. Затем она возвращает параметр "PATH" в верхнем регистре с добавленным символом обратного слэша.
GetDBPath3: Функция получает полный путь к таблице с помощью DBI (Database Interface) и принимает объект TTable в качестве входного параметра. Она использует функции DBIGetCursorProps и DBIFormFullName, чтобы получить полное имя таблицы, а затем извлекает файловую систему из этого строки с помощью функции ExtractFilePath.
Функция использует объект Session, чтобы получить параметры alias с помощью функции GetAliasParams. Затем она извлекает параметр "PATH" из списка параметров и конвертирует его в верхний регистр, добавляя символ обратного слэша.
Функция аналогична GetDBPath1, но также обрабатывает случай, когда alias не найден в сессии. Она итерирует по всем доступным базам данных, чтобы найти одну, соответствующую имени alias, и присваивает ее параметры переменной ParamList если найдет.
Функция принимает объект TTable в качестве входного параметра и использует функции DBIGetCursorProps и DBIFormFullName, чтобы получить полное имя таблицы. Затем она извлекает файловую систему из этого строки с помощью функции ExtractFilePath.
В целом, эти функции предлагают различные подходы к получению пути к базе данных или таблице в приложениях на языке Delphi. Выбор функции зависит от конкретных требований вашего проекта и версии Delphi, которую вы используете.
Получение пути псевдонима и таблицы в Delphi: есть три способа выполнить это, включая использование BDE и локальных псевдонимов.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.