Function GetCardNo(CardNo,ErrStr:pChar):integer;
var
DevName,vData:String;
Ret,vType:Integer;
vErr:string;
begin
DevName:='1,9600,N,8,1';
vType:=2;
Ret:=Rcard(DevName,vData,vType) ;
vErr:='';
Result:=-1;
case Ret of
-1: vErr:='所选串行口打不开!';
-2: vErr:='与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)';
-3: vErr:='串口设置错误!';
-4: vErr:='读卡错误!';
-5: vErr:='读卡操作取消!';
else
Result:=1;
end;
StrPCopy(CardNo,vData);
StrPCopy(ErrStr,vErr);
end;
这个函数我想写成DLL,但发现我一调用就报内存错!
我调用的的时候已经将两个参数给了255空格的空间.
var
DevName,vData:String;
Ret,vType:Integer;
vErr:string;
begin
DevName:='1,9600,N,8,1';
vType:=2;
Ret:=Rcard(DevName,vData,vType) ;
vErr:='';
Result:=-1;
case Ret of
-1: vErr:='所选串行口打不开!';
-2: vErr:='与磁卡读写机通信失败(磁卡机没有与主机连接或连接不正确)';
-3: vErr:='串口设置错误!';
-4: vErr:='读卡错误!';
-5: vErr:='读卡操作取消!';
else
Result:=1;
end;
StrPCopy(CardNo,vData);
StrPCopy(ErrStr,vErr);
end;
这个函数我想写成DLL,但发现我一调用就报内存错!
我调用的的时候已经将两个参数给了255空格的空间.
ppchar = ^pchar;Function GetCardNo(ErrStr:ppChar):integer;
begin
ErrStr := pchar('错误!');
end;调用
var
ErrStr: pchar;GetCardNo(@ErrStr);