Hallo,
ich wusste nicht wie ich den Titel vergeben sollte, ist wahrscheinlich falsch, naja ich beschreibe mal mein Vorhaben.
Ich habe diese 4 records:
Delphi-Quellcode:
TDot = packed record
Coordinates : TPoint;
Offset : Integer;
end;
TSlider = packed record
Coordinates : array of TPoint;
Offset : Integer;
Length : Single;
SliderType : TSliderType;
Repetitions : Integer;
end;
TSpinner = packed record
Offset : Integer;
Length : Integer;
end;
THitObject = packed record
Coordinates : array[0..0] of Integer;
Offset : Integer;
HitObjectType : THitObjectType;
HitObject : Pointer;
end;
Im Prinzip geht es um das letzte record
THitObject
. Man sieht am Ende die Deklaration
HitObject : Pointer
. Hier würde ich gerne in Abhgängikeit von
HitObjectType
(
TDot
,
TSlider
oder
TSpinner
), was während der Laufzeit bekannt wird, das zugehörige Objekt in
HitObject
stehen haben.
Also angenommen
HitObjectType
wäre
TSpinner
, dann sollte
HitObject
ein
TSpinner
sein.
Mein Ansatz:
Ich glaube man müsste die Objekte global deklarieren, also z.B. in private, weil sie sonst nicht mehr gültig sein würden, bei Beendigung der Prozdeur wo das alles ermittelt wird oder?
Also:
Delphi-Quellcode:
private
var Sliders : array of TSlider;
Und dann in zur Laufzeit mit
SetLength(Sliders, X)
und
HitObject := @Sliders[X]
.
Mir kommt das unsauber vor.
Wie würdet ihr sowas machen?