Einzelnen Beitrag anzeigen

Pixel

Registriert seit: 23. Aug 2016
26 Beiträge
 
#1

record mit dynamischem objekt

  Alt 19. Feb 2017, 10:19
Delphi-Version: 5
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?

Geändert von Pixel (19. Feb 2017 um 10:22 Uhr)
  Mit Zitat antworten Zitat