1、C++提供的说明如下:设置多张卡片权限名单
int APIENTRY SetCardAuth(HANDLE ComHandle, int Address, unsigned long CardSN, char DoorNum, short CardNum, CARDAUTH &CardAuth)
功能:设置多张卡片权限名单(卡号连续)
参数:
  IN:
  int Address:控制器连网逻辑地址号。
  unsigned long CardSN:设置权限的起始卡流水号。
  char DoorNum:设置门号(0表示0号门,1表示1号门)
  short CardNum:设置多张卡权限数量,从输入的CardSN号卡片开始顺序下载权限,
  最多一次下载256(0~255)张卡片,256张卡片权限必须相同.例如,下
  载10张卡号相连,权限相同的卡片时,该值取 0x09, 卡号以输入的
  CardSN的卡号为起始卡号. 只下载一张时,该值取 0..   
  CARDAUTH &CardAuth:卡片权限结构体
  typedef struct _CardAuth
  {
long CardSnr; //卡号
char CardAvailDay[7]; //卡有效期
char DoorPassWord[5]; //开门密码
char DoorTime[2]; //门对应时段组
char AuthMark[2]; //权限标志
char CardMark; //卡标志(巡更卡、用户卡)
char ClearAuth[2]; //权限清空标志
  }CARDAUTH;
  long CardSnr:卡流水号
  char CardAvailDay[7]:卡有效期(格式YYMMDD),BCD码字符串,最后一个字节
  为结束符。
  char DoorPassWord[5]:开门密码,BCD码字符串4位,最后一个字节为结束符。
  char DoorTime[2]:门对应时段组。  
  DoorTime[0] 0号门时段组(0-15)
  DoorTime[1] 1号门时段组(0-15)
  char AuthMark[2]:权限标志
  AuthMark[0] 0号门权限标志
  AuthMark[1] 1号门权限标志
  标志代码:
  0x00:卡片无时限限制,有效期内任意时间有效。(即无时限)
  0x01:卡片时限有效(卡片有时限)。
  0x11:卡片任意时间无效。(即无权限,系统默认卡片无权限)
  char CardMark:卡标志(1表示用户卡,0表示寻更卡)
  char ClearAuth[2]:权限清空标志(默认为0,上位有清空指令时,改位置1)
  ClearAuth[0] 0号门权限清空标志
  ClearAuth[1] 1号门权限清空标志2、在 Delphi 中按以下方式声明:type struct_CardAuth = record
  CardSnr: integer;
  CardAvailDay: array[1..7] of char;
  DoorPassWord: array[1..5] of char;
  DoorTime: array[1..2] of char;
  AuthMark: array[0..1] of char;
  CardMark: char;
  ClearAuth: array[1..2] of char;
  end;
  p_struct_CardAuth = ^struct_CardAuth;
  function SetCardAuth(handle :longint;Address :longint; CardSN :longint; DoorNum: char; CardNum: longint; CARDAUTH: p_struct_CardAuth):integer ;stdcall;
  far;external 'MJK2COMM.dll' name 'SetCardAuth';3、在 Delphi 中按以下方式调用:var
  a : struct_CardAuth;
  return_value : integer;begin
  a.CardSnr := 4686;  
  a.CardAvailDay[1] := '1'; //char($1);
  a.CardAvailDay[2] := '1';
  a.CardAvailDay[3] := '1';
  a.CardAvailDay[4] := '1';
  a.CardAvailDay[5] := '1';
  a.CardAvailDay[6] := '1';
  a.CardAvailDay[7] := char($0);  a.AuthMark[0] := '0'; // 0x00 为有权限
  a.AuthMark[1] := '0';    return_value := SetCardAuth(ComHandle,
  SpinEdit8.Value,
  4686 , // 卡号
  '0', // 门号, A门传0, B门传1
  0,
  @a);  a.CardMark := '1';
end;4、调用为何总是不成功?请大家多赐教,谢谢。