Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Es fehlt ein ZEIT Literal (https://www.delphipraxis.net/138235-es-fehlt-ein-zeit-literal.html)

WInfo 6. Aug 2009 10:08

Re: Es fehlt ein ZEIT Literal
 
Die Überladung von Records wurde mit D2006 implementiert. Für die Zuweisungskompatibilität zu TDateTime müsstest Du hier auch eine entsprechende Routine zur Verfügung stellen. Wie soll sonst der Compiler wissen, wie du es gerne hättest. Aber dies bräuchte man nur Einmalig realisieren und kann es ganz normal verwenden wie myDT.Jahr := 2999 oder myDT.Monat := Dezember, etc.

QuickAndDirty 6. Aug 2009 10:16

Re: Es fehlt ein ZEIT Literal
 
Zitat:

Zitat von mikhal
Vielleicht helfen dir auch die Bibliotheksroutinen aus SysUtils weiter: DecodeDate, EncodeDate, FormatDateTime...

Grüße
Mikhal

Sind mir alle bekannt...ich arbeite für eine Zeiterfassungs Firma...
Diese Routinen ersetzen kein Zeitliteral.

Ich bin unter anderem so genervt (also sorry wegen des Tons..) ,
weil ich eigentlich ständig Zeitliterale benötigen täte.

Zoot 6. Aug 2009 14:06

Re: Es fehlt ein ZEIT Literal
 
Zitat:

Zitat von QuickAndDirty
Und es kotzt mich mittlerweile an das ich immer sowas in der art schrieben muss.
Delphi-Quellcode:
If Zeitdatum1-zeitdatum2 >= [i][b]Strtotime[/b][/i]('00:02') then

Wüsste nicht, was an
Delphi-Quellcode:
If Zeitdatum1-zeitdatum2 >= EncodeTime(0,2,0,0) then...
so schwierig wäre.

QuickAndDirty 6. Aug 2009 14:42

Re: Es fehlt ein ZEIT Literal
 
Zitat:

Zitat von Zoot
Wüsste nicht, was an
Delphi-Quellcode:
If Zeitdatum1-zeitdatum2 >= EncodeTime(0,2,0,0) then...
so schwierig wäre.

Nichts, nur das es doof aussieht und KEIN zur Komplierzeit zur Verfügung stehendes "LITERAL" ist.
Es mag Dir nicht aufgefallen sein aber,
- du verwendest eine FUNKTION gesucht ist ein LITERAL.
- ich selbst bin z.Z. auch gezwungen Funktionen oder RECHUNGEN zur Zeitangabe zu nutzen und empfinde dies als störend.
- die eine zitierte Zeile war einfach als ein Beispiel gedacht. Ich bin in der Lage Zeitwerte in Ausdrücken unterzubringen, dies ist nicht das Problem. Nur ist es GRUNDSÄTZLICH suboptimal im Hinblick auf die LESBARKEIT des Codes kein ZEITliteral zu verwenden.

Du benutzt EncodeTime als Zeitliteral-Ersatz für untypisierte Konstanten? Ich ziehe meinen Hut .

Ich stelle mit erschrecken fest, das sich die meisten Delphianer an dieses unkomfortable Nachbilden von Zeitliteralen bereits gewöhnt haben....

hazard999 6. Aug 2009 15:36

Re: Es fehlt ein ZEIT Literal
 
Gut das Du dich so in deinem Ton vergreifst.

Delphi kann es nicht, C# kann es nicht. JavaFX (aber auch nur FX soweit ich recherchiert habe, die Standard-Java-Api liefert sowas nicht soweit ich es in 10 min eruieren konnte auch nicht) kann sowas. Schön.

Es konnte Dir keiner helfen, weil der Compiler Out-Of-The-Box sowas nicht mit bringt.

PS: DateTime ist ein primitiver Datentyp, keine Klasse.

PSS: Bau dir halt ein LiteralToDateTime

t2 - t1 > LiteralToDateTime('2min').

Mithrandir 6. Aug 2009 17:18

Re: Es fehlt ein ZEIT Literal
 
Ich konnte mich in den vergangen Jahren nicht darüber aufregen, dass es sowas wie "Zeitliterale" nicht gibt.

Und wenn du gerne sowas wie "7h 43min 3s" schreiben möchtest.. Wer hindert dich daran, dir ne kleine Interpreter-Funktion zu schreiben, notfalls auch mithilfe von RegEX? Wenn du sowas in deinem aktuellen Projekt immer wieder brauchst, wäre das eine Alternative.

Und wenn du das auch nicht willst, dann wechsel halt die Sprache. JavaFX scheint ja echt toll zu sein.

Nachtrag: Sehe gerade, hazard999 hat das quasi schon ähnlich formuliert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 Uhr.
Seite 2 von 2     12   

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