![]() |
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:
Das ist der Aufruf
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;
Delphi-Quellcode:
Bisher dachte ich das Integer immer bevorzugt zu Cardinal gecastet wird, wenn möglich.
var
LDelay: Integer; begin TWorker.Execute(procedure begin DoSomething; end , LDelay); 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 |
AW: Integer konvertiert zu TDateTime bei Overload
Bei der Overload Resolution bevorzugt es Delphi, den Typen zu erweitern, anstatt das Vorzeichen zu verlieren.
|
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 09:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz