PosEx不适用于设计时包

时间:2013-04-06 06:03:17

标签: delphi debugging package delphi-7 design-time

我为delphi7 IDE创建了一个设计时包。我希望表单上的组件在设计时在上下文菜单中提供一些菜单项。当我调试包时,我可以看到我的代码被执行,但当涉及到使用内置函数PosEx的行时,行为会让我感到困惑。在调试器中,我可以看到要搜索的文本包含要搜索的部分,但该函数仍然返回0!而且,如果我直接执行此操作(而不是在项目中使用它调试IDE),一切正常。

这是我的代码:

function RemoveLeftOverPlaceHolders( var PIO_sTemplate: string);
var nStartPos: integer;
const JPCG_FOREACH_START = '{%foreach ';
begin
  nStartPos := 0;

  repeat
    nStartPos := PosEx( JPCG_FOREACH_START, PIO_sTemplate, nStartPos ); // <-- nStartPos is always 0 !
    if nStartPos > 0 then begin
      ...
    end;
  until nStartPos = 0;
end;

在IDE中执行期间是否可能更改字符串类型? (任何ansistring-unicode问题?)

编辑:我正在使用GExperts和DelphiSpeedUp

1 个答案:

答案 0 :(得分:1)

愚蠢...代码中的答案正确... nStartPos初始化为0,这导致PosEx失败。奇怪的是,当从设计包中执行代码时它起作用了......

相关问题