【发布时间】: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