Если ссылка на таблицу получена через псевдоним, то физический путь к ней выяснить не так просто. Для этого необходимо применить функцию BDE DbiGetDatabaseDesc. Данной функции в качестве параметров передаются имя псевдонима и указатель на структуру DBDesc. Структура DBDesc будет заполнена информацией, относящейся к этому псевдониму. Определение структуры:
pDBDesc = ^DBDesc;
DBDesc = packed record { Описание данной базы данных }
szName: DBINAME; { Логическое имя (или псевдоним) }
szText: DBINAME; { Описательный текст }
szPhyName: DBIPATH; { Физическое имя/путь }
szDbType: DBINAME; { Тип базы данных }
end;
Физическое имя/путь будет содержаться в поле szPhyName структуры DBDesc.Возможные значения, возвращаемые функцией DBIGetDatbaseDesc:
DBIERR_NONE – описание базы данных для pszName было успешно извлечено. DBIERR_OBJNOTFOUND – база данных, указанная в pszName, не была обнаружена.Приведенный ниже пример кода демонстрирует получение физического пути для компонента TTable, использующего псевдоним DBDemos:
var
vDBDesc: DBDesc;
DirTable: String;
begin
Check(DbiGetDatabaseDesc(PChar(Table1.DatabaseName), @vDBDesc));
DirTable := Format('%s\%s', [vDBDesc.szPhyName, Table1.TableName]);
ShowMessage(DirTable);
end;