Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Integer konvertiert zu TDateTime bei Overload (https://www.delphipraxis.net/197113-integer-konvertiert-zu-tdatetime-bei-overload.html)

Rollo62 18. Jul 2018 13:05

Delphi-Version: 5

Integer konvertiert zu TDateTime bei Overload
 
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 :gruebel:
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

Stevie 18. Jul 2018 13:37

AW: Integer konvertiert zu TDateTime bei Overload
 
Bei der Overload Resolution bevorzugt es Delphi, den Typen zu erweitern, anstatt das Vorzeichen zu verlieren.

Rollo62 18. Jul 2018 15:39

AW: Integer konvertiert zu TDateTime bei Overload
 
Hallo Stevie, dankesehr.

Gut zu wissen, denn das hätte ich nicht erwartet.

Interessant wie selbst Kernkonzepte auch immer mal wieder hinterfragt werden müssen :stupid:

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz