Hallo Pascallianer,
ich habe gerade einen interessaten Fall beim Overload
So sehen meine Funktionen aus
Delphi-Quellcode:
function Execute( Action: TProc ) : TDateTime; overload;
function Execute( Action: TProc; ADelay: TTimeSpan ) : TDateTime; overload;
function Execute( Action: TProc; ADelay: Cardinal ) : TDateTime; overload;
function Execute( Action: TProc; AExecuteAfter: TDateTime ) : TDateTime; overload;
Das ist der Aufruf
Delphi-Quellcode:
var
LDelay: Integer;
begin
TWorker.Execute(procedure
begin
DoSomething;
end
, LDelay);
Bisher dachte ich
das Integer immer bevorzugt zu Cardinal gecastet wird, wenn möglich.
Beim Debuggen sehe ich in oberem Beispiel aber das
LDelay von Integer zu TDateTime gecastet wurde.
Wie kann das sein ?
TDateTime ist Double,
TTimeSpan ist ein record
Sollte da nicht Integer zu Cardinal konvertiert werden (was es auch bisher tat) ?
Könnte es einen Unterschied machen ob ich
diese Funktion aus einen Thread heraus aufrufe ?
Rollo