在 Delphi 中使用 ABBYY FineReader Engine
本节将介绍一些 ABBYY FineReader Engine 12 在 Delphi 中的使用特征。
创建 Object Pascal 包装单位
为了在 Delphi 使用 ABBYY FineReader Engine 12,必需为类型库创建一个 Object Pascal 包装单位(FREngine_TLB.pas 文件)。要生成包装:
- 运行命令提示符 (cmd.exe) 然后转到 ABBYY FineReader Engine 12 类型库 (FREngine.tlb) 所在的文件夹。
- 用以下参数运行 tlibimp 实用程序:
tlibimp -O- -Cd- -C- -P+ -Pt+ FREngine.tlb
这将生成 FREngine_TLB.pas 文件。
- 将FREngine_TLB.pas添加到项目中。
每次更新 ABBYY FineReader Engine 12版本时,您都需要重新生成 FREngine_TLB.pas。
在 Delphi 7 中使用 Engine 加载程序
还有一种在 Delphi 7 中使用 ABBYY FineReader Engine 的替代方法,您不需要如上所述手动创建包装器。但是这种方法仅适用于使用 Engine 加载程序 在应用程序中加载 Engine 对象的情况。
- 打开项目,然后选择 项目 > 导入类型库。
- 在打开的对话框中,选择列表中的 ABBYY FineReader Engine 12.2 类型库。确认“生成组件包装”标记已打开。单击 安装。
注: 如果这阶段发生错误,可能表示系统环境变量“路径”不包含必要的路径。进行修改,添加 mscoree.tlb 文件的路径(通常是 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727)。
- 新组件将出现在“组件”调色板的 ActiveX 选项卡上——InprocLoader 和 OutprocLoader。您可以将其中一个组件直接添加到表单上并使用它来加载 Engine 对象。
例如,您可以将 InprocLoader 组件添加到表单上。以下代码将自动添加:
uses FREngine_TLB; type TForm1 = class(TForm) InprocLoader1: TInprocLoader; ... private { Private declarations } public { Public declarations } end;
在实施中使用 InprocLoader 对象的 InitializeEngine 方法加载 Engine:
Engine := InprocLoader1.InitializeEngine( 'MyProjectId', LicensePath, LicensePassword, '', '', False );
当不再需要 FineReader Engine 功能时,使用加载器对象的 ExplicitlyUnload 方法卸载 Engine。
InprocLoader1.ExplicitlyUnload;
取消初始化 Engine 对象
如果在取消初始化 Engine 对象前,没有删除所有应用程序创建和使用的对象,将引发"Engine 取消初始化失败"异常。如果所有对象都已删除,则异常可能是由垃圾回收器操作引起。在 Delphi 中,所有含 nil 值的对象只有在退出其过程(曾宣告该对象的过程)后才会被删除。因此,必须将整个 ABBYY FineReader Engine 代码插入单独过程中,并且必须在取消初始化Engine 对象前调用该过程。
注: 您可以通过 Engine 对象的 StartLogging 方法获取尚未删除的对象列表。
ABBYY FineReader Engine 包括用 Delphi 写的简单 Hello 示例。您可以通过点击开始 > 程序 > ABBYY FineReader Engine 12 > 安装文件夹 > 代码示例文件夹 > Delphi > Hello 来访问该示例。
另请参阅
17.09.2024 15:14:41