2017-03-10 4 views
0

Ich füge einige Funktionen für TPoint hinzu und wenn ich den gleichen Namen wie die globale Funktion verwende, kann ich es nicht innerhalb der Hilfsfunktion sehen. Fehle ich etwas oder kann ich das nicht einfach tun?Globale Funktionen in Helfern überladen

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. 

Antwort

2

Sie müssen vollständig um den Anruf zu InRange qualifizieren, weil der Compiler die InRange im engsten Rahmen sieht. Welches ist Ihre Hilfsmethode? Ihr Code sollte lauten:

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

Gibt es eine Möglichkeit, wie überladene Funktion von 'InRange' in der gleichen Einheit zu verwenden? – Triber

+0

Sie können es auf die gleiche Weise tun, mit dem Gerätenamen, um den Namen vollständig zu qualifizieren –

+0

Danke, es funktioniert. Ich dachte wirklich, dass, wenn die Funktion in derselben Einheit ist, ich den Namen nicht vollständig qualifizieren muss. – Triber

Verwandte Themen