【发布时间】:2009-10-22 14:01:59
【问题描述】:
这是一个非常具体的问题,可能会为我赢得风滚草徽章,但如果可以,请回答
我已将 DigitalPersona sdk dll 作为类型库导入 Delphi,并尝试验证我已作为序列化数据存储在数据库中的指纹,它的工作非常出色。注册似乎工作正常,但我无法将指纹中的二进制数据转换回 DPFPTemplate 对象。每次尝试使用 TDPFPTemplate 对象的 defaultinterface 属性时,我都会收到 OLEException。
我想知道的是 Digital Persona 希望您如何使用他们的 SDK 来重新创建指纹。他们的指示是这样说的:
1. *从指纹数据存储子系统中检索序列化的指纹模板数据。 2.通过调用Deserialize方法反序列化一个DPFPTemplate对象(VB第40页,C++ 第 83 页)。 3. 返回一个 DPFPTemplate 对象。制作 DPFPTemplate 的所有方法似乎只包括使用指纹读取器本身。
这是一种行不通的方法
Result := CreateOleObject('DPFPShrX.DPFPTemplate.1') as IDPFPTemplate;
Result.Deserialize(string(AUserFinRecPtr.FingerBuffer));
还有一个
DPFPTemplate := TDPFPTemplate.Create(nil);
DPFPTemplate.DefaultInterface.Deserialize(String(AUserFinREcPtr.FingerBuffer));
【问题讨论】:
-
你能弹出一些代码来帮助我们提供线索吗?
-
好主意,感谢您的关注。
-
EOleException 返回的 ErrorCode (HRESULT) 是什么?正如 ChrisBD 所说,提供一些代码。
-
错误代码 = -2147352568,这没有多大意义,但我确实尝试捕获 EOleException 并且消息说“变量类型错误”。也许我向这个函数传递了错误的东西。过程反序列化(RawData:OleVariant);它应该获取二进制数据并生成一个指纹模板对象,我可以验证另一个指纹。
-
好的,谢谢评论的花花公子。我认为错误实际上来自我传递给反序列化函数的东西。 “坏变量类型”现在我必须弄清楚如何获得好的数据。
标签: delphi activex fingerprint biometrics