0

我为我的 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

4

1 回答 1

1

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

于 2013-04-09T19:06:31.677 回答