我实际上面临着一个柏林和东京Delphi编译器都出现的编译问题。当我调用内联函数时会发生这种情况,内联函数本身会调用READ函数也已内联的属性... 这是导致致命内部错误的示例程序:
unit TestForm;
interface
uses System.Classes, Vcl.Forms, Vcl.Controls, Vcl.StdCtrls;
type
TForm1 = class(TForm)
private
public
end;
TProgType = (_Prog1,_Prog2);
TCxProgTypeHlp = record helper for TProgType
private
function GetIsProg2 : boolean; inline;
public
property IsProg2 : boolean read GetIsProg2;
end;
TProgAccess = class
private
fProgType : TProgType;
public
function ProgType : TProgType;
function IsProg2 : boolean; inline;
function CheckProg(const ProgTag : string) : boolean;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses System.SysUtils;
function TCxProgTypeHlp.GetIsProg2 : boolean;
begin
Result:=Self = _Prog2;
end;
function TProgAccess.ProgType : TProgType;
begin
Result:=fProgType;
end;
function TProgAccess.IsProg2 : boolean;
begin
Result:=ProgType.IsProg2;
end;
function TProgAccess.CheckProg(const ProgTag : string) : boolean;
begin
Result:=IsProg2;
end;
end.
当我删除任何内联语句时,编译器错误消失。我在做什么有误解吗? 感谢您的帮助。
答案 0 :(得分:5)
通常,对于内部编译器错误,您无能为力。在您的情况下,您找到了一种解决方法,这表明您的代码没有错。
“内部错误”之后的信息包含一个或多个字符,后跟一个数字,指示发生错误的编译器本身中的文件和行号。尽管此信息可能对您没有帮助,但如果您报告错误以及何时报告错误,它可以帮助我们(Embarcadero)找出问题。请务必记下此信息,并将其包含在内部错误描述中。
只需提交QP错误报告并继续。