Ich stehe auf dem Schlauch. Folgender Code funktioniert nicht, ich kann meine Helper-Methode
IWantThis()
nicht aufrufen:
Delphi-Quellcode:
program RecordHelper;
{$APPTYPE CONSOLE}
{$R *.res}
uses
EnumUnit in 'EnumUnit.pas',
WrapperUnit in 'WrapperUnit.pas';
type
TSomeEnumHelper = record helper for TSomeEnum
procedure IWantThis();
end;
procedure TSomeEnumHelper.IWantThis();
begin
//
end;
var
wrapper: TSomeWrapper;
begin
wrapper.enum.IDontWantThis();
wrapper.enum.IWantThis(); // <-- E2003
end.
Die beiden anderen Units:
Delphi-Quellcode:
unit EnumUnit;
interface
type
TSomeEnum = (yes, no);
TSomeEnumHelper =
record helper
for TSomeEnum
procedure IDontWantThis();
end;
implementation
{ TSomeEnumHelper }
procedure TSomeEnumHelper.IDontWantThis();
begin
//
end;
end.
Delphi-Quellcode:
unit WrapperUnit;
interface uses EnumUnit;
type
TSomeWrapper =
record
enum: TSomeEnum;
end;
implementation
end.
Warum ist das so? Mir leuchtet ein dass es vielleicht auch nicht die tollste Idee ist, den Enum-Typen sowie den Helper in der selben
Unit zu deklarieren. Trotzdem- Sollte das wirklich so sein?
Ein Workaround wäre so etwas in der Richtung, dann geht es komischerweise:
Delphi-Quellcode:
var
wrapper: TSomeWrapper;
theEnum: TSomeEnum;
begin
wrapper.enum.IDontWantThis();
//wrapper.enum.IWantThis(); // <-- E2003
theEnum := wrapper.enum;
theEnum.IWantThis(); // works
end.