Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 164

/ вопрос открыт /

Как автоматически создать псевдоним базы данных,
причем каталог с файлами должен указать пользователь
и на основе этих данных задается путь к базе в псевдониме.
Функция ExtractFilePath(ParamStr(0)) извлекает путь только
если файл данных находится в том же каталоге что и исполняемый
файл, а нужно указать путь, например если база находится на сетевом диске.
Спасибо за ответ.

Sonic-X Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Sonic-X (статус: Посетитель)
Вопрос отправлен: 19 ноября 2006, 00:41
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Матвеев Игорь Владимирович

Здравствуйте, Alexey!
Как создать псевдоним быза данных - воспользоваться методом TSession.AddStandardAlias(...). Первый параметр - имя псевдонима, второй - путь, третий - тип базы данных.
Выбрать каталог можно с помощью SHGetPathFromIDList(...), если этот диалог не нравится можно взять простой TOpenDialog и выбирать любой файл быза данных, а потом "округлять", оставив только каталог.

Приложение:
  1. var
  2. Session : Tsession;
  3. ---------
  4.  
  5.  
  6. TForm1.Create(Sender: TObject);
  7. begin
  8. with Session do
  9. begin
  10. ConfigMode := cmSession;
  11. try
  12.  
  13. if OpenDialog1.Execute then
  14. AddStandardAlias('Alias',
  15. ExtractFilePath(OpenDialog1.FileName), 'PARADOX');
  16.  
  17. Table1.Active := True;
  18. finally
  19. ConfigMode := cmAll;
  20. end;
  21. end;
  22. end;


Ответ отправил: Матвеев Игорь Владимирович (статус: Студент)
Время отправки: 19 ноября 2006, 03:06
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 22 ноября 2006, 04:44; участников в обсуждении: 1.
Алферьев Виктор Леонидович

Алферьев Виктор Леонидович (статус: Посетитель), 22 ноября 2006, 04:44 [#1]:

Function CreateDateBaseAliasName(Const NewAliasName, NewAliasDir: String;
Const Session: TSession; Const Base: TDatabase): String;
Var Params: TStringList;
_AliasDir: String;
Begin
Result:=NewAliasName;
Session.ConfigMode:= cmPersistent;
If Session.IsAlias(Result) Then Exit;
_AliasDir:=AnsiUpperCase(NewAliasDir);
Base.AliasName:=_AliasDir;
Base.DatabaseName:=_AliasDir;
Base.Exclusive:=True;
Params:= TStringList.Create;
Try
FillCreateParams(Params, NewAliasDir);
Base.Params.Assign(Params);
Session.AddPassword(_Password);
Session.AddAlias(Result, 'PARADOX',Params);
Finally FreeClass(Params); End;
Session.SaveConfigFile;
Base.DatabaseName:=Base.Name;
Base.AliasName:=Result;
End;
Алферьев Виктор Леонидович

Алферьев Виктор Леонидович (статус: Посетитель), 22 ноября 2006, 04:44 [#2]:

Function CreateDateBaseAliasName(Const NewAliasName, NewAliasDir: String;
Const Session: TSession; Const Base: TDatabase): String;
Var Params: TStringList;
_AliasDir: String;
Begin
Result:=NewAliasName;
Session.ConfigMode:= cmPersistent;
If Session.IsAlias(Result) Then Exit;
_AliasDir:=AnsiUpperCase(NewAliasDir);
Base.AliasName:=_AliasDir;
Base.DatabaseName:=_AliasDir;
Base.Exclusive:=True;
Params:= TStringList.Create;
Try
FillCreateParams(Params, NewAliasDir);
Base.Params.Assign(Params);
Session.AddPassword(_Password);
Session.AddAlias(Result, 'PARADOX',Params);
Finally FreeClass(Params); End;
Session.SaveConfigFile;
Base.DatabaseName:=Base.Name;
Base.AliasName:=Result;
End;
Алферьев Виктор Леонидович

Алферьев Виктор Леонидович (статус: Посетитель), 22 ноября 2006, 04:44 [#3]:

Function CreateDateBaseAliasName(Const NewAliasName, NewAliasDir: String;
Const Session: TSession; Const Base: TDatabase): String;
Var Params: TStringList;
_AliasDir: String;
Begin
Result:=NewAliasName;
Session.ConfigMode:= cmPersistent;
If Session.IsAlias(Result) Then Exit;
_AliasDir:=AnsiUpperCase(NewAliasDir);
Base.AliasName:=_AliasDir;
Base.DatabaseName:=_AliasDir;
Base.Exclusive:=True;
Params:= TStringList.Create;
Try
FillCreateParams(Params, NewAliasDir);
Base.Params.Assign(Params);
Session.AddPassword(_Password);
Session.AddAlias(Result, 'PARADOX',Params);
Finally FreeClass(Params); End;
Session.SaveConfigFile;
Base.DatabaseName:=Base.Name;
Base.AliasName:=Result;
End;

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:33
Выполнено за 0.03 сек.