注意Exit
内联函数中的命令用法!我在这里一直在使用Delphi XE3。
在某些情况下,当调用包含Exit
命令的内联函数,并且内联函数的返回值直接用于时WriteLn()
,编译器会报告错误消息,
“ dcc”以代码1退出。
甚至更糟的是,Delphi IDE会终止而无需任何确认。
function ProcessNumber(const iNumber: Integer): Boolean; inline;
begin
if iNumber = 0 then begin
Result := False;
Exit;
end;
// some code here ...
Result := True;
end;
procedure Test;
begin
writeln( ProcessNumber(0) );
end;
begin
Test;
ReadLn;
end.
但是,如果将内联函数的返回值存储在变量中,然后在中使用该变量WriteLn()
,则不会发生此问题。
procedure Test;
var
b: Boolean;
begin
b := ProcessNumber(0);
writeln(b);
end;
这肯定是一个错误。它发生在我测试过的所有IDE版本中,即XE3,XE7和XE8。老实说,我认为您不能做很多事。对我而言,IDE每次都会终止于编译。我认为您只需要编写不会导致IDE崩溃的代码即可。
您可以使用IDE选项强制编译使用msbuild。这将编译置于单独的过程中,从而确保IDE不会崩溃。但是,这对您没有多大帮助,因为尽管您的IDE不会持续崩溃,但是您仍然无法编译程序!
使用msbuild进行构建时,会出现以下形式的错误:
错误F2084:内部错误:GPFC00000FD-004D3F34-0
GPF代表常规保护错误,即内存访问冲突。据推测,这是一个未处理的异常,在进行编译时会杀死IDE。
我的建议是您将错误报告提交给Quality Portal。这是修复缺陷的唯一方法。尽管不要指望XE3会有修复程序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句