Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Objekt als tDateTime übergeben? (https://www.delphipraxis.net/199900-objekt-als-tdatetime-uebergeben.html)

Getox 28. Feb 2019 14:51

Delphi-Version: XE3

Objekt als tDateTime übergeben?
 
Moin,

ich möchte mir gerne eine eigene DateTime Klasse bauen.

Da TDateTime im Grunde nichts anderes als ein Double ist, hat es natürlich auch keine Funktionen oder ähnliches. Das meiste kann man mit Funktionen aus DateUtils oder mit Trunc und Frac machen... aber ich würde gerne, dass alles was ich so brauche in meinem DateTime Objekt direkt drin ist. Also myDate.getUhrzeit, myDate.getWochentag oder auch Funktionen wo ich direkt einzelne Elemente des Datums oder der Uhrzeit setzen/verändern kann. Also myDate.setMonat(aMonat: tMonatEnum) oder myDate.incHour(aAnzahl: Integer). Ja Die Namen habe ich mir gerade ganz schnell und sehr denglisch aus den Fingern gesaugt.

Soweit ist das technisch ja noch kein Problem... aber bekomme ich das irgendwie hin, dass ich Funktionen, die ein tDateTime als Parameter verlangen einfach mein Objekt geben kann? Da TDateTime an sich keine Klasse ist, kann ich ja auch nicht davon ableiten.

Natürlich könnte ich auch einfach das interne tDateTime per Property rausholen irgendeineProzedur(myDate.DateTime) aber ich würde es cooler finden einfach stumpf mein Objekt da reinzugeben.

hoika 28. Feb 2019 15:05

AW: Objekt als tDateTime übergeben?
 
Hallo,
Zitat:

dass ich Funktionen, die ein tDateTime als Parameter verlangen einfach mein Objekt geben kann
Kurze Antwort:
nein, genau für seine Typsicherheit/Typstrenge ist Delphi bekannt.

Lange Antwort:
Es kommt drauf an ...

Bsp:
DateToStr, erwartet ein TDateTime

Du könntest dir eine eigene Unit DateUtilsEx erzeugen,
mit je 2 überladenen Methoden drin.

function MyDateToStr(ADateTime: TDateTime): String; overload;
function MyDateToStr(ADateTime: TDateTimeClass): String; overload;

Inwiefern es sogar geht das My wegzulassen, müsstest Du ausprobieren.
Ich denke, es geht nicht, weil ja auch die Originalmethode als overload gekennzeichnet werden müsste.

TiGü 1. Mär 2019 08:14

AW: Objekt als tDateTime übergeben?
 
Nicht das Rad neu erfinden. Diese Unit einbinden, verwenden und nach belieben erweitern:
https://github.com/colinj/TDateTimeH...TimeHelper.pas

hoika 1. Mär 2019 08:25

AW: Objekt als tDateTime übergeben?
 
Hallo,
XE3 konnte schon record helper?

https://www.thoughtco.com/record-hel...r-sets-1058204

Tatsächlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 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