我有一个关于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?
答案 0 :(得分:4)
这样的行为表明IDE错误地计算了文件中的字符。开发人员可能没有预料到有几个“文件奇怪”,这可能会导致字符索引计算错误。
检查文件中是否存在异常行结尾。例如,缺少回车符的行将在编辑器中正确显示,但可能导致程序中其他位置的行号不正确。
非中断空格是另一种正常出现的字符,甚至可能正确解析,但在UTF-8中以字符“普通”版本(常规空间)表示时占用多个字节只占一个。如果从Web浏览器复制代码,有时会获得此类字符。
UTF-8或UTF-16源文件的字节顺序标记不正确也可能导致问题。
通常,在记事本或十六进制编辑器中打开源文件可以帮助您识别这些问题。