Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#1

Integer konvertiert zu TDateTime bei Overload

  Alt 18. Jul 2018, 14:05
Delphi-Version: 5
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
  Mit Zitat antworten Zitat