![]() |
2 unerklärliche Fehlermeldungen
Hallo!
Ich bekomme zwei Fehlermeldungen die ich mir nicht erklären kann. Die erste ist vom Typ "" ist kein Itegerwert, die zweite "ungültige Zeigeroperation", in dieser Reihenfolge. In diesem Bereich des Programmtextes treten Sie auf:
Delphi-Quellcode:
Aufteilen gibt als Werte ein Array[0..3]of String zurück
procedure TKonsole.LadeGrundgebaeude;
var i,i2:Integer; a:String; begin try GrundGebaeude:=TobjectList.Create; Aufteilen:=TAufteilen.Create; Form1.Memo1.Clear; Form1.Memo1.Lines.LoadFromFile('data/Gebäude.dat'); for i:=0 to Form1.Memo1.Lines.Count-1 do begin a:=Form1.Memo1.Lines[i]; delete(a,3,length(a)); if a<>'//' then begin Aufteilen.Explode(Form1.Memo1.Lines[i],','); i2:=Grundgebaeude.Add(TGrundgeb.Create); (Grundgebaeude.Items[i2] as TGrundgeb).ID:=StrToInt(Aufteilen.Werte[0]); //Byte (Grundgebaeude.Items[i2] as TGrundgeb).Name:=Aufteilen.Werte[1]; //String (Grundgebaeude.Items[i2] as TGrundgeb).Name2:=Aufteilen.Werte[2]; //String (Grundgebaeude.Items[i2] as TGrundgeb).Index:=StrToInt(Aufteilen.Werte[3]);//Byte end; end; finally Aufteilen.Free; end; end; Die Prozedur wird über einen Timer Aufgerufen, ca. 250 Milisekunden nach Anwendungsstart:
Delphi-Quellcode:
Hier wird die Konsole erstellt:
procedure TForm1.TimerStartTimer(Sender: TObject);
begin Konsole.LadeGrundgebaeude; TimerStart.Enabled:=False; end;
Delphi-Quellcode:
Der Inhalt der Datei ist so aufgebaut:
procedure TForm1.FormCreate(Sender: TObject);
begin randomize; Einstellungen:=TEinstellungen.Create; menueaktiv:=False; menueBtn.Enabled:=False; AnzahlStaedte:=0; Ansicht:=0; Index:=1; AktiveTown:=-1; Konsole:=TKonsole.Create; ID:=0; Laeden:=TObjectList.Create; Productions:= TObjectList.Create; end;
Delphi-Quellcode:
Sieht jemand den Fehler?
//Hier kann ein Kommentar stehen
1,Spielwarenladen,Spielwarenfabrik,1 2,Sportgeschäft,Sportindustrie,1 |
Re: 2 unerklärliche Fehlermeldungen
Überprüf doch mal per Debugger, in welcher Zeile das auftritt. Die ungültige Zeigeroperation könnte durch den Downcast auf TGrundgeb verursacht werden.
|
Re: 2 unerklärliche Fehlermeldungen
Ich vermute den Fehler in TAufteilen.
|
Re: 2 unerklärliche Fehlermeldungen
Wo hast du den ungültigen Integer Wert? Enthaält Wert[0] auch einen gültigen Integer?
|
Re: 2 unerklärliche Fehlermeldungen
Die Werte hab ich überprüft. Stimmen alle.
Hab jetzt haltepunkte gesetzt, der Fehler muss hier oder dannach auftreten:
Delphi-Quellcode:
Das Objekt sieht so aus:
(Grundgebaeude.Items[i2] as TGrundgeb).Index:=StrToInt(Aufteilen.Werte[3]);
Delphi-Quellcode:
Edit: In der Oben genannten Zeile kann ich auch keinen normalen Integerwert wie z.B. 5 zuweisen. setzte ich den Haltepunkt in diese Zeile, so kommt keine Fehlermeldung, erst dannach.
type TGrundGeb = class
ID: Byte; Name,Name2: String; Index:Byte; end; |
Re: 2 unerklärliche Fehlermeldungen
Geh mit dem Evaluator ran.
Ich vermute mal, dass Grundgebaeude.Items[i2] kein TGrundgeb ist und Aufteilen.Werte[3] keine String-Repräsentation eines Integers. |
Re: 2 unerklärliche Fehlermeldungen
WIe funktioniert des mit dem Evaluator? Habs noch nie gemacht....
|
Re: 2 unerklärliche Fehlermeldungen
Haltepunkt setzen, wenn er anhält Strg+F7 setzen und die Variablennamen/Anweisungen eingeben, deren Wert/Ergebnis du wissen willst.
|
Re: 2 unerklärliche Fehlermeldungen
OK, ich habs versucht mit Grundgebaeude.FindInstanceOf(TGrundGeb), bringt mir aber nur "Die aufzurufende Funktion TObjectList.FindInstanceOf wurde vom Linker entfernt"
Grundgebaeude.Items[i2] bringt nur () Für Aufteilen.Werte[3]: '1' also eine Stringreräsentation eines Integers An Aufteilen kanns eigentlich nicht liegen, das verwende ich genau so schon längere Zeit in mehreren Verschiedenen Projekten, wo es auch immer gut funktioniert hat. |
Re: 2 unerklärliche Fehlermeldungen
Hi,
dann schalt mal die Optimierung aus, dann klappts auch mit dem Evaluator. Gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 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