分享间隔,内置Delphi功能?

时间:2014-06-08 14:33:54

标签: delphi

我必须找到INTERVALL-1 = [x1.....y1]的共享间隔 和INTERVALL-2 := [x2 .....y2]

所有都是简单的实际值定义的间隔。 Delphi语法中是否有任何内置函数或一些免费的东西,我可以自己获得共享范围而无需特殊编码?

我想避免的事情:

 procedure Findintervall ( ...........)
 begin
 if x1 < x2 then  
   if ....
      if .... 
         if 

 end;

猜猜这可能是代码,但5个月后难以阅读。

1 个答案:

答案 0 :(得分:5)

没有任何内置功能,但编写该功能并不是很困难。您可以使用显式if语句编写它。或者,您可以使用Min单元中的MaxMath。像这样:

type
  TInterval = record
  public
    Left: Double;
    Right: Double;
  public
    class function New(const Left, Right: Double): TInterval; static;
    class function Intersection(const A, B: TInterval): TInterval; static;
  end;

const
  NullInterval: TInterval = (Left: NaN; Right: NaN);

class function TInterval.New(const Left, Right: Double): TInterval;
begin
  Result.Left := Left;
  Result.Right := Right;
end;

class function TInterval.Intersection(const A, B: TInterval): TInterval;
begin
  Assert(A.Left<=A.Right);
  Assert(B.Left<=B.Right);
  Result.Left := Max(A.Left, B.Left);
  Result.Right := Min(A.Right, B.Right);
  if Result.Left > Result.Right then
    Result := NullInterval;
end;