在C中定义方法
int WINAPI iTmcReceive( int id, char* buff, int blen, int* rlen );实现代码
char recieveBuffer[D_RECIEVE_BUFFER_SIZE];
status = iTmcReceive( m_deviceId, recieveBuffer, D_RECIEVE_BUFFER_SIZE, &recieveLength );我转换成delphi,这样定义的
function  iTmcReceive(id:Integer; buff:PChar;blen:Integer;var rlen:Integer):Integer;stdcall;external 'iTMCTL.dll';调用代码
const D_RECIEVE_BUFFER_SIZE = 1000;
var
  status       :Integer;
  messages     :PChar;
  recieveLength:Integer; // recieveBuffer:string;
 // aaaaa        :PChar;
 // recieveBuffer:string;
  recieveBuffer: array [0..D_RECIEVE_BUFFER_SIZE] of Char;
  status:= iTmcReceive(m_deviceId,recieveBuffer,D_RECIEVE_BUFFER_SIZE,recieveLength);
无论怎么,recieveBuffer都返回不了结果值呀。后面的 rlen 写法是正确的,因为我在其它调用函数的地方都是这样写的,都可以用。 

解决方案 »

  1.   

    C中的  char* sdr
    delphi 中可以用  sdr:PChar 来替换。但这个数组的,弄了N久,都没有弄好
      

  2.   

    用PChar也试过了,也还是不行
      

  3.   

    const D_RECIEVE_BUFFER_SIZE = 1000; 
    var 
      status      :Integer; 
      messages    :PChar; 
      recieveLength:Integer; // recieveBuffer:string; 
    // aaaaa        :PChar; 
    // recieveBuffer:string; 
      recieveBuffer: array [0..D_RECIEVE_BUFFER_SIZE] of Char; 
      status:= iTmcReceive(m_deviceId,@recieveBuffer[0],D_RECIEVE_BUFFER_SIZE,recieveLength); 
      

  4.   

    function iTmcReceive(id: Integer, buff: PChar, blen:Integer, rlen: PChar): Integer;stdcall;
      

  5.   

    unsigned 这个方法也试过了,也不行
      

  6.   

    光说不行,具体什么错误,什么问题?使用C当中同样的参数和方法出现的结果或者状况,与Delphi有什么不同?