![]() |
Ini laden -> Programm stürzt ab
Hallo,
irgendwie stürtzt mein Programm bei dem Laden einer Ini Datei immer ab. Ich hab folgenden Code.
Delphi-Quellcode:
Und noch die Fehlermeldung. -.-'
type
TFigur = class procedure LoadStats; private // Genral stats Name: String; Typ: String; Alter: String; Sex: String; Groesse: String; Gewicht: String; Level: String; // Feeling Hunger: String; Durst: String; Happy: String; Muedigkeit: String; Harndrang: String; Gesundheit: String; Disziplin: String; public end; var MainFrm: TMainFrm; Monster: TFigur; ... procedure TFigur.LoadStats; var Ini: TIniFile; begin Ini := TIniFile.Create(ExtractFilePath(Application.Exename) + 'stats.ini'); with Monster do begin Name := Ini.ReadString('Settings', 'Name', ''); Typ := Ini.ReadString('Settings', 'Typ', ''); Alter := Ini.ReadString('Settings', 'Alter', ''); Sex := Ini.ReadString('Settings', 'Sex', ''); Groesse := Ini.ReadString('Settings', 'Groesse', ''); Gewicht := Ini.ReadString('Settings', 'Gewicht', ''); Level := Ini.ReadString('Settings', 'Level', ''); Hunger := Ini.ReadString('Settings', 'Hunger', ''); Durst := Ini.ReadString('Settings', 'Durst', ''); Happy := Ini.ReadString('Settings', 'Happy', ''); Muedigkeit := Ini.ReadString('Settings', 'Muedigkeit', ''); Harndrang := Ini.ReadString('Settings', 'Harndrang', ''); Gesundheit := Ini.ReadString('Settings', 'Gesundheit', ''); Disziplin := Ini.ReadString('Settings', 'Disziplin', ''); end; Ini.Free; end; procedure TMainFrm.Button1Click(Sender: TObject); begin Monster.LoadStats; end; Zitat:
|
Re: Ini laden -> Programm stürzt ab
hi,
EAccessViolation deutet meist auf ein nicht-initialisiertes objekt hin. hast du schonmal per BreakPoints geschaut, wann der Fehler auftritt? edit: hast du diene figur scxhon erstellt??
Delphi-Quellcode:
das muss vor dem ersten zugriff auf monster geschehen ;)
monster := TFigur.Create;
Aenogym |
Re: Ini laden -> Programm stürzt ab
Ich vermute mal, es liegt an der Eigenschaft 'Name'. Versuchs mal mit einem anderen Bezeichner, zum Beispiel 'Kennung'. Evtl. kanns auch daran liegen, dass monster noch nicht kreiert wurde.
|
Re: Ini laden -> Programm stürzt ab
Zitat:
Aenogym |
Re: Ini laden -> Programm stürzt ab
Aber name ist eine Objekteigenschaft der VCL.
|
Re: Ini laden -> Programm stürzt ab
Zitat:
|
Re: Ini laden -> Programm stürzt ab
Moin!
1. Name ist bei TObject noch nicht vorhanden als Eigenschaft. 2. With Figur Do - was soll der M*ll? Du greifst innerhalb einer Klasse auf eine feste Objektinstanz ausserhalb der Klasse zu? Mit anderen Worten: Egal wieviele Instanzen du erstellst, keine kann individuelle Eigenschaftswerte haben? Wozu dann überhaupt OOP? Das kannst doch dann gleich sein lassen... Wenn du das nicht so haben willst wie du es getan hast, sondern ordentlich, dann einfach mal das With / Do komplett rausschmeissen und einfach nur den Inhalt des Konstrukts stehen lassen... MfG Muetze1 |
Re: Ini laden -> Programm stürzt ab
Zitat:
|
Re: Ini laden -> Programm stürzt ab
Dann kuck dir mal mein entsprechendes Tutorial dazu an:
![]() |
Re: Ini laden -> Programm stürzt ab
monster := Tfigur.create;
fehlt und du solltest einfach with Monster do weglassen weil innerhalb einer procedure die du in einer klasse hast können die klassenvariablen ohne blabla.variablenname angesprochen werden (sind ja in der gleichen klasse -> logischerweise direkt ansprechbar )
Delphi-Quellcode:
und irgendwann auch mal wieder monster.free falls du mehrere hast und eins stirbt mal oderso ;)
type
TFigur = class procedure LoadStats; private // Genral stats Name_: String; Typ: String; Alter: String; Sex: String; Groesse: String; Gewicht: String; Level: String; // Feeling Hunger: String; Durst: String; Happy: String; Muedigkeit: String; Harndrang: String; Gesundheit: String; Disziplin: String; public end; var MainFrm: TMainFrm; Monster: TFigur; ... procedure TFigur.LoadStats; var Ini: TIniFile; begin try Ini := TIniFile.Create(ExtractFilePath(Application.Exename) + 'stats.ini'); Name_ := Ini.ReadString('Settings', 'Name', ''); Typ := Ini.ReadString('Settings', 'Typ', ''); Alter := Ini.ReadString('Settings', 'Alter', ''); Sex := Ini.ReadString('Settings', 'Sex', ''); Groesse := Ini.ReadString('Settings', 'Groesse', ''); Gewicht := Ini.ReadString('Settings', 'Gewicht', ''); Level := Ini.ReadString('Settings', 'Level', ''); Hunger := Ini.ReadString('Settings', 'Hunger', ''); Durst := Ini.ReadString('Settings', 'Durst', ''); Happy := Ini.ReadString('Settings', 'Happy', ''); Muedigkeit := Ini.ReadString('Settings', 'Muedigkeit', ''); Harndrang := Ini.ReadString('Settings', 'Harndrang', ''); Gesundheit := Ini.ReadString('Settings', 'Gesundheit', ''); Disziplin := Ini.ReadString('Settings', 'Disziplin', ''); finally Ini.Free; end; end; procedure TMainFrm.Button1Click(Sender: TObject); begin monster := Tfigur.create; Monster.LoadStats; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 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