这是声明的函数
function SDT_ReadBaseMsg(iPortID: Integer;
pucCHMsg: array of byte; puiCHMsgLen: pchar; 
pucPHMsg: array of byte; puiPHMsgLen: pchar; iIfOpen:Integer ):Integer;stdcall;far;external 'sdtapi.dll';
var
    data : array[0..1280] of byte;    
    dwlt : array[0..1024] of byte;
    len1 : pchar;
    len2 : pchar;    
begin
    len1 :=0;
    len2 :=0;    
        if SDT_ReadBaseMsg(EdziPortID,data,@len1,dwlt,@len2,1) = 144 then
在这里掉用的
不知到为什么,出错.各位帮我看看吧

解决方案 »

  1.   

    参数 puiCHMsgLen: pchar; 应该是用来接收长度的,从定义看来长度存放在8bit的char类型中,因此调用时应该传入一个char变量的地址
    (最好看看函数说明确定一下)var
        data : array[0..1280] of byte;   
        dwlt : array[0..1024] of byte;
        len1 : char;
        len2 : char;   
    begin
        len1 :=0;
        len2 :=0;   
            if SDT_ReadBaseMsg(EdziPortID,data,@len1,dwlt,@len2,1) = 144 then