Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2013, 07:33   #1
Romowski
Пользователь
 
Регистрация: 02.04.2012
Сообщений: 49
По умолчанию %UserProfile% и Firebird

Добрый день!

Имеется база firebird, которая расположена в %UserProfile%\base\base.FDB

В Файле aliases.conf эта база представлена через алиас вот так:
Код:
MyBase = %UserProfile%\base\base.FDB
Когда через Дельфи подключаюсь к БД по алиасу
Код:
DatabaseName:='localhost:MyBase';
то прога не находит файл БД.

Если в файле aliases.conf прописать нормальный путь
Код:
MyBase = c:\Users\Iam\base\base.FDB
то все работает.

Подскажите, как мне правильно подключиться к БД.
Romowski вне форума Ответить с цитированием
Старый 14.01.2013, 11:06   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

так и подключайся
MyBase = c:\Users\Iam\base\base.FDB
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 14.01.2013, 11:09   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
так и подключайся
Так нельзя. Имя пользователя не известно заранее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.01.2013, 11:18   #4
Romowski
Пользователь
 
Регистрация: 02.04.2012
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Так нельзя. Имя пользователя не известно заранее.
вот и я про это...
Romowski вне форума Ответить с цитированием
Старый 14.01.2013, 11:21   #5
Romowski
Пользователь
 
Регистрация: 02.04.2012
Сообщений: 49
По умолчанию

Кстати, может это поможет вам:

Я делаю дистрибутив при помощи SmartInstallMaker, и базу копирую в
Код:
%UserProfile%\base\base.FDB
А можно при установки запускать bat-файл, который бы перезаписывал aliases.conf на те, значения, которые мне нужны? эмммм... только опять как же получить нормальную строку вместо %...%
Romowski вне форума Ответить с цитированием
Старый 14.01.2013, 11:28   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

например так
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 14.01.2013, 11:32   #7
Romowski
Пользователь
 
Регистрация: 02.04.2012
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
видел такую функцию ))
но я ведь через алиас подключаюсь... а можно что-нибудь подобное (т.е. замену части пути на нормальный) через батник сделать?

или если можно как-нибудь в delphi узнать путь по алиасу и отредактировать его?

Последний раз редактировалось Romowski; 14.01.2013 в 11:35.
Romowski вне форума Ответить с цитированием
Старый 14.01.2013, 11:56   #8
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

ну так и читай с дельфи файл aliases.conf и парси его как тебе нужно. а потом пиши в тот же файл уже нужные изменения.
хотя я, честно говоря, не понимаю - зачем весь этот гем**ой с переменными путями в алисах? лишних проблем в работе софта не хватает?
ставь базу в нормальный каталог (напр с:\data) да и все
ps. а если уж каталог "%UserProfile%\" пишеться только из тех соображений чтобы только 1 пользователь мог работать с базой - так лучше использовать Embedded версию
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 14.01.2013 в 11:59.
Yurk@ вне форума Ответить с цитированием
Старый 14.01.2013, 11:58   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
function GetUserTempPath: String;
var xShell,xEnvironment: OleVariant;
    xPath1,xPath2: String;
    i: Integer;
begin
  xShell:=CreateOleObject('WScript.Shell');
  xEnvironment:=xShell.Environment['USER'];
  xPath1:=xEnvironment.Item['TMP'];
  xPath2:=xShell.ExpandEnvironmentStrings('%USERPROFILE%');
  i:=Pos('%USERPROFILE%',xPath1);
  if i>0 then begin
    Delete(xPath1,i,13);
    Result:=xPath2+xPath1;
  end
  else Result:='?';
  xShell:=Unassigned;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption:=GetUserTempPath;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.01.2013, 14:10   #10
Romowski
Пользователь
 
Регистрация: 02.04.2012
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
ну так и читай с дельфи файл aliases.conf и парси его как тебе нужно. а потом пиши в тот же файл уже нужные изменения.
хотя я, честно говоря, не понимаю - зачем весь этот гем**ой с переменными путями в алисах? лишних проблем в работе софта не хватает?
ставь базу в нормальный каталог (напр с:\data) да и все
ps. а если уж каталог "%UserProfile%\" пишеться только из тех соображений чтобы только 1 пользователь мог работать с базой - так лучше использовать Embedded версию
по порядку отвечаю ))
1. с Дельфи читать не самое лучшее решение: т.к. я коннектюсь через алиас... стало быть мне необходимо по алиасу считать путь, изменить его на нормальный и опять же подключаться к алиасу? не очень как-то
2. нормальный каталог - тоже не стоит... а то пользователи слишком уж любопытные
3. embedded не пойдет, т.к. может в дальнейшем быть 3-4 пользователя

вооот )
Romowski вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БД firebird Vtornik Помощь студентам 0 15.11.2011 22:28
%userprofile% Painkiller_13 Общие вопросы Delphi 6 05.08.2011 11:32
FireBird Д'якон БД в Delphi 2 04.12.2008 11:15
FireBird 1.5.4 Nikola__ БД в Delphi 2 17.11.2008 14:42