Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

QuickAndDirty 5. Aug 2009 16:08


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:
If Zeitdatum1-zeitdatum2 >= [i][b]Strtotime[/b][/i]('00:02') then
Ich benutze javaFX das kennt zeit literale da sind
Delphi-Quellcode:
2h 7min 2s
absolut einfach zu gebrauchen.

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.

Sherlock 5. Aug 2009 16:39

Re: Es fehlt ein ZEIT Literal
 
Zitat:

Zitat von QuickAndDirty
OK, ich habe Delphi 7 im Einsatz.
Und es kotzt mich mittlerweile an das ich immer sowas in der art schrieben muss.

Buh, was für eine Ausdrucksweise :angel2:


Delphi-Quellcode:
If Zeitdatum1-zeitdatum2 >= [i][b]Strtotime[/b][/i]('00:02') then
1) geht das auch auch einfacher und schneller (Beispiel folgt)
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:
If ((Zeitdatum1-zeitdatum2) >= (2* 1/86400)) then // Lieber einmal zu viel geklammert als einmal zu wenig
Aber es gibt übrigens auch in den DateUtils Delphi-Referenz durchsuchenMinutesBetween. Damit ist es ganz einfach.
Delphi-Quellcode:
If MinutesBetween(Zeitdatum1,zeitdatum2) >= 2 then  // WOW!


Zitat:

Zitat von QuickAndDirty
Ich benutze javaFX das kennt zeit literale da sind
Delphi-Quellcode:
2h 7min 2s
absolut einfach zu gebrauchen.

Mit vermutlich vernachlässigbarer Performance...im Sinne von "Reden wir lieber nicht drüber " :D


Sherlock

mjustin 5. Aug 2009 16:44

Re: Es fehlt ein ZEIT Literal
 
Zitat:

Zitat von Sherlock
Mit vermutlich vernachlässigbarer Performance...im sinne von "Reden wir lieber nciht drüber " :D

Kommt drauf an - wenn beide Schreibweisen der Konstanten (also auch bei Verwendung von StrToTime) schon vom Compiler ausgewertet werden können, ist der Laufzeitunterschied praktisch null.

Cheers,

QuickAndDirty 6. Aug 2009 09:15

Re: Es fehlt ein ZEIT Literal
 
Zitat:

Zitat von Sherlock
Zitat:

Zitat von QuickAndDirty
OK, ich habe Delphi 7 im Einsatz.
Und es kotzt mich mittlerweile an das ich immer sowas in der art schrieben muss.

Buh, was für eine Ausdrucksweise :angel2:

Du solltest mal meine Bezeichner sehen....

Zitat:

Zitat von Sherlock
Delphi-Quellcode:
If Zeitdatum1-zeitdatum2 >= [i][b]Strtotime[/b][/i]('00:02') then
1) geht das auch auch einfacher und schneller (Beispiel folgt)
und b) unterstützen die Delphitags hier keine Formatierungen (was glaubst Du wie lange ich gerätselt habe, was [i] in dem Zusammenhang soll.

XD . OK . Wann wird dieser Fehler von VBulletin geändert? (Ich liebe die Kundenperspektive!)

Zitat:

Zitat von Sherlock
Delphi-Quellcode:
If ((Zeitdatum1-zeitdatum2) >= (2* 1/86400)) then // Lieber einmal zu viel geklammert als einmal zu wenig

SUPER, ich bekomme kein ZEITLITERAL sonder ne Aufforderung mit Bruchteilen von Tagen zu RECHNEN.
Mann, Mann, Mann Du.

Delphi-Quellcode:
(2* 1/86400)
das ist NICHT
Delphi-Quellcode:
Strtotime('00:02')
SONDERN
Delphi-Quellcode:
Strtotime('00:00:02')
Danke für die Demonstration der totalen Untauglichkeit dieser Methode Zeitliterale zu imitieren.
Wie du sicher selbst zugeben musst, ist dieser Weg recht FEHLERANFÄLLIG.

Zitat:

Zitat von Sherlock
Aber es gibt übrigens auch in den DateUtils Delphi-Referenz durchsuchenMinutesBetween. Damit ist es ganz einfach.
Delphi-Quellcode:
If MinutesBetween(Zeitdatum1,zeitdatum2) >= 2 then  // WOW!

Toll. Denkst du es geht mir ausschließlich um Minuten?

Zitat:

Zitat von Sherlock
Zitat:

Zitat von QuickAndDirty
Ich benutze javaFX das kennt zeit literale da sind
Delphi-Quellcode:
2h 7min 2s
absolut einfach zu gebrauchen.

Mit vermutlich vernachlässigbarer Performance...im Sinne von "Reden wir lieber nicht drüber " :D

Die Performance wird vom Literal nicht beeinflusst. Und du musst zu geben das es im Hinblick auf einen "lesbaren" Quellcode
mehr Sinn macht als
Delphi-Quellcode:
(2*1/24)+(7*1440)+(2*1/86400)
GIB ES ZU!!! *Pistole auf die Brust setzt* ;)

Laufi 6. Aug 2009 09:39

Re: Es fehlt ein ZEIT Literal
 
Hallo!

Du kannst ja einfach schlau sein und sagen
Delphi-Quellcode:
const
  h = 1/24;
  min = h/60;
  s = min/60;
Dann kannst du immer schreiben
Delphi-Quellcode:
2*h + 7*min + 2*s
:shock:

Liebe Grüsse
Laufi

QuickAndDirty 6. Aug 2009 09:50

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...

Sherlock 6. Aug 2009 09:55

Re: Es fehlt ein ZEIT Literal
 
Zitat:

Zitat von QuickAndDirty
Zitat:

Zitat von Sherlock
Zitat:

Zitat von QuickAndDirty
OK, ich habe Delphi 7 im Einsatz.
Und es kotzt mich mittlerweile an das ich immer sowas in der art schrieben muss.

Buh, was für eine Ausdrucksweise :angel2:

Du solltest mal meine Bezeichner sehen....

:D

Zitat:

Zitat von QuickAndDirty
Zitat:

Zitat von Sherlock
Aber es gibt übrigens auch in den DateUtils Delphi-Referenz durchsuchenMinutesBetween. Damit ist es ganz einfach.
Delphi-Quellcode:
If MinutesBetween(Zeitdatum1,zeitdatum2) >= 2 then  // WOW!

Toll. Denkst du es geht mir ausschließlich um Minuten?

Diese Funktion hat viele Geschwister, die sich alle um die jeweiligen Zeitabschnitte kümmern können von YearsBetween bis MillisecondsBetween ist alles da. ;)

Zitat:

Zitat von QuickAndDirty
Zitat:

Zitat von Sherlock
Zitat:

Zitat von QuickAndDirty
Ich benutze javaFX das kennt zeit literale da sind
Delphi-Quellcode:
2h 7min 2s
absolut einfach zu gebrauchen.

Mit vermutlich vernachlässigbarer Performance...im Sinne von "Reden wir lieber nicht drüber " :D

Die Performance wird vom Literal nicht beeinflusst. Und du musst zu geben das es im Hinblick auf einen "lesbaren" Quellcode
mehr Sinn macht als
Delphi-Quellcode:
(2*1/24)+(7*1440)+(2*1/86400)
GIB ES ZU!!! *Pistole auf die Brust setzt* ;)

Ja doch :cheers:

Laufis Lösung ist doch gut...einfach entsprechende Konstanten definieren und fertig.

Sherlock

WInfo 6. Aug 2009 09:56

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:
if dt1 - dt2 < '00:00' then
if dt1 - dt2 < '20s' then
if dt1 - dt2 < '20m' then
...
Wäre dies nicht ein Vorschlag?

QuickAndDirty 6. Aug 2009 10:01

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.

mikhal 6. Aug 2009 10:07

Re: Es fehlt ein ZEIT Literal
 
Vielleicht helfen dir auch die Bibliotheksroutinen aus SysUtils weiter: DecodeDate, EncodeDate, FormatDateTime...

Grüße
Mikhal


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 Uhr.
Seite 1 von 2  1 2      

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