如何重现此Code Completion错误?

时间:2013-01-09 18:05:17

标签: delphi delphi-xe2 code-completion

我有一个关于Delphi XE2(Update 4 Hotfix 1)的错误,它在我工作的遗留项目上重现了很多次(它从D6演变为D7,D2006,最后是XE2),但我不知道如何在较小的项目中触发它。

最新时间,它是在为应用程序上的“隐藏弹出窗口”创建事件处理程序时触发的。当我单击菜单选项以创建Click处理程序时,会发生这种情况。

pprocedure TMainForm.Blablabla1Click(Sender: TObject);
begin

end;

rocedure TMainForm.FormActivate(Sender: TObject);

你可以看到IDE插入新代码INSIDE下一个方法的声明......但并非全部。 几乎所有时候,在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

(这几乎就是这样,我不记得第三个Application.CreateForm是否得到它''A'被剪裁或者没有,另一个我肯定会加倍并且IF得到它''我“夹住了。”

追逐QualityCentral并没有帮助(什么也没找到)。有时在类完成(Ctrl-SHift-C)上也会发生这种情况。

有人知道是什么触发了这个bug,所以我可以创建一个新的应用程序并将其发送给Embarcadero?

1 个答案:

答案 0 :(得分:4)

这样的行为表明IDE错误地计算了文件中的字符。开发人员可能没有预料到有几个“文件奇怪”,这可能会导致字符索引计算错误。

  • 检查文件中是否存在异常行结尾。例如,缺少回车符的行将在编辑器中正确显示,但可能导致程序中其他位置的行号不正确。

  • 非中断空格是另一种正常出现的字符,甚至可能正确解析,但在UTF-8中以字符“普通”版本(常规空间)表示时占用多个字节只占一个。如果从Web浏览器复制代码,有时会获得此类字符。

  • UTF-8或UTF-16源文件的字节顺序标记不正确也可能导致问题。

通常,在记事本或十六进制编辑器中打开源文件可以帮助您识别这些问题。