[ prginfo @ 22.07.2008. 14:20 ] @
Koristim Delphi 7 i IB. Zelim da napravim da se pri pokretanju programa kreira .ini fajl, u njega upisuje putanja do baze koju koristi .exe i da se potom taj podatak izcita i dodeli parametru DatabaseName:

kod koji sam ukucao je sledeci:

procedure Tforma1.FormCreate(Sender: TObject);
var
myINI : TINIFile;
putanjadb:string;
putanja:String;
begin
myINI := TINIFile.Create(ExtractFilePath(Application.EXEName) + 'db.ini');
myINI.WriteString('BAZA', 'putanjadb',':'+ ExtractFilePath(Application.EXEName) + 'PROBA.GDB');
myINI.Free;
putanja:=myINI.ReadString('BAZA','putanjadb','');
baza.DatabaseName:=putanja;
end;

.ini fajl uspesno kreira, medjutim, prijavljuje mi sledecu gresku:
Access violation at address 00B57918. Write of address 00567F31

Debagovanjem sam utvrdio da se to desi u momentu kada bazi zelim da prosledim baza.DatabaseName:=putanja;

Gde gresim?

Hvala
[ savkic @ 22.07.2008. 18:52 ] @
> .ini fajl uspesno kreira, medjutim, prijavljuje mi sledecu gresku:
> Access violation at address 00B57918. Write of address 00567F31
> myINI.Free;
> putanja:=myINI.ReadString('BAZA','putanjadb','');

Access Violation obično označava korišćenje memorije nad kojom se nema prava (memorija je oslobođena), ti u kodu imaš najmanje jednu takvu grešku.
Prvo uništavaš myIni objekat i u narednom redu ga koristiš, objekat ne smeš uništiti sve dok se koristi.
[ prginfo @ 23.07.2008. 12:28 ] @
Promenio sam deo koda myINI.Free.

Sada mi puca (sa slicnom greskom, samo sto kaze da je greska u modulu program.exe) kada zelim da dodelim putanju bazi.

putanja:=myINI.ReadString('BAZA','putanjadb',''); -->vrednost je prosledjena promenljivoj putanja
baza.DatabaseName:=putanja; -->program pravi break

Kuda dalje?
[ Miloš Baić @ 23.07.2008. 12:53 ] @
Code:
putanja:=myINI.ReadString('BAZA','putanjadb','');
baza.DatabaseName:=putanja;


Razmisli o ovom delu koda!?! Odnosno, šta si prethodno odradio sa myINI...
[ prginfo @ 23.07.2008. 13:08 ] @
Kod sada izgleda ovako:

putanja:=myINI.ReadString('BAZA','putanjadb','');
baza.DatabaseName:=putanja;
myINI.Free;

Znaci, myINI.Free sam prebacio posle dodeljivanja i sada mi pravi problem kada zelim da daodelim bazi putanju.

[ Miloš Baić @ 23.07.2008. 13:33 ] @
Koji exception?
[ prginfo @ 23.07.2008. 13:46 ] @
Project program.exe raissed exception class EAccessViolation with message 'Access violation at address 0056831F in module 'program.exe'. Read of address 00000058'. Process stopped. Use Step or Run to continue.
[ savkic @ 23.07.2008. 14:35 ] @
I dalje verovatno koristiš objekte posle uništavanja ili pre kreiranja, pokaži kod i kaži gde nastaje greška.