Einzelnen Beitrag anzeigen

BlackSeven

Registriert seit: 25. Sep 2004
79 Beiträge
 
Delphi XE7 Professional
 
#1

Überladene Funktion wird nicht erkannt

  Alt 27. Feb 2013, 14:59
Hallo!

Folgender Code schlägt mit dem Compiler-Error "[DCC Error] Task.dpr(46): E2250 There is no overloaded version of 'CreateTask' that can be called with these arguments" fehl:
Delphi-Quellcode:
program Task;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

type

  ITask = interface
    ['{45C4232F-EA00-4096-88F9-6DD78AD0CB0C}']
  end;

  TAdapterTask = class(TInterfacedObject, ITask)
  end;

  TTask = class(TAdapterTask)
  end;

  TTaskDelegate = reference to procedure(const ATask: ITask);

  TTestTask = class(TTask)
  end;

  Threading = class
  public
    class function CreateTask(const ATask: ITask): ITask; overload;
    class function CreateTask(const ATask: TTaskDelegate): ITask; overload;
  end;

class function Threading.CreateTask(const ATask: ITask): ITask;
begin
end;

class function Threading.CreateTask(const ATask: TTaskDelegate): ITask;
begin
end;

var
  T: ITask;

begin

// T := TTestTask.Create;
  Threading.CreateTask(TTestTask.Create);

end.
Eigentlich wollte ich mir die Zeile mit "T := TTestTask.Create;" sparen und eine neue Funktion einführen.
Kommentiere ich die 2. Funktion "CreateTask(const ATask: TTaskDelegate)" aus, funktioniert es wie erwartet.

Gibt es einen Workaround, um das ganze Problem zu umgehen?
  Mit Zitat antworten Zitat