0

我想在 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 无法编译使用的单元 '..\Shared\Classes\TPerlRegEx\PerlRegEx.pas'

当我使用“pcre_dispose”注释掉这些行时,它可以编译。但是我当然不想通过不释放东西来造成内存泄漏……那可能是什么原因造成的呢?

任何有想法的人?

非常感谢!

4

1 回答 1

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对这个测试用例的功能进行了非常复杂的测试。:-)

如果上述方法对您有用,并且您在自己的项目中仍然遇到问题:

  1. 检查您的旧项目以获取对旧版本 TPerlRegex 的引用(搜索或库路径中的另一个文件夹,Tools->Options->Environment->Library Path 中的条目)。

  2. 检查 PerlRegex 的 uses 子句(您可以使用 Search->Find in Files,检查 All Files in Project)。

  3. 确保您遵循了上面的确切步骤:将 PerlRegex 的文件夹添加到您的项目->编译器->搜索路径设置中,将 PerlRegex 添加到您要使用它的单元的使用子句中。如果它在我的示例中的代码中有效你的机器,但不在你的其他项目中,问题就在那里

于 2012-09-11T13:07:59.123 回答