2009-06-29 53 views
1

我正在使用Turbo Explorer 2006(更新2),有时IDE崩溃在某个单元中,特别是当我尝试使用类完成时。该单元(和整个项目)正在投入生产,并且运行良好多年,每天都进行修改,只是IDE工具失败。崩溃Delphi IDE的已知构造

通常如果出现这种情况,德尔福生存的崩溃,但IDE的某些部分停止活动(如调试值的工具提示表达式,其单位是不是在.dpr)

我怀疑解析器上的一些死因为这个单位是一个巨大的系统交换机,所以可能是某些特定的构造。

是否知道杀死IDE的特定构造?我想解决这个问题,以便我可以再次使用类完成。

回答

1

谷歌搜索[德尔福涡轮“班完成”崩溃]位于a bug report with what sounds like the same problem you are seeing。错误报告列出了一个解决方法(»),至少对于其给定的测试用例,将“TTest”更改为“TButton”并删除“TButton = class(TTest)”«),但我不知道它是否适用于您的案例。

0

我有一些问题与动态多维数组:

type 
    Foo = array of array of Integer; 

代码完成和重构没有工作,它给了一个错误有关;预计在该声明的某处,但它编译得很好。

我固定它通过modifiying的类型声明如下:

type 
    Foo = array of TIntegerDynArray; //TIntegerDynArray is declared in Types unit 
+0

是的,也见过一个。这是一个拒绝,而不是崩溃,虽然 – 2010-02-02 09:50:57

+0

几乎每个“复杂”的声明顺便说一句。字段xxx:(x,y,z)的集合;也拒绝完成 – 2011-09-25 15:37:21

0
{$ifdef something} 
    type myclass = class 
{$else] 
    type myclass = class(existingclass); 
{$endif} 

似乎混淆,但不会崩溃。

此外ifdef属性声明似乎扰乱了系统。

在D2009,

类型myrecord =记录 成才:设置的0..31; 结束;

似乎抑制完成(它关于SET笨拙),但没有崩溃。

更新

它是“设置”构建体本身完成不能处理(而编译器可以)

+1

也许一个这样的ifdef混淆了IDE,许多这样的ifdefs会崩溃它? – user192472 2010-06-21 10:48:24

0

Delphi的IDE和(在较小程度上)编译器是相当脆弱。许多非预期的构造会引起奇怪的问题。因此,您不容易猜到案件中的问题。 (你用这种方式描述你的单元,我怀疑IFDEF可能会扮演一个角色。)

难道你不能注释掉代码上的部分,直到问题消失,看到whay可能导致它吗?如果您的单位是A B C D,尝试用

(* A B *) C D 

,如果不引起错误,请尝试

A B (* C D *) 

那么也许

(* A *) B (* C D *) 

等等,直到你的单位,只有一小部分不可归约遗迹。既然你正在测试IDE而不是编译器,你可能不需要你的注释掉的单元来编译没有错误。