function EExecP0( X,Y: TObj;  var Out_Prm: TObj; var Att: TAtt; Sg1,Sg2: integer; OW: pointer): boolean; 
          var A,B: complex; 
      Kind: TKindPoint; 
          begin 
       Result:=FALSE; 
       Out_Prm:=NIL; 
               if ((X is TOChisl) or (X is TOPoint)) and ((Y is TOChisl) or (Y is TOPoint)) then 
       begin 
            if X is TOChisl then with TOChisl(X).C do Compl(A,Re*Sg1,Im*Sg1); 
            if Y is TOChisl then with TOChisl(Y).C do Compl(B,Re*Sg2,Im*Sg2); 
            if X is TOPoint then with TOPoint(X).X do Compl(A,Re*Sg1,Im*Sg1); 
            if Y is TOPoint then with TOPoint(Y).Y do Compl(B,Re*Sg2,Im*Sg2); 
                    Kind:=tp_fixed; 
            if (X is TOChisl) and (Y is TOChisl) then if (TOChisl(X).Kind=tc_Constant) or (TOChisl(Y).Kind=tc_Constant)  then Kind:=tp_halfFree; 
            if (X is TOChisl) and (Y is TOChisl) then if (TOChisl(X).Kind=tc_Constant) and (TOChisl(Y).Kind=tc_Constant) then Kind:=tp_free; 
                    if (X is TOPoint) and (Y is TOChisl) then if (TOChisl(Y).Kind=tc_Constant)  then Kind:=tp_halfFree; 
            if (X is TOChisl) and (Y is TOPoint) then if (TOChisl(X).Kind=tc_Constant)  then Kind:=tp_halfFree; 
                    Out_Prm:=TOPoint.Create(A,B,1,0,Kind,Att,OW); 
       end 
       else 
       begin 
            if Att.Chk=1 then Out_Prm:=TOEmpty.Create([X,Y],OW,NIL); 
       end; 
               Result:=TRUE; 
          end; { EExecP0 }  |