Ast*_*oth 10 delphi delphi-xe3
注意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.
Run Code Online (Sandbox Code Playgroud)
但是,如果内联函数的返回值存储在变量中,然后使用该变量WriteLn(),则不会发生该问题.
procedure Test;
var
b: Boolean;
begin
b := ProcessNumber(0);
writeln(b);
end;
Run Code Online (Sandbox Code Playgroud)
Dav*_*nan 10
这当然是一个错误.它出现在我测试的所有IDE版本中,XE3,XE7和XE8.老实说,我不认为你可以做很多事情.对我来说,IDE每次都会在编译时终止.我认为你只需要以不会导致IDE崩溃的方式编写代码.
您可以使用强制编译的IDE选项来使用msbuild.这会将编译放入单独的进程中,从而确保IDE不会崩溃.它对你帮助不大,因为虽然你的IDE不会一直死,但你仍然无法编译你的程序!
使用msbuild构建时,会出现以下形式的错误:
错误F2084:内部错误:GPFC00000FD-004D3F34-0
GPF代表一般保护错误,即内存访问冲突.这可能是一个未处理的异常,在进行编译时会终止IDE.
我的建议是您向Quality Portal提交错误报告.这是修复缺陷的唯一方法.虽然不期望XE3能够得到解决方案.