首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi7 IDE环境运行时的异常

2012-05-28 
delphi7 IDE环境运行时的错误我在做舒特刷卡机的二次开发时,使用CRCLAN.ocx控件开发是,在delphi7 IDE环境

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开发试试

热点排行