2

Delphi XE2 (Update 4 Hotfix 1) にバグがあり、これは私が作業しているレガシー プロジェクト (D6 から D7、D2006、そして最終的に XE2 に進化) で何度も再現されますが、それをトリガーする方法がわかりませんでした。より小さなプロジェクトで。

最新の時間は、アプリの「隠しポップアップ」のイベント ハンドラーの作成時にトリガーされました。メニュー オプションをクリックして Click ハンドラを作成すると、これが発生します。

pprocedure TMainForm.Blablabla1Click(Sender: TObject);
begin

end;

rocedure TMainForm.FormActivate(Sender: TObject);

IDE が次のメソッドの宣言の内側に新しいコードを挿入したことがわかります...しかし、それだけではありません。ほとんどの場合、DPR ではコードも破損します。

  AApplication.CreateForm(TDM_DataAcc, DM_DataAcc);
  AApplication.CreateForm(TMainForm, MainForm);
  pplication.CreateForm(Tfrm_login, frm_login);
  f frm_Login.CanLogin = mrOK then Application.Run

(ほぼそのようです。3番目のApplication.CreateFormが「A」を切り取ったかどうかは覚えていません。もう1つは2倍になり、IF「I」が切り取られていると確信しています)。

QualityCentral を追跡しても役に立ちません (何も見つかりませんでした)。これは、クラス補完 (Ctrl-Shift-C) でも発生することがあります。

誰かがそのバグの原因を知っているので、新しいアプリケーションを作成して Embarcadero に送信できますか?

4

1 に答える 1

4

このような動作は、IDE がファイル内の文字数を誤ってカウントしていることを示しています。開発者が予期していなかった可能性のある「ファイルの奇妙な点」がいくつかあり、文字インデックスが誤って計算される可能性があります。

  • ファイルに異常な行末がないか確認してください。たとえば、キャリッジ リターンがない行はエディターでは正しく表示されますが、プログラムの他の場所で行番号が正しくない可能性があります。

  • 非改行スペースは、通常どおり表示される別の種類の文字であり、正しく解析されることもありますが、文字の「通常の」バージョン (通常のスペース) が 1 つしか使用しない場合、UTF-8 で表すと複数バイトを占有します。Web ブラウザからコードをコピーすると、このような文字が取得されることがあります。

  • UTF-8 または UTF-16 ソース ファイルの不適切なバイト オーダー マークも問題を引き起こす可能性があります。

多くの場合、ソース ファイルをメモ帳または 16 進エディタで開くと、これらの問題を特定するのに役立ちます。

于 2013-01-09T18:59:47.857 に答える