Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.044 c
15-1190894467
hochu
2007-09-27 16:01
2007.10.28
Нужна помощь срочно!!!


2-1191823856
JohnKorsh
2007-10-08 10:10
2007.10.28
Как использовать widechar в memo или richedit.


2-1191423908
Kolan
2007-10-03 19:05
2007.10.28
Как поймать клик по Табу в TabControl е?


2-1191920909
Tron
2007-10-09 13:08
2007.10.28
Как подключить сетевой принтер?


1-1185977371
SpellCaster
2007-08-01 18:09
2007.10.28
Оптимизатор режет лишнее





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский