AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ini laden -> Programm stürzt ab

Ein Thema von citybreaker · begonnen am 2. Okt 2004 · letzter Beitrag vom 3. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
citybreaker
(Gast)

n/a Beiträge
 
#1

Ini laden -> Programm stürzt ab

  Alt 2. Okt 2004, 12:47
Hallo,
irgendwie stürtzt mein Programm bei dem Laden einer Ini Datei immer ab.
Ich hab folgenden Code.
Delphi-Quellcode:
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;
Und noch die Fehlermeldung. -.-'
Zitat:
Im Projekt projekt1.exe ist eine Exception der Klasse EAccessViolation aufgetreten.
Meldung: 'Zugriffs verletzung bei Adresse 00404014 in Modul 'Projekt1.exe'. Schreiben
von Adresse 00000004'. Prozess wurde angehalten.
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Ini laden -> Programm stürzt ab

  Alt 2. Okt 2004, 12:52
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??
monster := TFigur.Create; das muss vor dem ersten zugriff auf monster geschehen

Aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von Manzoni
Manzoni

Registriert seit: 15. Feb 2004
Ort: Berlin
120 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Ini laden -> Programm stürzt ab

  Alt 2. Okt 2004, 12:54
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.
Bob
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Ini laden -> Programm stürzt ab

  Alt 2. Okt 2004, 13:02
Zitat von Manzoni:
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.
das mit "Name" bringt den fehler nicht. das originale "name" ist auch nur ein string, so wie die obige deklaration. eine zuweisung sollte deshalb kein EAV bringen.

Aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Ini laden -> Programm stürzt ab

  Alt 2. Okt 2004, 13:08
Aber name ist eine Objekteigenschaft der VCL.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
citybreaker
(Gast)

n/a Beiträge
 
#6

Re: Ini laden -> Programm stürzt ab

  Alt 2. Okt 2004, 13:16
Zitat von Aenogym:
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??
monster := TFigur.Create; das muss vor dem ersten zugriff auf monster geschehen

Aenogym
Danke, hier dran lag es.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Ini laden -> Programm stürzt ab

  Alt 2. Okt 2004, 13:27
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
  Mit Zitat antworten Zitat
citybreaker
(Gast)

n/a Beiträge
 
#8

Re: Ini laden -> Programm stürzt ab

  Alt 2. Okt 2004, 13:53
Zitat von Muetze1:
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
Kenn mich mit Klassen nicht so aus. Ist heut das erste mal.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Ini laden -> Programm stürzt ab

  Alt 2. Okt 2004, 15:08
Dann kuck dir mal mein entsprechendes Tutorial dazu an: http://tutorials.luckie-online.de
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Ini laden -> Programm stürzt ab

  Alt 2. Okt 2004, 15:16
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:
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;
und irgendwann auch mal wieder monster.free falls du mehrere hast und eins stirbt mal oderso
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz