我在做舒特刷卡机的二次开发时,使用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}
interfaceuses 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';implementationuses 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.
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}
interfaceuses 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';implementationuses 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.
解决方案 »
- 请教cxgrid一个简单问题
- 问一个很菜的问题
- 请问用Delphi编一个简单的作图的程序,怎样进行逆向操作?
- 这是关于震撼照片的帖子!!想看全照片的去这里.....
- 在一个网页源代码中如果分离出所有的连接放到一个tStringList中?
- pagecontrol的tabsheet的颜色(写名的地方)能改吗
- 如何让TDBGrid的焦点移动到某一条记录的第一个字段?
- 简单的COM/DCOM问题的一个例题如下所示,不是很懂,谁给讲一下,顺便放分!,
- Delphi 7.0中的打印报表控键是哪个呀?
- 一个初学者,有问题求教,请大家帮帮忙.
- 用软件查和用SQL查询分析器查,时间差的太大了
- delphi DirectX3D 实现摄像机旋转
1、access violation at address 069c352a in module 'CRCLAN.ocx'. Read of address 000000000
2、invalid pointer operation
错误,我一致怀疑是ocx的问题,但找不到供应商,能不能有其他的办法?