2011-04-12 8 views
3

Compte tenu de ce qui suit:coulée de type à un tableau dynamique

Type 
    TSomeTypeArray = array of SomeType; 

var 
    anArray: array of SomeType; 

function GetSomeTypeArray: TSomeTypeArray; 

Je veux écrire anArray = GetSomeTypeArray(); mais le compilateur ne l'aime pas. Sans changer le type de anArray ou le type de retour de GetSomeTypeArray comment puis-je typé TSomeTypeArray à array of SomeType?

Répondre

3

Vous ne pouvez pas. Vous devez déclarer anArray à partir du type TSomeTypeArray, alors cela devrait fonctionner.

Sinon, vous pouvez stocker le résultat dans un autre tableau de type TSomeTypeArray puis appelez SetLength sur anArray à la longueur du tableau retourné. Enfin, parcourez les deux tableaux en définissant les éléments de anArray sur les éléments du tableau renvoyé.

+0

pas la réponse que je voulais: P mais grâce – Asher

+0

Ouais, désolé. AFAIK c'est le seul moyen, et puisque personne d'autre n'a introduit avec une alternative. . . –

4

Vous pouvez typer le côté gauche de l'affectation:

TSomeTypeArray(anArray) := GetSomeTypeArray(); 
+0

Du côté gaucher typecast <- cela me bouleverse tellement – user1249190