![]() |
AW: Private Variable "verweigert Zutritt"
In jeder Sprache brauchst du einen Konstruktor.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Augen: Integer; begin FWuerfel.Werfen; Augen := FWuerfel.Augen; case Augen of 1: // mach was hier; 2: // mach was hier; 3: // mach was hier; 4: // mach was hier; 5: // mach was hier; 6: // mach was hier; end; end; |
AW: Private Variable "verweigert Zutritt"
Hallo,
da du c++ erwähnst. YSo wie du es hier geschrieben hast, sind es globale Variablen. Bei lokalen würde c++ die Klassen selber erzeugen class TWuerfel { } void TuWas() { TWuerfel Wuerfel[3]; } In Delphi sind Klassen immer Pointer, etwas so (mein c++ ist etwas eingerostet) Du hast also ein Array von TWuerfel-Pointern angelegt. Due Array muss auch wieder freigeben werden (In Delphi Wuerfel[0].Free) ! void TuWas() { TWuerfel* Wuerfel[3]; } Du muss also erst Instancen erzeugen new Wuerfel[0] (oder so ähnlich) etwas einfacher ist es in Delphi mit dynamic arrays Wuerfel: array of TWuerfel; Initialisierung SetLength(Wuerfel,3) Wuerfel[0] Wuerfel[1] Wuerfel[2] In paar Hilfsfunktionen Low(Wuerfel) -> 0 High(Wuerfel) -> 2 Freigabe Wuerfel:= NIL; Heiko |
AW: Private Variable "verweigert Zutritt"
Zitat:
Auch bei dynamischen Arrays müssen die Instanzen erzeugt werden! Initialisierung:
Delphi-Quellcode:
Freigabe:
SetLength(Wuerfel,3)
Wuerfel[0] := TWuerfel.Create; Wuerfel[1] := TWuerfel.Create; Wuerfel[2] := TWuerfel.Create;
Delphi-Quellcode:
Eine Freigabe durch die Zuweisung von NIL erfolgt nur wenn es sich um ein Interfaces handelt!!!
Wuerfel.Free;
|
AW: Private Variable "verweigert Zutritt"
Zitat:
Delphi-Quellcode:
oder
Wuerfel := nil;
Delphi-Quellcode:
, wobei Delphi dynamische Arrays auch automatisch freigibt, genauso wie die Interfaces.
SetLength(Wuerfel, 0);
Aber die TWuerfel-Instanzen müssen vorher noch freigegeben werden
Delphi-Quellcode:
(am Einfachsten in einer Schleife, welche das Array durchgeht)
Wuerfel[i].Free;
PS: Genau deswegen hat man die ![]() |
AW: Private Variable "verweigert Zutritt"
Was ich in meinem Beispiel vergessen habe, ist das Freigeben der Instanz mit Free.
|
AW: Private Variable "verweigert Zutritt"
(Diesmal für mich: AUTSCH!!!)
Natürlich meinte ich
Delphi-Quellcode:
!!
Wuerfel[0].Free
|
AW: Private Variable "verweigert Zutritt"
Hallo,
klar muss das Wuerfel[i] erzeugt werden ;( ich war auf Records aus. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 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 by Thomas Breitkreuz