Delphi: F2084 Internal Error: C13394

Задача: Создаем record — rec1 с функцией, которая возвращает record — rec2. При вызове любого метода в rec2 — возникает ошибка [DCC Fatal Error] F2084 Internal Error: C13394
Инструментарий: Delphi 2010
Решение: У нас следующая ситуация, есть код вида:

TRec2 = record
public
function GetStr : WideString;
end;
TRec1 = record
public
function GetRec2 : Rec2;
end;

Вызываем метод

var
Rec1 : TRec1;
SomeStr : WideString;
begin
...
SomeStr := Rec1.GetRec2.GetStr;
end;

Возникает ошибка:

[DCC Fatal Error] UnitName.pas(xxx): F2084 Internal Error: C13394

Немного поискал — нашел соответствующие отчеты об ошибках на Quality Central #82882 и #65595
Оба помеченные как исправлены в Build: : 15.0.3722.28600 если посмотреть на та таблицу Compiler Version то можно увидеть что 15 версия продукта — это Delphi XE.  Обновить Delphi не вариант.

И все же как обойти ошибку F2084 Internal Error: C13394. Нам нужно присвоить промежуточный внутренней переменной результат функции GetRec2, и только потом вызвать метод. Что получилось в результате:

var
Rec1 : TRec1;
Rec2 : TRec2;
SomeStr : WideString;
begin
...
Rec2 := Rec1.GetRec2;
SomeStr := Rec2.GetStr;
end;

PS: Скорее всего есть обновление на Delphi 2010 которое исправляет данный баг.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *