Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Ich kann meinen eigenen Helper nicht benutzen

  Alt 15. Jun 2016, 20:07
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.
  Mit Zitat antworten Zitat