[ mr.zhile @ 12.07.2008. 13:37 ] @
Kako da napravim ini fajl u kji bi se upisala putanja do baze?
Fajl bi trevao da cuva putanju i da se priilikom svakog pokretanja program nakaci na bazu!
Moj ii fajl izgledaa ovako:
Code:

[baza]
put="C:\Program Files\Common Files\Borland Shared\Data\EMPLOYEE.GDB"

Ukapirao sam da treba da se smesti u dogadjaj onCreate DataModul u kom se nalaze komponente zaa manipulaciju podacima,ali ne znam kako bi trebalo da izgleda ta procedura?
HVALA
[ rambo @ 12.07.2008. 17:46 ] @
Ako baš moraš da negde imaš INI fajl u kome imaš zabeleženu putanju do FB baze, onda koristi TIniFile klasu.

Ali, moja ti je preporuka da iskoristiš ugrađeni mehanizam za Aliase. U folderu u kome ti je instaliran FB server imaš fajl aliases.conf u kome možeš da navedeš ime aliasa i putanju do baze. Onda u svom programu podesiš konekciju tako da se veže na taj alias a ne direktno na fajl baze. Na primer, ako ti je baza u C:\Program Files\Moj program\Podaci\MojaBaza.fdb, onda napraviš alias
Code:

MOJABAZA=C:\Program Files\Moj program\Podaci\MojaBaza.fdb

i u svom programu podesiš konekciju na taj alias (MOJABAZA) a ne na direktnu putanju do fajla. Ako ručno navodiš konekcioni string do baze, onda prvo staviš ime ili IP adresu računara na kome ti je FB server pa onda alias željene baze. Na primer, SERVER:MOJABAZA ili 192.168.0.1:MOJABAZA.

Napomena: Aliasi se podešavaju na serveru i podrazumeva se da se .FDB fajlovi takođe nalaze na serveru (što je i logično ako želiš normalan višekorisnički pristup bazi).

Varijanta sa aliasima je mnogo bolja i fleksibilnija jer je pre svega sigurna (ne navode se nikakve putanje u konekciji), nezavisna od platforme na kojoj se nalazi FB server, i po potrebi može lako da se promeni da pokazuje na neko drugo mesto bez potrebe da se išta menja u aplikaciji.

Inače, mnogo je bolje sve parametre aplikacije smeštati u Registry nego u INI fajl. Za to može da se koristi TReistry klasa.
[ schild @ 14.07.2008. 07:40 ] @
Citat:
rambo: Ako baš moraš da negde imaš INI fajl u kome imaš zabeleženu putanju do FB baze, onda koristi TIniFile klasu. Ali, moja ti je preporuka da iskoristiš ugrađeni mehanizam za Aliase.
Inače, mnogo je bolje sve parametre aplikacije smeštati u Registry nego u INI fajl. Za to može da se koristi TReistry klasa.

Hmm.... ja bas mislim da treba koristiti ini fajl. Za aliase se slazem, ali i njih u kombinaciji sa inifajlom. Znaci nesto ovako:
[Baza]
ServerName=fb_server (ili samo localhost)
DBName=db_alias (kao sto je Rambo opisao)
...

X puta se desava da imas vise verzija baze (razvojna, u produkciji, od druge firme,...), pa cak i vise servera se zna desiti (najjednostavnije - localhost i jos neki), i ako iz nekog razloga zelis da promenis bilo alias bilo server, mislim da je ini fajl zakon.

mr.zhile: Moras reći koje komponente koristiš za pristup bazi, jer od toga zavisi kako će tačno kod izgledati.
Npr., kod FBPlusa ide:
FIBDatabase.DBName:=ServerName+':'+DBName;
FIBDatabase.Open;
[ mr.zhile @ 14.07.2008. 13:05 ] @
@schild
Koristim dbExpres komponente,SqlConnection,SimpleDataSet...
[ Miloš Baić @ 14.07.2008. 17:49 ] @
Citat:
mr.zhile:Koristim dbExpres komponente,SqlConnection,SimpleDataSet...

Nije loša varijanta, al mislim da je bolji pristup rad sa nekim od biblioteka koje su namenjene za FB. Pridružujem se FIBPlus komponentama. Takođe, slažem se da je bolja varijanta rad sa .ini fajlovima zbog razloga koje je sam schild naveo.
[ komplikator @ 15.07.2008. 08:07 ] @
I još ako si postaviš da kao parametar programa zoveš neku sekciju u INI, ili kao parametar zoveš određeni INI lako si složiš (i olakšaš život) da možeš koristiti mnoštvo konfiguracija programa (zbog raznih baza, raznih postavki, defaulta, itd). Meni je to još zgodnije od registryja. Osim toga, INI mi je znatno jednostavnije obuhvatiti backupom, poslati premo neta i sl. nego se igrati sa registryjem, permissionima usera da pročitam njegov registry i ne znam što sve, a da n spominjem ako nekome krepaju windoze, pa spašavaj i vuci iz registryja... ovako mi je ini znatno lakši. Registry je daleko od nke nauke ili muke, odnosno odavno mi nije nikakav bauk, no više volim svoje informacije držati na mojem mjestu i znati što s njima radim ja, a ne OS.
[ mr.zhile @ 15.07.2008. 09:02 ] @
Citat:
Miloš Baić: Nije loša varijanta, al mislim da je bolji pristup rad sa nekim od biblioteka koje su namenjene za FB. Pridružujem se FIBPlus komponentama. Takođe, slažem se da je bolja varijanta rad sa .ini fajlovima zbog razloga koje je sam schild naveo.

