【问题标题】:Finger print verification with Digital Persona使用 Digital Persona 进行指纹验证
【发布时间】:2010-11-14 07:39:02
【问题描述】:

在数字角色模板上运行指纹验证程序时,我不断收到以下错误。我现在不知所措了。我的知识很短,我没有可以求助的人。你能帮忙吗?

错误信息

Test17.exe raised EacessViolation with message;Access violation at address 004033B7E in module ‘Test17.exe’

进行验证的 DELPHI 5 代码

procedure TFormVerify.DPFPVerificationControl1Complete(Sender: TObject;
  const pFeatureSet, pStatus: IDispatch);
var
  lStr, Str1,Str2       : AnsiString;           //Deserialize method
  lByteArray            : Variant;
  lArrayPointer         : Pointer;
  DPFPTemplate          : TDPFPTemplate;        //IDispatch;
  MFar                  : Integer;              //Long integer of result archieved
  MVerified             : Boolean;              //Result of whether finger has been verified or not
  MFeatureSet           : Variant;              //IDispatch, Variant;
  MTemplate             : Variant;              //IDispatch, Variant;
  MRes                  : Variant;              //TDPFPVerificationResult;
  oVerificationResult   : DPFPVerificationResult;
begin
  // Experiment
  MFeatureSet           := pFeatureSet;                 // Dispatch cast to Variant
  MTemplate             := Template;                    // Dispatch cast to Variant
  Str1                  := MfeatureSet.Serialize;   // Note string shows
  Str2                  := Mtemplate.Serialize;       // Note string shows
  try
    if (pFeatureSet=nil) or (Template=nil) then
      MessageDlg('Empty Featureset or Template!', mtInformation,[mbOk], 0)
    else
      Res := Ver.Verify(pFeatureSet, Template);          // ERROR MESSAGE
    MRes  := Res;
    MVerified     := MRes.Verified;                     
    MFar          := MRes.QueryInterface.FARAchieved;     DPFPVerificationResult1.FARAchieved;
  except
    on E: Exception do MessageDlg(E.Message +' : ' + IntToStr(E.HelpContext), mtInformation,[mbOk], 0);
  end;

【问题讨论】:

  • 对数字角色一无所知,因此无法帮助您。但是:Ver 从哪里获得它的价值?在产生错误消息的行中,您使用“Ver.Verify(...)”,但我没有看到 Ver 在任何地方被声明、初始化或检查...
  • 我建议您检查作为 pFeatureSet 参数传递的值,或者全局模板或 Ver 变量/字段/方法/属性。访问冲突发生在非零地址上......我敢打赌是一次已经被破坏的对象所在的地址。 pFeatureSet 是一个接口,但程序可能会在调用此例程之前释放底层对象。它同样适用于 Ver 和 Template 的指针(如果它们是对象或接口)。

标签: delphi fingerprint biometrics digital-persona-sdk


【解决方案1】:

可能的原因:

(1)如果pFeatureSet或Template为nil,hten Res将未定义,导致调用Res.Verified时异常

(2) MRes.QueryInterface 为零;

(3) DPFPVerificationResult1 为零

【讨论】:

    【解决方案2】:
    DPFPTemplate: DPFPFeatureSet;        //IDispatch;
    
    MFeatureSet := pFeatureSet as DPFPFeatureSet;  // Dispatch cast to Variant
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 2018-07-28
      • 1970-01-01
      • 2011-03-16
      • 2018-11-20
      相关资源
      最近更新 更多