Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как записать путь к БД в *.ini(Interbase) [D7, XP]


Страницы:   1 2

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()

это тут причем?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо