Autor Beitrag
carlyle
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 08.05.12 14:52 
Hallo Leute,
Ich hab ein kleines Problem, undzwar habe ich eine Klasse erstellt und davon eine Instanz als Array erstellt:
ausblenden 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:

ausblenden 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:

ausblenden 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:

ausblenden 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 user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 08.05.2012 um 15:33


Zuletzt bearbeitet von carlyle am Di 08.05.12 15:16, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden 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.


Zuletzt bearbeitet von jaenicke am Di 08.05.12 16:11, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: carlyle
carlyle Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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!