2012-01-05 8 views
1

J'ai le problème suivant en essayant de compiler certains composants dans XE2. Ces composants n'étaient pas préparés pour XE2, mais j'essaie de les compiler de toute façon.Utilisation de TPointerList Delphi XE2

dans un composant, il est déclaré comme

FList : TList; 

lorsqu'il est utilisé, il est par exemple comme

SomeVariable := Integer(FList.List^[i]); 

Il produit « de type pointeur requis » erreur de compilation.

Je corrigera comme ça

SomeVariable := Integer(FList.List[i]); 

mais Dieu sait combien de temps aurais-je besoin de corriger toutes les occurences d'erreur.

Y a-t-il une directive de compilation, ou un paramètre qui peut gérer cela? J'ai essayé {$ X} et {$ T} sans effet.

Dans Delphi XE2 TPointerList (propriété TList.List) est déclarée comme tableau dynamique

type TPointerList = array of Pointer; 

Si quelqu'un peut aider?

+0

Non, vous devez changer le code d'un tiers. Ou obtenir une mise à jour du fournisseur de code. –

+0

En outre, votre "correction" est incorrecte. Vous voulez dire: 'Entier (FList.List [i])' –

+0

Je pense que vous ne devriez jamais appeler un "tableau de X" une "liste", surtout dans une déclaration de type. Une telle confusion ne fera qu'ennuyer les gens. Les TList-types ont des méthodes Add (x), par exemple, alors que Arrays ne sont pas du tout des types d'objets, et vous devez utiliser SetLength à la place. Ainsi, "TSomethingList" n'est pas un bon nom pour un alias de "Array of Pointer". –

Répondre

1

a) Entier (FList [i]) fonctionnerait également.

b) Il n'y a pas de réglage de ce type.

c) Peut-être que vous pouvez Rechercher & Remplacer .List^[-> [?

+1

Je vais utiliser Search & Replace comme ça. Je viens de découvrir que TList.List a été changé en XE2, c'était PPointerList avant XE2 ... – Sofija