Cross函数,通过Variant体自动区分传入的是数组还是数字类型CROSS(A,0,2)

 //   CROSS(A,B,ifor)表示当A从下方向上穿过B时返回1,否则返回0
  function CROSS(A_,B_:Variant;ifor_:Integer):Boolean;
  var
    A,B,REFA,REFB:Single;
    ArrB:ArraySingle;
    i:integer;
  begin
    Result:=False;
   if VarIsArray(A_) then begin
    i:=1+VarArrayHighBound(A_,1) ;
      if (i<ifor_-1) or (ifor_=0) then EXIT;
      A:=A_[ifor_];
      REFA:=A_[ifor_-1];
   end else begin
     A:=A_; REFA:=A;
   end;

   if VarIsArray(B_) then begin
      i:=1+VarArrayHighBound(B_,1) ;
      if (i<ifor_-1)  or (ifor_=0)  then EXIT;
      B:=B_[ifor_];
      REFB:=B_[ifor_-1];
    end else begin
     B:=B_; REFB:=B;
   end;
       ShowMessage(Format('ARR_A:%F ARR_B:%F EA:%F EB:%F',[a,refa,b,REFB]));
   if (( A>B ) and ( REFA<=REFB ) )
    or
    (( A>=B ) and ( REFA<REFB ) )
   then Result:=True;
  end;

调用方式

procedure TForm1.btn1Click(Sender: TObject);
var
  A,B:ArraySingle;
begin
   SetLength(B,10);
   B[0]:=10;
   B[1]:=-1;
   B[2]:=11;
   B[3]:=11;
   B[4]:=11;
   IF  CROSS(B,0,2) then ShowMessage('Y') ELSE  ShowMessage('N');
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值