我写的程序会出现Operator not applicable to this operand type
这种错误代码如下:
a1:= mxc-$AD9023-6;
b1:= $AD9036;
CopyMemory(pointer(@b1),@a1,4);

解决方案 »

  1.   

    我机用delphi7,没问题,几个警告可忽略。程序运行正常,值赋过去了。
    var a1,b1:integer;
    begin
    a1:= $AD9023-6;
    b1:= $AD9036;
    CopyMemory(pointer(@b1),@a1,4);
    ......
      

  2.   

    a1,b1,mxc不是数值型,才可能出现这种错误
    另外
      CopyMemory(pointer(@b1),@a1,4);
    最好改为
      CopyMemory(pointer(@b1),@a1,sizeof(b1));
      

  3.   


    b2:longint;
    a1:longint;
    mxc:Pointer;
    mxc:=GetProcAddress(LoadLibrary('user32.dll'), 'PtInRect');
      

  4.   

    如果把mxc定义为longint会出现
    Incompatible types: 'Integer' and 'Pointer'
    错误
      

  5.   

    因为GetProcAddress返回值是指针类型,你把mxc定义为longint肯定会出错。
      

  6.   

    mxc:=@GetProcAddress(LoadLibrary('user32.dll'), 'PtInRect');
      

  7.   

    procedure TForm1.FormCreate(Sender: TObject);type
      AddPtInRect = function (const Rect: TRect; const P: TPoint): Boolean;
    var
      b2:longint;
      a1:longint;
      mxc : AddPtInRect;
    begin
     mxc := GetProcAddress(LoadLibrary('user32.dll'), 'PtInRect');
     if Assigned(mxc) then begin
     end;
    end;
      

  8.   

    procedure TForm1.FormCreate(Sender: TObject);type
      AddPtInRect = function (const Rect: TRect; const P: TPoint): Boolean;
    var
      b2:longint;
      a1:longint;
      mxc : AddPtInRect;
    begin
     mxc := GetProcAddress(LoadLibrary('user32.dll'), 'PtInRect');
     if Assigned(mxc) then begin
       ... do something
     end;
    end;
      

  9.   


    应该是
    @mxc:=GetProcAddress(LoadLibrary('user32.dll'), 'PtInRect');