Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получение пути псевдонима и таблицы

Delphi , Базы данных , Alias

Получение пути псевдонима и таблицы

Автор: Reinhard Kalinke

Есть три способа сделать это... No1 годится только для постоянных псевдонимов BDE. No2 работает с BDE и локальными псевдонимами, и No3 работает с BDE и локальными псевдонимами, используя "тяжелый" путь, через вызовы DBI.


function GetDBPath1(AliasName: string): TFileName;
var
  ParamList: TStringList;
begin
  ParamList := TStringList.Create;
  with Session do
  try
    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 do
  try
    try
      GetAliasParams(AliasName, ParamList);
    except
      for i := 0 to pred(DatabaseCount) do
        if (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;
begin
  with ATable do
  begin
    AnsiToNative(Locale, TableName, pTblName, 255);
    Check(DBIGetCursorProps(Handle, TblProps));
    Check(DBIFormFullName(DBHandle,
      pTblName,
      TblProps.szTableType,
      pFullName));
    Result := ExtractFilePath(StrPas(pFullName));
  end;
end;

Программный код на языке Delphi предлагает три функции для получения пути к базе данных или таблице:

  1. GetDBPath1: Функция получает путь к постоянной базе данных с помощью BDE (Borland Database Engine). Она принимает имя alias в качестве входного параметра и возвращает путь в виде строки.
  2. GetDBPath2: Функция получает путь к постоянной или локальной базе данных также с помощью BDE. Если alias не найден, функция итерирует по всем доступным базам данных, чтобы найти одну, соответствующую имени alias, и присваивает ее параметры переменной ParamList. Затем она возвращает параметр "PATH" в верхнем регистре с добавленным символом обратного слэша.
  3. GetDBPath3: Функция получает полный путь к таблице с помощью DBI (Database Interface) и принимает объект TTable в качестве входного параметра. Она использует функции DBIGetCursorProps и DBIFormFullName, чтобы получить полное имя таблицы, а затем извлекает файловую систему из этого строки с помощью функции ExtractFilePath.

Детальное описание каждой функции:

GetDBPath1

function GetDBPath1(AliasName: string): TFileName;
var
  ParamList: TStringList;
begin
  ParamList := TStringList.Create;
  try
    with Session do
      Result := UpperCase(ParamList.Values['PATH']) + '\';
  finally
    Paramlist.Free;
  end;
end;

Функция использует объект Session, чтобы получить параметры alias с помощью функции GetAliasParams. Затем она извлекает параметр "PATH" из списка параметров и конвертирует его в верхний регистр, добавляя символ обратного слэша.

GetDBPath2

function GetDBPath2(AliasName: string): TFileName;
var
  ParamList: TStringList;
  i: integer;
begin
  ParamList := TStringList.Create;
  try
    with Session do
      try
        GetAliasParams(AliasName, ParamList);
      except
        for i := 0 to pred(DatabaseCount) do
          if (Databases[i].DatabaseName = AliasName) then
            ParamList.Assign(Databases[i].Params);
      end;
    Result := UpperCase(ParamList.Values['PATH']) + '\';
  finally
    Paramlist.Free;
  end;
end;

Функция аналогична GetDBPath1, но также обрабатывает случай, когда alias не найден в сессии. Она итерирует по всем доступным базам данных, чтобы найти одну, соответствующую имени alias, и присваивает ее параметры переменной ParamList если найдет.

GetDBPath3

function GetDBPath3(ATable: TTable): TFileName;
var
  TblProps: CURProps;
  pTblName, pFullName: DBITblName;
begin
  with ATable do
  begin
    AnsiToNative(Locale, TableName, pTblName, 255);
    Check(DBIGetCursorProps(Handle, TblProps));
    Check(DBIFormFullName(DBHandle,
      pTblName,
      TblProps.szTableType,
      pFullName));
    Result := ExtractFilePath(StrPas(pFullName));
  end;
end;

Функция принимает объект TTable в качестве входного параметра и использует функции DBIGetCursorProps и DBIFormFullName, чтобы получить полное имя таблицы. Затем она извлекает файловую систему из этого строки с помощью функции ExtractFilePath.

В целом, эти функции предлагают различные подходы к получению пути к базе данных или таблице в приложениях на языке Delphi. Выбор функции зависит от конкретных требований вашего проекта и версии Delphi, которую вы используете.

Получение пути псевдонима и таблицы в Delphi: есть три способа выполнить это, включая использование BDE и локальных псевдонимов.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Alias ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 11:15:41/0.0039939880371094/1