![]() |
|
|
|
|
#1
|
|||
|
|||
|
Завершил прогу, записал на диск, авторан, анау-мынау.
Но столкнулся с такой проблемой: Устанавливаю прогу, создаётся ярлык на рабочем столе. А прога использует базу данных. В строке подключение компонента ADOConnection висит адрес Base.mdb. Получается, если запускать прогу из корневого каталога, то всё ОК. А если через ярлычки, то она пытается найти Base.mdb на рабочем столе. Но её там нет, как ни верти. Чо делать, а? |
|
#2
|
||||
|
||||
|
В строку подключения надо вставлять путь, который определяется так:
ExtractFilePath(Application.ExeName) + 'относительный путь к файлу Base.mdb'; Например, если файл находится в одном каталоге с программой, то путь должен быть таким: ExtractFilePath(Application.ExeName) + 'Base.mdb'; |
|
#3
|
|||
|
|||
|
А если я не знаю относительный путь? Пользователь при установке его сам выбирает.
|
|
#4
|
||||
|
||||
|
Если путь выбирает пользователь, то, очевидно, он гдето хранится… И очевидно, что хранится не относительный путь, а абсолютный… Если подставлять его, то все должно быть нормально…
|
|
#5
|
||||
|
||||
|
Цитата:
|
|
#6
|
|||
|
|||
|
С помощью проги InnoSetup. Появилась такая идея - Base.mdb кинуть в Windows'овскую папку. Вопрос только в том, как узнать адрес Windows'овской паки. Она ведь не обязательно в C:\\Windows?
|
|
#7
|
||||
|
||||
|
Код:
function GettingWinDirectory: string;
var
Size: Cardinal;
pStr: PChar;
begin
pStr := nil;
Size := MAX_COMPUTERNAME_LENGTH + 1;
try
pStr := StrAlloc( Size );
GetWindowsDirectory( pStr, Size );
Result := pStr;
finally
if pStr nil then StrDispose( pStr );
end;
end;Последний раз редактировалось Decoding, 06.04.2007 в 09:36. |