Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];
ВнизКак записать путь к БД в *.ini(Interbase) Найти похожие ветки
← →
User_0 (2007-10-03 12:47) [0]Возникла проблема запуска моей СУБД на чужом компьютере. Проблему можно решить с помощью .ini файла.
но я незнаю как это делается(, юзал гугл, ничего толкового ненашел, кроме как создать инишку(записать, считать данные), но это я умею делать, а вот получить путь к БД я незнаю как. Пытался делать так:
ini := tinifile.Create(ExtractFilePath(Application.ExeName)+"set.ini");
s := ini.ReadString("CFG","PATH",IBDatabase1.Database);
Может кто сталкивался с подобной проблемой прошу помочь.
← →
Elen © (2007-10-03 12:49) [1]А что записалось в s ?
← →
Washington © (2007-10-03 12:57) [2]А БД где лежит? У меня такая ситуация была - я просто закинул БД в папку с Виндой.
← →
User_0 (2007-10-03 13:11) [3]>> А что записалось в s ?
ничего, происходила ошибка
>> У меня такая ситуация была - я просто закинул БД в папку с Виндой.
В System32? И что? норм работала прога? InterBase?
← →
{RASkov} © (2007-10-03 13:12) [4]> [2] Washington © (03.10.07 12:57)
> я просто закинул БД в папку с Виндой
Вот ну ни как не нужно на такой совет намекать...
← →
{RASkov} © (2007-10-03 13:14) [5]> [3] User_0 (03.10.07 13:11)
> ничего, происходила ошибка
Что за ошибка?
← →
Washington © (2007-10-03 13:14) [6]Извиняюсь, не InterBase. Что-то не обратил внимание :( У меня Access"овская база.
← →
User_0 (2007-10-03 13:54) [7]
public
ini,s:TIniFile;ini := tinifile.Create(ExtractFilePath(Application.ExeName)+"set.ini");
s := ini.WriteString("CFG","PATH",DM2.IBDatabase1.DatabaseName);
ошибка такая:
[Error] UMain.pas(97): Incompatible types: "TIniFile" and "procedure, untyped pointer or untyped parameter"
← →
{RASkov} © (2007-10-03 14:32) [8]> [7] User_0 (03.10.07 13:54)
> ini,s:TIniFile;
public
ini :TIniFile;
s: String;
это раз.
два:
> s := ini.WriteString("CFG", "PATH", DM2.IBDatabase1.DatabaseName);
Так читают, а не пишут....
← →
Anatoly Podgoretsky © (2007-10-03 14:45) [9]> User_0 (03.10.2007 13:54:07) [7]
Как ты собираешься записать строку в объект типа TIniFile, они же полностью несовместимы.
← →
User_0 (2007-10-03 15:15) [10]> Так читают, а не пишут....
наоборот
← →
User_0 (2007-10-03 15:19) [11]>> s: String;
это раз.
хм...
[Error] UMain.pas(98): Incompatible types: "String" and "procedure, untyped pointer or untyped parameter"
>> Как ты собираешься записать строку в объект типа TIniFile, они же полностью несовместимы.
да ошибся я печатая)
← →
korneley © (2007-10-03 15:25) [12]А я всегда считал, что TIniFile.WriteString() это вообще процедура, и ничего возвращать она не должна, в отличие от ReadString()
← →
User_0 (2007-10-03 15:27) [13]> TIniFile.WriteString()
это тут причем?
← →
Плохиш © (2007-10-03 15:28) [14]
> User_0 (03.10.07 15:27) [13]
[7] ты написал или пушкин?
← →
korneley © (2007-10-03 15:29) [15]
> > TIniFile.WriteString()это тут причем?
Тут у User_0 два примера и оба разные: в одном он читает, а вдругом как-то странно пытается писАть
← →
User_0 (2007-10-03 15:31) [16]
tinifile.Create
[7]TIniFile.WriteString()
[12]
есть разница?
← →
User_0 (2007-10-03 15:32) [17]> Тут у User_0 два примера и оба разные: в одном он читает, а вдругом как-то странно пытается писАть
сори, я просто ошибся((
← →
korneley © (2007-10-03 15:34) [18]
> [16]
В одном случае ты создаешь экземпляр объекта, а во втором, типа, метод вызываешь :) Только в твоем случае ini.writeString()
← →
User_0 (2007-10-03 15:38) [19]ладно, вернемся к нашим баранам))):
Ну вот как получить полный путь к базе и записать в инишку?
← →
korneley © (2007-10-03 15:39) [20]А вообще для того, чтобы что-то прочитать из 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:49) [21]> А вообще для того, чтобы что-то прочитать из ini, надо туда сначала что-то написАть.
во....ты меня натолкнул на еще одну проблему)))
допустим, я переношу свою программу на другой компьютер, в ини файле уже будет записан путь к базе(естественно устаревший, т.е. который указывал бы путь к БД на моей машине).
← →
korneley © (2007-10-03 15:54) [22]
> Ну вот как получить полный путь к базе и записать в инишку?
1)Путем просмотра пути в проводнике и записи его (пути) в твой set.ini, лежащий там же, где и твой exe, приложением "Notepad".
2)В твоем приложении выбрать путь к файлу БД и запуздырить его программно
ini := tinifile.Create(ExtractFilePath(Application.ExeName)+"set.ini");
try
ini.WriteString("CFG","PATH", DatabasePath);
finally
ini.Free;
end;
← →
korneley © (2007-10-03 15:58) [23]
> в ини файле уже будет записан путь к базе(естественно устаревший
Ну, дык, для этого настройки программы и существуют. Чтобы там всякие пути и прочие параметры помнить. Можно даже в ini, или вааще в реестре 8-)
← →
User_0 (2007-10-03 16:13) [24]может у кого есть какой пример?
← →
Плохиш © (2007-10-03 16:32) [25]
> User_0 (03.10.07 16:13) [24]
> может у кого есть какой пример?
Ну наконец-то, а то всё мозги компосировал...
Пример - 1000 Евро
Разъяснение работы - 5000 Евро
Предоплата.
← →
User_0 (2007-10-03 16:42) [26]Ну ты ЖИИИИИДДДД!!!!! =) (фу таким быть))))
В общем это делается вот так(причем бесплатно)
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;
← →
User_0 (2007-10-03 16:44) [27]аааа, чуть не забыл! потом переходим в датамодуль и в событии OnCreate прописываем:
OpenBD;
+ незабываем подключить тот модуль, в котором мы писали саму процедурку. Вот и все дела....все просто как дважды два))
← →
korneley © (2007-10-03 16:53) [28]
> [26]
А каким боком тут TIniFile? Нет, конечно данные можно хранить как кому угодно, но тогда при чем здесь сабж?
← →
korneley © (2007-10-03 16:55) [29]А!!! Понял!!! Главное, чтобы расширение .ini было!!! А читать/писать и через FileStream можно :)
← →
Anatoly Podgoretsky © (2007-10-03 17:04) [30]
> User_0 (03.10.07 15:15) [10]
Еще хуже, процедуры не возврашают значений
← →
Anatoly Podgoretsky © (2007-10-03 17:07) [31]> User_0 (03.10.2007 16:42:26) [26]
Ужас
← →
User_0 (2007-10-03 17:41) [32]>> А!!! Понял!!! Главное, чтобы расширение .ini было!!!
это так.....для "серьезности"=)))))))))))))))))
> Еще хуже, процедуры не возврашают значений
ну так юзай функции))
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.042 c