求结构体转换delphi,调用dll

求结构体转换delphi,调用dll!在线等
动态库 HISISDK.dll,
LONG HISI_DVR_Login(
  char                   *sDVRIP,
  WORD                   wDVRPort,
  char                   *sUserName,
  char                   *sPassword,
  PHISI_DEVCEINFO   lpDeviceInfo
);

Parameters
sDVRIP 
[in] 设备IP地址 
wServerPort 
[in] 设备端口号 
sUserName 
[in] 登录的用户名 
sPassword 
[in] 用户密码 
lpDeviceInfo 
[out] 设备信息 

Return Values
-1表示失败,其他值表示返回的用户ID值。该用户ID具有唯一性,后续对设备的操作都需要通过此ID实现。获取错误码调用 HISI_DVR_GetLastError

请问如何调用
var
lpDeviceInfo:LPNET_DVR_DEVICEINFO ;//设备信息结构体
begin
HISI_DVR_Login(PChar('127.0.0.1'),80,'admin','',lpDeviceInfo);
end;//老报错
//结构体
Type
  LPNET_DVR_DEVICEINFO=^NET_DVR_DEVICEINFO;
   NET_DVR_DEVICEINFO = packed  record
 sSerialNumber:array[0..SERIALNO_LEN] of BYTE ;  //序列号
 byAlarmInPortNum:BYTE; //DVR报警输入个数
 byAlarmOutPortNum:BYTE; //DVR报警输出个数
   byDiskNum:BYTE; //DVR 硬盘个数
 byDVRType:BYTE; //DVR类型,
 byChanNum:BYTE; //DVR 通道个数
 byStartChan:BYTE; //起始通道号,例如DVS-1,DVR - 1
  end;

------解决方案--------------------
NET_DVR_DEVICEINFO和PHISI_DEVCEINFO  你要对比下大小,你定义的是packet record,应该是大小不一致吧。你DLL的调用方式是不是和SDK说明的一致,你这里华为海思的DVR是吧。
------解决方案--------------------
去掉Packed