Da li mozda postoje (predpostavljam da da) FIBPlus komponente free full version na netu?
Ako moze neki link ka njima gde bi ih downloadovao?
Hvala svima na iscrpnim odgovorima...pomogli ste mi ,ali sam ipak pronaasao link koji to mnogo bolje opisuje ..
http://tehnika.krstarica.com/l/programiranje/ na srpskom
http://delphi.about.com/od/objectpascalide/l/aa120401a.htm na engleskom
UInace preporucen mi je sajt http://delphi.about.com/ kao nesto extra o Delphiju
[ mr.zhile @ 17.07.2008. 12:23 ] @
Kako?Kojom metodom se ispituje da li .ini fajl postoji ili ne?Hteo sam da napravim aplikaciju koja ima .ini fajl u kome je upisana putanja do baze.
Ako nema .ini fajla, ili baza ne moze da se otvori, program trazi da se upise putanja do baze.
Kada je ta putanja ispravna upisuje se u ini fajl.
Pomoc?
[ Miloš Baić @ 17.07.2008. 13:26 ] @
Citat:
Kako?Kojom metodom se ispituje da li .ini fajl postoji ili ne?Hteo sam da napravim aplikaciju koja ima .ini fajl u kome je upisana putanja do baze.
Ako nema .ini fajla, ili baza ne moze da se otvori, program trazi da se upise putanja do baze.
Kada je ta putanja ispravna upisuje se u ini fajl. Pomoc?


@mr.zhile

Polako, probaj odgovor prvo pronaći sam. Bar počni, npr. pretragom foruma i tema sa ini fajlovima. U njima ćeš naći i na koji način ćeš proveriti da li postoji fajl, kako ga kreirati, učitati, etc.
[ mr.zhile @ 17.07.2008. 14:07 ] @
@Milos
Ok je to sto kazes,ali me buni,kao rucno da napravim ili fajl,odnosno,da li moze das e napravi kao notepad dokument pa mu stavim ekstenziju .ini ili?
Pavio sam ga u kodu kada se dobije ime aplikacije.ini
[ Miloš Baić @ 17.07.2008. 15:49 ] @
Zamolio bih te, ukoliko želiš relevntan odgovor, da preciznije postavljaš pitanja.

Ne znam da li sam te dobro shvatio, ali ako želiš napraviti ini fajl, ne moraš manuelno, preko "Notepad" aplikacije, nego možeš i preko delphija, mali primer za to:

Code:

uses
   IniFiles;
...
var
  ini: TIniFile;
begin
  // kreiranje fajla
  ini := TIniFile.Create('c:\Neki_Naziv.ini');
  try
    // upis vrednosti tipa stringa
    ini.WriteString('sekcija', 'vrednost', 'String');
  finally
    ini.Free;
  end;
 end;
...

Imaš funkcije WriteInteger, WriteBool, etc., piše u help - u. Zaboravio sam reći, da pored foruma imaš i dobar help. Ako želiš da ini fajl ima naziv kao aplikacija, možeš i to napraviti, ali izvrši domaći zadatak, forum, help i google, ako se nigde ne snađeš, pitaj, pa ćemo ti pomoći.

Pozdrav.
[ mr.zhile @ 17.07.2008. 18:32 ] @
gde gresim?Kada se pozove sledeci kod
Code:

rocedure TDataModuleMain.DataModuleCreate(Sender: TObject);
var
baza:string;
begin
ini:=TIniFile.Create('put.ini');
ini.WriteString('baza','putanja','E:\DATEBASE\EMPLOYEE.GDB');
if not FileExists(ini.ReadString('baza','putanja','')) then
begin
  ShowMessage('Konekcija neuspesna');
  OpenDialog1.Execute;
  ini.WriteString('baza','putanja',OpenDialog1.FileName);
end;
baza:=ini.ReadString('baza','putanja','');
SQLConnection1.Params.Values['Database']:=baza;
SQLConnection1.Open;
ShowMessage('Konekcija ka bazi '+baza+' uspesna');
end;

Kada bazu E:\DATEBASE\EMPLOYEE.GDB premestim iz foldera,poruka o gresci se pojavi,zatim se otvori dialog,pojavi se porika o konekciji,pa ponovo o gresci,i opet se otvori dialog,pa se onda konektuje na bazu,fakticki 2 puta se pojavi poruka o gresci umesto jednom,a kada je defoult baza na svom mestu radi sve ok!
NEZNAM gde gresim?
[ mr.zhile @ 21.07.2008. 10:47 ] @
Code:

ini:=TIniFile.Create(ChangeFileExt(application.Exename,'ini'));

Kod kada je napisan u FormCreate dogadjaju radi,ali u DataModuleCreate ne radi.
Gde gresim?
MOLIM ZA MALO PAZNJE I POMOC?
[ viking13 @ 21.08.2008. 15:06 ] @
Citat:
mr.zhile
Code:

ini:=TIniFile.Create(ChangeFileExt(application.Exename,'ini'));

Kod kada je napisan u FormCreate dogadjaju radi,ali u DataModuleCreate ne radi.
Gde gresim?
MOLIM ZA MALO PAZNJE I POMOC?


Grešiš u tome što je Application u unitu Forms koji DataModule ne koristi. Dodaj Forms u uses.
[ mr.zhile @ 21.08.2008. 16:03 ] @
@viking13
Hvala na odgovoru.
Resio sam problem,i to je bio problem.