TOutput2 = record Flag,Index : TBordar_Int32; end; function TMatlab.IsMember(const A, B: TBordar_Double): TOutput2; var i : Integer; j : Integer; k : Integer; Index,Flag : TBordar_Int32; begin SetLength(Index, Length(A)); SetLength(Flag,Length(A)); for i := 0 to Length(A) - 1 do begin for j := 0 to Length(B) - 1 do begin Flag[i] := 0; if A[i] = B[j] then begin Flag[i] := 1; Index[k] := j; inc(k); break; end; Flag[i] := 0; end; end; SetLength(Index,k); Result.Flag := Flag; Result.Index := Index; end;
function TMatlab.IsMember2(A, B: TBordar_Double): TOutput2; var i : Integer; j : Integer; k : Integer; Index,Flag : TBordar_Int32; Len : Integer; res : Integer; function bsearch(const v : Double) : Integer; var nlo,nhi,t : Integer; begin nlo := 0; nhi := Len-1; while nlo <> nhi do begin t := (nhi+nlo) div 2; if B[t] < v then nlo := t+1 else nhi := t; end; if B[nhi]=v then result := nhi else result := -1; end; begin SetLength(Index, Length(A)); SetLength(Flag,Length(A)); Len := Length(B); k := 0; for i := 0 to Length(A) - 1 do begin res := bsearch(A[i]); if res = -1 then Flag[i] := 0 else begin Flag[i] := 1; Index[k] := j; inc(k); end; end; SetLength(Index,k); Result.Flag := Flag; Result.Index := Index; end;
SetFocus
WM_MOUSEMOVE
WM_MOUSEWHEEL