Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Delphi Exception Problem
carlyle - Di 08.05.12 14:52
Titel: Delphi Exception Problem
Hallo Leute,
Ich hab ein kleines Problem, undzwar habe ich eine Klasse erstellt und davon eine Instanz als Array erstellt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| type CSpieler = Class public ID, Kapital, Position : Integer; Name : String; Lebendig : Boolean; end;
var Spieler : array of CSpieler; |
Im späteren Verlauf des Programmes wird die Anzahl der Spieler festgelegt und folgisch der Array über eine andere Unit um diese Anzahl erweitert:
Delphi-Quelltext
1: 2:
| AnzahlSpieler := StrToInt(ComboBox1.Text); SetLength(Spieler,AnzahlSpieler); |
In einer weiteren Unit benutze ich den create Befehl und Initialiere ein paar Member der Klasse:
Delphi-Quelltext
1: 2: 3:
| Spieler[Zug]:=CSpieler.create; Spieler[Zug].ID := Zug; Spieler[Zug].Name := EName.Text; |
Das ist kein Problem.
Aber nun will ich diese Werte in wieder einer neuen Unit abrufen, aber wenn ich das tue bekomme ich beim start des Programmes einen Exception Fehler:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TFFeld.FormCreate(Sender: TObject); begin Panel1.Caption:=Spieler[Zug].Name; end; |
Ich weiß nicht genau wo der Fehler ist.
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Di 08.05.2012 um 15:33
jaenicke - Di 08.05.12 15:11
Hallo und :welcome: im Forum!
Bitte benutze doch die Delphi- statt Highlight-Tags, das ist
geringfügig ;-) leichter lesbar:
Quelltext
1:
| <span class="inlineSyntax"><span class="codecomment">{PROTECTTAGc1c1eac8c870ca44647fff593d9bb0b2}</span></span> |
Zum Problem:
Dein FormCreate wird vermutlich vor der Zeile ausgeführt, in der du
CSpieler.create aufrufst. Deshalb ist die Instanz
Spieler[Zug] noch gar nicht da. Ist Zug da eigentlich schon initialisiert?
Schalte am besten auch einmal die Bereichsprüfung in den Projektoptionen an. ;-) Und dann kannst du einmal einen Haltepunkt auf die beiden genannten Codezeilen setzen und schauen wo das Programm zuerst ankommt. Im Debugger kannst du die Werte auch prüfen.
carlyle - Di 08.05.12 15:26
Tatsache, die CSpieler.Create routine wird erst nach einem Buttonklick aufgerufen, in der dpr Datei wird aber beim Start von jeder form die FormCreate Routine aufgerufen.
Vielen Dank!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!