Ich hab einem Record ein Event spendieren wollen. Da bekomme ich jetzt plötzlich folgenden Fehler ***:
[DCC Fehler] uMaterial.pas(343): F2084 Interner Fehler: C1264
Was kann man denn da machen (Ich hab von "früher" halt viele Records)?
Delphi-Quellcode:
TMaterialItemChanged = procedure of object;
TMaterialItem = record // Methoden nicht für property TMaterial Items;
private
FE: double;
FG: double;
FGM: double;
FAlphaT: double;
FFyk: double;
FName: string;
FOnMaterialItemChanged: TMaterialItemChanged;
function GetGM(Querdehnzahl: double): double;
procedure SetGM(const Value: double);
public
procedure Clear;
procedure Assign(const Value: TMaterialOldItem);
procedure LoadUserMatFromFile(Index: TMaterialType);
procedure SaveUserMatToFile(Index: TMaterialType);
property E: double read FE write FE;
property G: double read FG write FG;
property GM: double read FGM write SetGM;
property AlphaT: double read FAlphaT write FAlphaT;
property Fyk: double read FFyk write FFyk;
property Name: string read FName write FName;
property OnMaterialItemChanged: TMaterialItemChanged
read FOnMaterialItemChanged write FOnMaterialItemChanged;
end;
TMaterial = record
private
FItems: array [TMaterialType] of TMaterialItem;
function GetItem(Index: TMaterialType): TMaterialItem;
function GetItemNmm2(Index: TMaterialType): TMaterialItem;
procedure Clear;
procedure MaterialItemChanged;
function GetArt(Index: TMaterialType): string;
public
procedure Init(Querdehnzahl: double = 0);
function IndexOf(const Value: string): TMaterialType;
property Art[Index: TMaterialType]: string read GetArt;
property Items[Index: TMaterialType]: TMaterialItem read GetItem; default; // kN/m2;
property ItemsNmm2[Index: TMaterialType]: TMaterialItem read GetItemNmm2;
end;
procedure TMaterial.Clear;
var
I: TMaterialType;
begin
for I := mt_None to mt_BSt550B do
begin
FItems[I].Clear;
FItems[I].OnMaterialItemChanged := MaterialItemChanged;
end;
end; // ***