【发布时间】:2016-10-12 02:35:20
【问题描述】:
我从指纹 SDK 中获得了事件 onDone 的示例代码(在注册指纹之后)
procedure TfrmRegister.FPRegisterTemplate1Done(ASender: TObject;
var pTemplate: OleVariant);
var
l_val : OleVariant;
l_pArray : PSafeArray;
i : integer;
fpBuffer : PByteArray;
begin
txtEvtMessage.Caption := 'Done Event Received !!';
pTemplate.Export(l_val);
l_pArray := PSafeArray(TVarData(l_val).VArray);
blobSize := l_pArray.rgsabound[0].cElements * l_pArray.cbElements;
fpBuffer := VarArrayLock(l_val);
for i := 0 to blobSize - 1 do
fpData[i] := fpBuffer[i]; //pvData is byte array
VarArrayUnlock(l_val);
mode := 0;
btnVerify.Enabled := True;
end;
但是当我安装 SDK 并导入类型库时 onDone 的第二个参数是 const pTemplate:IDispatch 而不是 var pTemplate:OleVariant
所以 pTemplate.Export(l_val); 行出现错误,因为 'Undeclared identifier: 'Export'
我根本不懂 ActiveX/OLE/COM 编程。似乎它喜欢旧的帕斯卡代码(PSafeArray、PByteArray 等),并且通过简单的示例和解释很难理解这个术语。
有人知道如何通过一些修改使这些代码正确运行吗? 实际上这些代码适用于 Delphi 6(我使用的是 Delphi 7)
谢谢
【问题讨论】:
-
这不是旧代码。那只是COM。为什么不尝试学习和理解。
-
@DavidHeffernan 您是否有关于 COM 的链接/文章,带有简单的示例和简单的解释(简单的英语,而不是编程英语)?我找不到它,它们中的大多数都太复杂了。 AFAIK,并不是所有的初学者都容易理解 COM 编程
-
有些事情很难。如果您不了解 COM,那么任何简单的教程都不会在 2 分钟内改变它。有些事情需要努力。
-
@DavidHeffernan,当然有些东西很难,2 分钟内不会理解。但是如果没有好的解释和好的例子,一切看起来都无法理解。并非所有程序员都是聪明和天才。而且我这里也不是想创建COM,让厂商来处理,我只是想尝试修改代码。
标签: delphi automation delphi-7 fingerprint delphi-6