在助手中重载全局函数

Overloading global functions in helpers

我正在为 TPoint 添加一些函数,如果我使用与全局函数相同的名称,我在辅助函数中看不到它。我是不是遗漏了什么或者我不能简单地做到这一点?

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.

您需要完全限定对 InRange 的调用,因为编译器会在最近的范围内看到 InRange。这是你的帮助方法。您的代码应为:

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;