可以这样么?
function aa(const prim_len:Integer; var Buffer:pChar;
const wait_seconds,trace :Integer):Integer;
或者
function aa(const prim_len:Integer; var Buffer:Array of Char;
const wait_seconds,trace :Integer):Integer;

解决方案 »

  1.   

    function aa(prim_len:Integer;buffer:Pchar;wait_seconds:Integer;trace:Integer):Integer;stdcall;
    后面的stdcall是要注意是什么参数传递类型,还可以是cdecl,safecall,register等
      

  2.   

    Function aa(prim_len:integer;buffer:string,wait_seconds,trace:integer):integer;
      

  3.   

    用pChar类型的话,在VC程序中查看是乱码,但是Delphi中的Buffer值还是以前的值。
      

  4.   

    在VC中调试:
    结果因为:在Delphi中定义的Array of Char类型,使地址分配错位,怎么?
    错位成:
    var Buffer:pChar;
        aa: Array [0..22] of char;
        ii: Integer;  Buffer := AllocMem(32);
      StrpCopy(Buffer,'A000020001000000000100');
      for ii:= 0 to 22 do
        aa[ii] := Buffer[ii];
    如果在Delphi中传入的是C_Send(23,aa,30,1);
    但是在VC调试信息中看到的是C_Send(23,aa,22,30);
    把数组的大小作为一个地址的值传给了第三个参数,使参数错位。
    该怎么解决呢?
      

  5.   

    function aa(const prim_len:Integer; Buffer:pChar;
    const wait_seconds,trace :Integer):Integer;