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 に答える