Hallo!
Ich habe ein sehr seltsames Problem
ich habe ein variables array " array test: of TBeispiel" und TBeispiel ist so deklariert
Quelltext
1: 2: 3: 4: 5:
| TBeispiel=class(TObject) zahl1:integer; feld:array of Tkeineahnung; zahl2:integer; end; |
so wenn ich nun mein array mit setlength um eins vergrößere muss ich das neue Element ja instanzieren und zwar an der Stelle
Quelltext
1:
| test[length(test)-1]:=TBeispiel.create; |
das funktioniert auch alles super. wenn ich jetzt dsa array um eins verkleinere, ist es ja elegant, das letzte Element wieder freizugeben also mit
Quelltext
1:
| test[length(test)-1].free; |
und dann mit setlength um eins verkleinern wenn ich es aber mache, dann wird von dem vorletzten Atom die letzte Deklaration mit vernichtet also die letzte Deklaration von TBeispiel am vorletzten Feld. in diesem Fall wräe dsa zahl2. Die ist dann für das vorletzte Element nicht mehr verfügbar.
wenn ich in der Deklaration von TBeispiel die Reihenfolge vertausche, wird immer am vohrigen Element des arrays dieser Wert mit freigegeben.
Woran liegt das ?
Vielen Dank
Björn
(11.10.02 17:13 Tino) Code-Tags hinzugefügt.