[ 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.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.