我为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
答案 0 :(得分:1)
愚蠢...代码中的答案正确... nStartPos初始化为0,这导致PosEx失败。奇怪的是,当从设计包中执行代码时它起作用了......