![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как записать путь к БД в *.ini(Interbase) [D7, XP]
User_0 © (2007-10-03 12:47:00)Возникла проблема запуска моей СУБД на чужом компьютере. Проблему можно решить с помощью .ini файла.
но я незнаю как это делается(, юзал гугл, ничего толкового ненашел, кроме как создать инишку(записать, считать данные), но это я умею делать, а вот получить путь к БД я незнаю как. Пытался делать так:
ini := tinifile.Create(ExtractFilePath(Application.ExeName)+'set.ini');
s := ini.ReadString('CFG','PATH',IBDatabase1.Database);
Может кто сталкивался с подобной проблемой прошу помочь.
User_0 (2007-10-03 17:41:00) [1]>> А!!! Понял!!! Главное, чтобы расширение .ini было!!!
это так.....для "серьезности"=)))))))))))))))))
> Еще хуже, процедуры не возврашают значений
ну так юзай функции))
Anatoly Podgoretsky (2007-10-03 17:07:00) [2]> User_0 (03.10.2007 16:42:26) [26]
Ужас
Anatoly Podgoretsky (2007-10-03 17:04:00) [3]
> User_0 (03.10.07 15:15) [10]
Еще хуже, процедуры не возврашают значений
korneley (2007-10-03 16:55:00) [4]А!!! Понял!!! Главное, чтобы расширение .ini было!!! А читать/писать и через FileStream можно :)
korneley (2007-10-03 16:53:00) [5]
> [26]
А каким боком тут TIniFile? Нет, конечно данные можно хранить как кому угодно, но тогда при чем здесь сабж?
User_0 (2007-10-03 16:44:00) [6]аааа, чуть не забыл! потом переходим в датамодуль и в событии OnCreate прописываем:
OpenBD;
+ незабываем подключить тот модуль, в котором мы писали саму процедурку. Вот и все дела....все просто как дважды два))
User_0 (2007-10-03 16:42:00) [7]Ну ты ЖИИИИИДДДД!!!!! =) (фу таким быть))))
В общем это делается вот так( причем бесплатно)
procedure openBD;
var
FP:TextFile;
StringPath:string;
NameOfFile:string;
begin
// получаю путь из файла settings.ini
NameOfFile:=ExtractFileDir(Application.ExeName)+'\settings.ini';
// если файлик есть, то связываюсь с ним, если нет то сообщ.об ошибке
if FileExists(NameOfFile) then
begin
Assign(FP,NameOfFile);
try
begin
reset(FP);
Read(FP,StringPath);
end;
finally
closeFile(FP);
end;
end
else
begin
ShowMessage('Файл пути к БД не найден'+
#13+
'создайте в папке программы файл settins.ini'+
#13+
'и запишите туда путь к БД');
application.Terminate;
end;
// задаю БД для компонента IBDatabase
DM2.IBDatabase1.DatabaseName:=StringPath;
// щас откроем базу и компонент транзакции
with DM2 do
begin
IBDataBase1.Connected:=true;
IBTransaction1.Active:=true;
end;
end;
Плохиш (2007-10-03 16:32:00) [8]
> User_0 (03.10.07 16:13) [24]
> может у кого есть какой пример?
Ну наконец-то, а то всё мозги компосировал...
Пример - 1000 Евро
Разъяснение работы - 5000 Евро
Предоплата.
User_0 (2007-10-03 16:13:00) [9]может у кого есть какой пример?
korneley (2007-10-03 15:58:00) [10]
> в ини файле уже будет записан путь к базе(естественно устаревший
Ну, дык, для этого настройки программы и существуют. Чтобы там всякие пути и прочие параметры помнить. Можно даже в ini, или вааще в реестре 8-)
korneley (2007-10-03 15:54:00) [11]
> Ну вот как получить полный путь к базе и записать в инишку?
1)Путем просмотра пути в проводнике и записи его (пути) в твой set.ini, лежащий там же, где и твой exe, приложением "Notepad".
2)В твоем приложении выбрать путь к файлу БД и запуздырить его программно
ini := tinifile.Create(ExtractFilePath(Application.ExeName)+'set.ini');
try
ini.WriteString('CFG','PATH', DatabasePath);
finally
ini.Free;
end;
User_0 (2007-10-03 15:49:00) [12]> А вообще для того, чтобы что-то прочитать из ini, надо туда сначала что-то написАть.
во....ты меня натолкнул на еще одну проблему)))
допустим, я переношу свою программу на другой компьютер, в ини файле уже будет записан путь к базе(естественно устаревший, т.е. который указывал бы путь к БД на моей машине).
korneley (2007-10-03 15:39:00) [13]А вообще для того, чтобы что-то прочитать из ini, надо туда сначала что-то написАть. Хотя бы ручками в блокноте. и потом уже
ini := tinifile.Create(ExtractFilePath(Application.ExeName)+'set.ini');
try
IBDatabase1.Database := ini.ReadString('CFG','PATH',IBDatabase1.Database);
finally
ini.Free;
end;
User_0 (2007-10-03 15:38:00) [14]ладно, вернемся к нашим баранам))):
Ну вот как получить полный путь к базе и записать в инишку?
korneley (2007-10-03 15:34:00) [15]
> [16]
В одном случае ты создаешь экземпляр объекта, а во втором, типа, метод вызываешь :) Только в твоем случае ini.writeString()
User_0 (2007-10-03 15:32:00) [16]> Тут у User_0 два примера и оба разные: в одном он читает, а вдругом как-то странно пытается писАть
сори, я просто ошибся((
User_0 (2007-10-03 15:31:00) [17]
tinifile.Create[7]
TIniFile.WriteString()[12]
есть разница?
korneley (2007-10-03 15:29:00) [18]
> > TIniFile.WriteString()это тут причем?
Тут у User_0 два примера и оба разные: в одном он читает, а вдругом как-то странно пытается писАть
Плохиш (2007-10-03 15:28:00) [19]
> User_0 (03.10.07 15:27) [13]
[7] ты написал или пушкин?
User_0 (2007-10-03 15:27:00) [20]> TIniFile.WriteString()
это тут причем?