![]() |
INI Problem
Also ich hatte mir ne Prozedur zum speichern meiner Einstellungen geschrieben - leider bekomme ich eine Zugriffsverletzung, wenn ich diese ausführen will.
Meine Prozedur:
Delphi-Quellcode:
Ich habe sie beim beenden der Anwendung aufgerufen. - Kann mir jemand beim beheben des Fehlers helfen???
procedure Tfrm_main.prcSaveSettings;
var ini: TIniFile; i: integer; begin ini := ini.Create('settings.ini'); try if s_SaveRes = 1 then begin ini.WriteInteger('Resolution', 'Save', 1); ini.WriteInteger('Resolution', 'Height', frm_main.Height); ini.WriteInteger('Resolution', 'Width', frm_main.Width); end else begin ini.WriteInteger('Resolution', 'Save', 0); ini.WriteInteger('Resolution', 'Height', 466); ini.WriteInteger('Resolution', 'Width', 641); end; if frm_settings.cbStartMax.Checked then begin ini.WriteInteger('Start', 'StartMax', 1) end else ini.WriteInteger('Start', 'StartMax', 0); begin end; if frm_settings.rbShowAllTables.Checked then begin ini.WriteInteger('TableOptions', 'ShowAll', 1); ini.WriteInteger('TableOptions', 'ShowSelected', 0); end; if frm_settings.rbShowThisTables.Checked then begin ini.WriteInteger('TableOptions', 'ShowAll', 0); ini.WriteInteger('TableOptions', 'ShowSelected', 1); end; frm_settings.lbTables.Items.SaveToFile(APPPATH + TABLEFILE); finally ini.Free; end; end; Gruß, |
Re: INI Problem
Schon mal in Einzelschritten debuggt und gekuckt wo die Zugriffsverletzung kommt?
BTW:
Delphi-Quellcode:
Dass er die Ini beim Programm start findet ist reine Glückssache. Gib lieber den genauen Ort der Ini mit einer relativen Pfadangabe an.
ini := ini.Create('settings.ini');
|
Re: INI Problem
Ich habs jetzt mal so versucht..
Delphi-Quellcode:
Ich hab die Datei jetzt schon manuell angelegt - trotzdem -> der Fehler kommt :gruebel:
..
const INIFILE = 'settings.ini'; .. APPPATH := ExtractFilePath(Application.ExeName); .. ini := ini.Create(APPPATH+INIFILE); //Beim einzel Debuggen kam hier die Fehlermeldung - weiter kommt er nicht. |
Re: INI Problem
Hallo Akut-Programming,
versuche es mal so.
Delphi-Quellcode:
Hast du eventuell vergessen bei uses inifiles hinzuzufügen?
ini:=TInifile.Create('Pfad');
Tschüß Markus |
Re: INI Problem
Genauso hat er es doch. Aber ich sehe da auch keinen Fehler.
|
Re: INI Problem
Zitat:
Delphi-Quellcode:
ini.Create(APPPATH+INIFILE);// APPPATH Wurde mit dem Pfad zu meiner Anwendung belegt und INIFILE ist ne Konstante, die den Namen enthält!
|
Re: INI Problem
Zitat:
|
Re: INI Problem
Hi,
ähm... :gruebel: Was ich gelernt habe, war, dass man Klassen/Objekte immer folgendermaßen initialisieren muss:
Delphi-Quellcode:
Folglich müsste es folgendermaßen aussehen:
var
aVar: TMeineKlasse; // ... aVar := TMeineKlasse.Create({u.U. Parameter})
Delphi-Quellcode:
Chris
ini := TIniFile.Create('settings.ini');
|
Re: INI Problem
Sorry, bin blind :oops: .
Was bringt er denn für ne Fehlermeldung? Tschüß Markus |
Re: INI Problem
Zitat:
|
Re: INI Problem
Hm, wenn ich mich recht entsinne, wird die Ini-Datei ohne Pfadangabe in das Windowsverzeichnis geschrieben. Hast du da Schreibrechte? Aber es kommt mir schon komisch vor, dass du im anwendungsverzeichnis nichts anlegen kannst, denn das sollte ja zur Zeit das Verzeichnis sein in dem dein Projekt liegt und da solltest du Schreibrechte haben. Komisch irgendwie. :gruebel:
|
Re: INI Problem
Hab mal geguckt, die Datei liegt nirgends. Er speichert sie einfach nicht. Habe alle Rechte - daran sollte es also nicht liegen. :gruebel:
|
Re: INI Problem
Ich handhabe das Laden und Speichern von Inis immer so:
Delphi-Quellcode:
Kann sein, dass ich irgendwo mal gelesen habe, dass die TIniFile.Create die Datei nicht erstellt, wenn sie nicht vorhanden ist. Auf jeden Fall habe ich gerade nochmal ein wenig durch die Hilfe geblättert und nirgends gefunden, dass sie erstellt wird.
if not FileExists(sIniName) then
begin {$I-} AssignFile(SettingsIniFile, sIniName); Rewrite(SettingsIniFile); CloseFile(SettingsIniFile); {$I+} end; // if not FileExists(sIniName) then if IOResult = 0 then begin // Aufruf mit sIniName = ExtractFilePath(Application.ExeName) + 'name.ini' MyIni := TIniFile.Create(sIniName); with MyIni do begin .. end; // with MyIni do end; // if IOResult = 0 then Naja, jedenfalls verwende ich das immer so, ob das die Endlösung ist sei mal dahingestellt. :P |
Re: INI Problem
Zitat:
Ansonsten fehlt deinem Code noch die Exception-Behandlung. @Akut-Programming: Hast du das mal mit einzelschritt mit der Korrigierten ini:=TINIFile.Create(..) gemacht - fliegt er immernoch an der selben stelle raus? |
Re: INI Problem
Zitat:
Das Create erzeugt nur ein Objekt, das den Filenamen 'verwaltet', siehe VCL-Source. Wenn man das INI-Fileobjekt mit "TIniFile.Create('...')" anlegt, kann es, völlig unabhängig vom Dateinamen, eigentlich keine Schutzverletzung geben. Eine Schutzverletzung spricht eher dafür, dass im Sourcecode noch "Ini.Create..." steht, wie schon ganz oben angesprochen. Gruß, teebee |
Re: INI Problem
Hi,
so mach ich das immer:
Delphi-Quellcode:
Ratte
ini := Tinifile.Create(extractfilepath(paramstr(0))+'settings.ini');
|
Re: INI Problem
Abend
Zitat:
Zitat:
Gruß, |
Re: INI Problem
Hallo Akut-Programming,
kann sein das ich beim querlesen was übersehen habe, aber einige haben Dir schon gezeigt, wie das Ini-Objekt erzeugt werden muß:
Code:
Hast Du das in Deinem Code schon angepasst?
ini := ini.Create(<PfadUndDateiname>); // Falsch
ini := [b][color=red]TIniFile[/color][/b].Create(<PfadUndDateiname>); // <-- Objekt korrekt erzeugen [EDIT] VERGISS ES- ICH HABE BEIM QUERLESEN TATSÄCHLICH WAS ÜBERLESEN, SORRY :oops: [/EDIT] |
Re: INI Problem
Jetzt fragt mich nich wie ichs gemacht hab, aber zumindest gehts... ich kam grad auf Arbeit, mache den Computer an und starte Delphi und meine Anwendung - aufeinmal funzt es. :gruebel: Muss ich das verstehen??
Gruß, |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz