![]() |
Es fehlt ein ZEIT Literal
OK, ich habe Delphi 7 im Einsatz.
Und es kotzt mich mittlerweile an das ich immer sowas in der art schrieben muss.
Delphi-Quellcode:
Ich benutze javaFX das kennt zeit literale da sind
If Zeitdatum1-zeitdatum2 >= [i][b]Strtotime[/b][/i]('00:02') then
Delphi-Quellcode:
absolut einfach zu gebrauchen.
2h 7min 2s
Ab welcher Version hat Delphi Zeitliterale ? Und wenn keine das hat, dann bitte ich die jenigen die mit dem Entwicklerteam einen gewissen Kontakt pflegen doch bitttttte den Tipp einzureichen das Zeitliterale in dem NEUEN COMPILER berücksichtigt werden sollten. |
Re: Es fehlt ein ZEIT Literal
Zitat:
Delphi-Quellcode:
1) geht das auch auch einfacher und schneller (Beispiel folgt)
If Zeitdatum1-zeitdatum2 >= [i][b]Strtotime[/b][/i]('00:02') then
und b) unterstützen die Delphitags hier keine Formatierungen (was glaubst Du wie lange ich gerätselt habe, was [i] in dem Zusammenhang soll.
Delphi-Quellcode:
Aber es gibt übrigens auch in den DateUtils
If ((Zeitdatum1-zeitdatum2) >= (2* 1/86400)) then // Lieber einmal zu viel geklammert als einmal zu wenig
![]()
Delphi-Quellcode:
If MinutesBetween(Zeitdatum1,zeitdatum2) >= 2 then // WOW!
Zitat:
Sherlock |
Re: Es fehlt ein ZEIT Literal
Zitat:
Cheers, |
Re: Es fehlt ein ZEIT Literal
Zitat:
Zitat:
Zitat:
Mann, Mann, Mann Du.
Delphi-Quellcode:
das ist NICHT
(2* 1/86400)
Delphi-Quellcode:
SONDERN
Strtotime('00:02')
Delphi-Quellcode:
Danke für die Demonstration der totalen Untauglichkeit dieser Methode Zeitliterale zu imitieren.
Strtotime('00:00:02')
Wie du sicher selbst zugeben musst, ist dieser Weg recht FEHLERANFÄLLIG. Zitat:
Zitat:
mehr Sinn macht als
Delphi-Quellcode:
GIB ES ZU!!! *Pistole auf die Brust setzt* ;)
(2*1/24)+(7*1440)+(2*1/86400)
|
Re: Es fehlt ein ZEIT Literal
Hallo!
Du kannst ja einfach schlau sein und sagen
Delphi-Quellcode:
Dann kannst du immer schreiben
const
h = 1/24; min = h/60; s = min/60;
Delphi-Quellcode:
:shock:
2*h + 7*min + 2*s
Liebe Grüsse Laufi |
Re: Es fehlt ein ZEIT Literal
@Laufi:
Schon klar. Mir gefällt es aber deutlich besser ohne *+*+* Und wenn Überhaupt dann müssten diese Konstanten Global(System Unit)definiert sein. Das 2. Problem ist das, es als Bezeichner die Funktion MATH.MIN überschreibt bzw. h und s als oft als lokale Hilfsvariablen verwendet werden. 2h oder 3s dagegen kann nichts anderes als ein Literal sein. Wie dem auch sei. Es wäre schön wenn sich irgendwer für eine elegante Lösung im nächsten Kompiler von Borland/Inprise/Codegear/Embarcadero einsetzt. Ich weiß nicht mehr wer es war aber irgendjemand hier aus dem Forum hat soweit ich das mal mitbekommen habe ab und zu mal Kontakt zu einem der Entwickler... |
Re: Es fehlt ein ZEIT Literal
Zitat:
Zitat:
Zitat:
Laufis Lösung ist doch gut...einfach entsprechende Konstanten definieren und fertig. Sherlock |
Re: Es fehlt ein ZEIT Literal
Wie wäre es mit einem überladenen Record, in welchem die Konvertierung implizit vorgenommen wird? Dann kannst du Problemlos schreiben
Delphi-Quellcode:
Wäre dies nicht ein Vorschlag?
if dt1 - dt2 < '00:00' then
if dt1 - dt2 < '20s' then if dt1 - dt2 < '20m' then ... |
Re: Es fehlt ein ZEIT Literal
@WInfo:
Das geht sicher nicht unter delphi 7 oder? Ansonsten, wie würde das aussehen? Es muss halt zu TDatetime zuweisungskompatibel sein. |
Re: Es fehlt ein ZEIT Literal
Vielleicht helfen dir auch die Bibliotheksroutinen aus SysUtils weiter: DecodeDate, EncodeDate, FormatDateTime...
Grüße Mikhal |
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.
|
Re: Es fehlt ein ZEIT Literal
Zitat:
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. |
Re: Es fehlt ein ZEIT Literal
Zitat:
Delphi-Quellcode:
so schwierig wäre.
If Zeitdatum1-zeitdatum2 >= EncodeTime(0,2,0,0) then...
|
Re: Es fehlt ein ZEIT Literal
Zitat:
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.... |
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'). |
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 04:20 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 by Thomas Breitkreuz