我想在Delphi 2009的项目中使用TPerlRegExp(来自页面中间的http://www.regular-expressions.info/delphi.html)。
我将PerlRegEx.pas和pcre.pas添加到我的项目组,并将'PerlRegEx'放入我的使用列表中。
编译时,我收到以下错误:
[DCC错误] PerlRegEx.pas(305):E2003未声明的标识符: 'pcre_dispose'
[DCC错误] PerlRegEx.pas(533):E2003未声明的标识符: 'pcre_dispose'
[DCC致命错误] test.dpr(21):F2063无法编译已使用的单位 ” .. \共享\类\ TPerlRegEx \ PerlRegEx.pas'
当我使用'pcre_dispose'注释掉这些行时,它编译好了。但是我不想通过不释放东西来创建内存泄漏......那么可能导致这种情况的原因呢?
有想法的人吗?
非常感谢!
答案 0 :(得分:1)
逐步进行工作安装(从评论中提供的下载链接到原始问题):
将Zip文件解压缩到一个文件夹中。我使用E:\Code\PerlRegEx\XE2
,因为我已经为D2007安装了非Unicode版本。
使用File->New->Other->Console App
启动新的控制台项目。
使用IDE主菜单中的Project->Options->Compiler
,并将上面的路径位置添加到Search Path
。粘贴以下代码以替换代码编辑器中的所有内容:
program Project2;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, PerlRegex;
var
Regex: TPerlRegex;
begin
try
Regex := TPerlRegex.Create;
try
Regex.Subject := 'This is a test of TPerlRegex';
Regex.RegEx := '\btest\b';
if Regex.Match then
WriteLn('Found match: ' + Regex.MatchedText)
else
WriteLn('Can''t be! No match found!');
ReadLn;
finally
Regex.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
正如您所看到的,我对此测试用例使用了TPerlRegex
功能的非常复杂的测试。 : - )
如果以上情况适合您,并且您在自己的项目中仍然遇到问题:
检查旧项目以获取对旧版TPerlRegex的引用(搜索或库路径中的另一个文件夹,工具中的条目 - >选项 - >环境 - >库路径)。
检查使用子句(您可以使用Search->在文件中查找,检查项目中的所有文件)以获取PerlRegex。
确保您按照上面的确切步骤操作:将PerlRegex的文件夹添加到Project-> Compiler->搜索路径设置中,将PerlRegex添加到您要使用它的单位的uses子句中。如果是在我的机器上的示例代码中工作,但在您的其他项目中没有,问题在于