delphi7 IDE环境运行时的错误
我在做舒特刷卡机的二次开发时,使用CRCLAN.ocx控件开发是,在delphi7 IDE环境运行时的,但刷卡到10~11次时出现
Project Project1.exe raised exception class EInOutError with message 'Invalid filename' 错误,请各位大拿帮忙解决,谢谢!救命啊!
贴出代码:
unit CRCLAN_TLB;
{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers.
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
interface
uses Windows, ActiveX, Classes, Graphics, OleCtrls, OleServer, StdVCL, Variants;
const
// TypeLibrary Major and minor versions
CRCLANMajorVersion = 1;
CRCLANMinorVersion = 0;
LIBID_CRCLAN: TGUID = '{761242A6-D3D1-4DFB-A65A-E4BE26E38CDB}';
IID_ICRCLANX: TGUID = '{CED842A8-F840-4759-A2E5-DCD3BAEB70D4}';
DIID_ICRCLANXEvents: TGUID = '{8D163ADE-DCE7-4494-9089-DA7C001E9384}';
CLASS_CRCLANX: TGUID = '{B0BA1D0B-7D4B-4E0C-953B-F687AF9207D0}';
type
ICRCLANX = interface;
ICRCLANXDisp = dispinterface;
ICRCLANXEvents = dispinterface;
CRCLANX = ICRCLANX;
ICRCLANX = interface(IDispatch)
['{CED842A8-F840-4759-A2E5-DCD3BAEB70D4}']
//省略
end;
ICRCLANXDisp = dispinterface
['{CED842A8-F840-4759-A2E5-DCD3BAEB70D4}']
//省略
end;
ICRCLANXEvents = dispinterface
['{8D163ADE-DCE7-4494-9089-DA7C001E9384}']
end;
TCRCLANX = class(TOleControl)
private
FOnConnect: TCRCLANXOnConnect;
FOnDisconnect: TCRCLANXOnDisconnect;
FOnConsume: TCRCLANXOnConsume;
FOnSuccess: TCRCLANXOnSuccess;
FOnError: TCRCLANXOnError;
FOnApplyCorrect: TCRCLANXOnApplyCorrect;
FOnQueryBalance: TCRCLANXOnQueryBalance;
FOnDeposit: TCRCLANXOnDeposit;
FOnFailure: TCRCLANXOnFailure;
FOnQueryWare: TCRCLANXOnQueryWare;
FOnCorrect: TCRCLANXOnCorrect;
FOnChangePassword: TCRCLANXOnChangePassword;
FOnApplySubsidy: TCRCLANXOnApplySubsidy;
FOnChangeCardState: TCRCLANXOnChangeCardState;
FOnWithdrawal: TCRCLANXOnWithdrawal;
FOnTransferring: TCRCLANXOnTransferring;
FIntf: ICRCLANX;
function GetControlInterface: ICRCLANX;
protected
procedure CreateControl;
procedure InitControlData; override;
public
function Open: WordBool;
function Close: WordBool;
property ControlInterface: ICRCLANX read GetControlInterface;
property DefaultInterface: ICRCLANX read GetControlInterface;
property IsRunning: WordBool index 206 read GetWordBoolProp;
published
property Anchors;
property Port: Integer index 201 read GetIntegerProp write SetIntegerProp stored False;
property MocRange: WideString index 202 read GetWideStringProp write SetWideStringProp stored False;
property SaveCommnuLog: WordBool index 203 read GetWordBoolProp write SetWordBoolProp stored False;
property LogSavePath: WideString index 204 read GetWideStringProp write SetWideStringProp stored False;
property MaxLogFileSize: Integer index 205 read GetIntegerProp write SetIntegerProp stored False;
property Gateway: WideString index 209 read GetWideStringProp write SetWideStringProp stored False;
property OnConnect: TCRCLANXOnConnect read FOnConnect write FOnConnect;
property OnDisconnect: TCRCLANXOnDisconnect read FOnDisconnect write FOnDisconnect;
property OnConsume: TCRCLANXOnConsume read FOnConsume write FOnConsume;
property OnSuccess: TCRCLANXOnSuccess read FOnSuccess write FOnSuccess;
property OnError: TCRCLANXOnError read FOnError write FOnError;
property OnApplyCorrect: TCRCLANXOnApplyCorrect read FOnApplyCorrect write FOnApplyCorrect;
property OnQueryBalance: TCRCLANXOnQueryBalance read FOnQueryBalance write FOnQueryBalance;
property OnDeposit: TCRCLANXOnDeposit read FOnDeposit write FOnDeposit;
property OnFailure: TCRCLANXOnFailure read FOnFailure write FOnFailure;
property OnQueryWare: TCRCLANXOnQueryWare read FOnQueryWare write FOnQueryWare;
property OnCorrect: TCRCLANXOnCorrect read FOnCorrect write FOnCorrect;
property OnChangePassword: TCRCLANXOnChangePassword read FOnChangePassword write FOnChangePassword;
property OnApplySubsidy: TCRCLANXOnApplySubsidy read FOnApplySubsidy write FOnApplySubsidy;
property OnChangeCardState: TCRCLANXOnChangeCardState read FOnChangeCardState write FOnChangeCardState;
property OnWithdrawal: TCRCLANXOnWithdrawal read FOnWithdrawal write FOnWithdrawal;
property OnTransferring: TCRCLANXOnTransferring read FOnTransferring write FOnTransferring;
end;
procedure Register;
resourcestring
dtlServerPage = 'Servers';
dtlOcxPage = 'Servers';
implementation
uses ComObj;
procedure TCRCLANX.InitControlData;
const
CEventDispIDs: array [0..15] of DWORD = (
$000000C9, $000000CA, $000000CB, $000000CC, $000000CD, $000000CE,
$000000CF, $000000D0, $000000D1, $000000D2, $000000D3, $000000D4,
$000000D5, $000000D6, $000000D7, $000000D8);
CControlData: TControlData2 = (
ClassID: '{B0BA1D0B-7D4B-4E0C-953B-F687AF9207D0}';
EventIID: '{8D163ADE-DCE7-4494-9089-DA7C001E9384}';
EventCount: 16;
EventDispIDs: @CEventDispIDs;
LicenseKey: nil (*HR:$00000000*);
Flags: $00000000;
Version: 401);
begin
ControlData := @CControlData;
TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnConnect) - Cardinal(Self);
end;
procedure TCRCLANX.CreateControl;
procedure DoCreate;
begin
FIntf := IUnknown(OleObject) as ICRCLANX;
end;
begin
if FIntf = nil then
begin
DoCreate;
end;
end;
function TCRCLANX.GetControlInterface: ICRCLANX;
begin
CreateControl;
Result := FIntf;
end;
function TCRCLANX.Open: WordBool;
begin
Result := DefaultInterface.Open;
end;
function TCRCLANX.Close: WordBool;
begin
Result := DefaultInterface.Close;
end;
procedure Register;
begin
RegisterComponents(dtlOcxPage, [TCRCLANX]);
end;
end.
[解决办法]
是不是DELPHI版本有问题呀,或者是参数传递有问题的
[解决办法]
你调用的那个接口,会用到诸如filename类的参数,如果你认为你的代码内问题,就找供应商
[解决办法]
CRCLAN.ocx控件的问题,找这个供应商
[解决办法]
有些刷卡的驱动会虚拟出系统文件名给应用进行访问的
是不是这个文件名?
[解决办法]
换用VB6开发试试