api中声明3个参数,delphi中却成了两个,怎么用拉

解决方案 »

  1.   

    Delphi中的这个函数声明是错误的。正确声明应该是:
    function wsprintf(Output: PChar; Format: PChar): Integer;varargs; cdecl; external user32 name 'wsprintfA';
    原因:
    1.wsprintfA/wsprintfW是WindowsAPI中唯一一个使用cdecl调用方式的函数
    2.该函数使用可变参数,但是原来的wsprintf定义却只有两个参数,掉了varargs关键字。修改后测试程序:var Buffer:array[1..100] of char;
    begin
    wsprintf2(@Buffer,'Self=0x%X',Self);
    ShowMessage(StrPas(@Buffer));
    end;
      

  2.   

    不过在Delphi里面有wsprintf的替换函数。使用Format函数