2

我在 Delphi XE2(更新 4 修补程序 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”,另一个我确定是加倍的,并且IF它的“I”剪裁了)。

追逐 QualityCentral 无济于事(一无所获)。这有时也会发生在类完成(Ctrl-SHIft-C)上。

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

4

1 回答 1

4

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

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

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

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

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

于 2013-01-09T18:59:47.857 回答