procedure TForm1.Button4Click(Sender: TObject);
var i,iResult:integer;
EDate:array [0..10] of char;
cardHexStr:array [0..24] of char;
RoomNo:array [0..6] of char;
STmp:String;
begin
  DateTimePicker1.Time:=DateTimePicker2.Time;
  STmp:=formatdatetime('yymmddhhnn',DateTimePicker1.DateTime);
  StrPCopy(EDate,STmp);
  StrPCopy(RoomNo,edit3.text+edit4.text+edit5.text);
  for i:=0 to 23 do cardHexStr[i]:=chr(32);
   iResult:=RoomCard(hComHandle,strtoint(edit1.Text),EDate,RoomNo,cardHexStr);
  memo1.Lines.Clear;
  for i:=0 to 2 do memo1.Lines.Add(copy(cardHexStr,i*8+1,8)+chr(13));
  if iResult<>1 then begin
    Buzzer(hComHandle);
    Showmessage('写卡失败');
  end else begin
    Showmessage('OK');
  end;
end;
——————————————————————————
分割线以上代码运行出现错误
[错误] Unit1.pas(99): Incompatible types: 'Integer' and 'Array'
[错误] Unit1.pas(99): Not enough actual parameters
[致命错误] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
请各位达人赐教,万分感谢

解决方案 »

  1.   

    是不是RoomCard中参数类型错误,提示很明显,是类型错误
      

  2.   

    帅哥,感谢你的关注,你速度太快了
    我知道类型错误啊,说是整数型和字符型不匹配,但问题是怎么改啊?
    原来也是这样完全可以的。iResult:=RoomCard(hComHandle,strtoint(edit1.Text),EDate,RoomNo,cardHexStr);
    我删了两个edit。text就不行了。帮我啊
      

  3.   

    iResult:=RoomCard(hComHandle,strtoint(edit1.Text),EDate,RoomNo,cardHexStr);
      

  4.   

      来了,
      第99行是:iResult:=RoomCard(hComHandle,strtoin(edit1.Text),EDate,RoomNo,cardHexStr);
     
      [错误] Unit1.pas(99): Incompatible types: 'Integer' and 'Array'
      [错误] Unit1.pas(99): Not enough actual parameters
     
      第一错误是类型错误,第二个错误是参数个数不够。
      这两个错误都需要你提供RoomCard这个函数原型才能给出明确的修改方法。
      就目前而言,
      iResult:=RoomCard(hComHandle,strtoin(edit1.Text),EDate,RoomNo,cardHexStr);
      你肯定少给了参数进去,你传来5个参数,函数原型里面肯定不止5个,你自己去算算。
      还有就是,你给参数的时候没有按照函数原型去给参数,改给ineger的你却给了个Array。
      EDate:array [0..10] of char;
      cardHexStr:array [0..24] of char;
      RoomNo:array [0..6] of char;
      都是数组,所以,你再参看一下RoomCard的函数原型,类型匹配好,问题应该可以解决了。