在dll和应用程序中数据的定义:
  DtuDataStruct = Record        //DTU数据域
    add: sockaddr_in;           //IP
    m_modemId: Integer;         //ID号
    m_recv_time: TDateTime;     //接收时间
    m_data_buf: Array[0..MAX_RECEIVE_BUF] of Byte; //数据缓存
    m_data_len: Word;           //数据长度
    m_data_type: Byte;          //数据类型
    m_end_pointer: Integer;     //
  end;
  pDtuData = ^DtuDataStruct;
在dll中数据的导出:
procedure GPRSGetOneData(iIndex: Integer; dds: DtuDataStruct; stdcall;
begin
  dds := pDtuData(dtuDataList.Items[iIndex])^; //dtuDataList 是个TList
end;
应用程序这边:
procedure TConfigCollectorFrm.Timer2Timer(Sender: TObject);
var
  iEndPointer: Integer;
  iCount, I, J: Integer;
  dds: DtuDataStruct;
begin
  iCount := GPRSGetDataListCount;
  if iCount <= 0 then Exit;  for I := 0 to iCount - 1 do
  begin
    GPRSGetOneData(I, dds);
    iEndPointer := dds.m_end_pointer;
    ......
  end;
end;跟踪调试发现: dll中的m_end_pointer值是28,到了应用程序这个居然是:1953043412,可能还是我处理有问题只是还不知道应该怎么处理才能得到正确的数据?