0
我爲我的delphi7 IDE創建了一個設計時包。我希望表單上的組件在設計時在上下文菜單中提供一些菜單項。當我調試軟件包時,我可以看到我的代碼得到執行,但是當涉及到使用內置函數PosEx的行時,行爲會讓我感到困惑。在調試器中,我可以看到要搜索的文本包含要搜索的部分,但函數返回0!而且,如果我直接執行此操作(而不是在項目中使用它進行調試),它一切正常。PosEx在設計時包中不起作用
這是我的代碼:
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
是的。甚至在文檔中。 :-)「**如果沒有找到SubStr,如果Offset大於S的長度,或者** Offset小於1,則PosEx返回0 ** **(強調增加)它不應該工作無論如何,儘管如此。 – 2013-04-09 20:03:20