2017-03-10 3 views
0

J'ajoute des fonctions pour TPoint et si j'utilise le même nom que la fonction globale, je ne peux pas le voir dans la fonction auxiliaire. Ai-je manqué quelque chose ou je ne peux pas simplement faire ça?Surcharge des fonctions globales dans les helpers

uses Winapi.Windows, Math; 

type 
    TPointHelper = record helper for TPoint 
    function InRange(const AMin, AMax: TPoint): Boolean; 
    end; 

implementation 

function TPointHelper.InRange(const AMin, AMax: TPoint): Boolean; 
begin 
    Result := InRange(X, AMin.X, AMax.X) and InRange(Y, AMin.Y, AMax.Y); 
end; 

end. 

Répondre

2

Vous devez qualifier complètement l'appel à InRange parce que le compilateur voit le InRange dans le plus proche périmètre. Quelle est votre méthode d'assistance. Votre code devrait être:

function TPointHelper.InRange(const AMin, AMax: TPoint): Boolean; 
begin 
    Result := Math.InRange(X, AMin.X, AMax.X) and Math.InRange(Y, AMin.Y, AMax.Y); 
end; 
+0

Est-il possible d'utiliser la fonction surchargée de 'InRange' dans le même appareil? – Triber

+0

Vous pouvez le faire de la même manière, en utilisant le nom de l'unité pour qualifier pleinement le nom –

+0

Merci cela fonctionne. J'ai vraiment pensé que lorsque la fonction est dans la même unité, je n'ai pas besoin de qualifier complètement le nom. – Triber