2010-05-09 6 views
3

Je me demandais s'il y avait un moyen de faire un tableau qui aurait plusieurs types de champs de données.Tableau avec plusieurs types?

Jusqu'à présent, j'utilisais aMyArray: array of array [0..1] of TPoint;

Mais maintenant, il ne suffit pas pour moi. Je dois ajouter 3 autres éléments aux éléments 2 « Point » existantes qui en fait un tableau comme aMyArray: array of (TPoint,TPoint,real,real,real)

Ainsi, chaque élément de aMyArray aurait 5 « enfants », dont 2 sont d'un type de TPoint et 3 d'entre eux sont type "réel".

Est-ce possible de mettre en œuvre d'une manière ou d'une autre?

Répondre

12

Peut-être un disque comme

TMyType = record 
    Points: array[0..1] of TPoint; 
    Floats: array[0..2] of Real; 
end; 

ou

TMyType = record 
    Point0: TPoint; 
    Point1: TPoint; 
    Float0: Real; 
    Float1: Real; 
    Float2: Real; 
end; 

travaille pour vous.

+0

+1. Les structures avec des nombres fixes d'éléments avec des types hétérogènes sont exactement ce que les enregistrements sont pour. –

+0

Ceci est la * solution *. –

+0

Un indice significatif étant que 'TPoint' lui-même est un enregistrement. – afrazier

0

Vous pouvez utiliser un tableau de variantes pour stocker différentes données dans chaque élément. Mais les tableaux ont été conçus pour stocker des données homogènes. Si vos besoins en stockage de données sont plus complexes, commencez par rechercher différents conteneurs.

+0

Les variantes ne peuvent pas contenir d'enregistrements tels que TPoint. –

0

J'utiliserais une TStringList ou une décendrice, avec AddObject.

+0

Vraiment? Pourriez-vous le démontrer, s'il vous plaît? –

+0

en utilisant beaucoup de memmory sans besoin ... – Astronavigator

0

Vous pouvez également utiliser des enregistrements de variantes. Pour un exemple see this

Questions connexes