dll内函数声明:LONG PASCAL ReadTime(HANDLE hCom,BYTE DevNo,LPSTR pTime)
功能说明:读取设备时钟。
参数说明: hCom 为端口句柄
DevNo 为设备号(0——254),255 为广播号
pTime 返回设备时钟delphi内调用:
function ReadTime(hComm: HWND;DevNo: Byte;Var PTime: PChar): Integer;stdcall;external '201Comm.dll';  if hComm > 0 then begin
    GetMem(buf,15);
    iTmp := ReadTime(hComm,0,buf);   //调用时候报内存错误
    ……
    FreeMem(buf);
  end;

解决方案 »

  1.   

    用PChar不可以,用PAnsiChar,代码里面用静态数组可以,动态分配不知道为什么不行。var buf: array[0..14] of char;试出来的,知其然不知其所以然。期待妖哥帮忙解释……
      

  2.   

    c++中的char对应的就是delphi中的PAnsiChar...
      

  3.   

    看来你用的是delphi 2010吧?这里的Pchar默认为PwidecharLPSTR是字符串指针,每个字符占1个字节,所以应该用Pansichar,当然用0下标开始的字符数组也是一样
      

  4.   

    ReadTime(hComm,0,buf)这个参数有问题塞,ReadTime(hComm, 0 buf^),应该是这样才对嘛.