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?