Mit Zeitwerten rechnen -> Wege, um StrToTime zu umgehen ?
spacer
Autor Nachricht
trm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 312
Erhaltene Danke: 7

Windows 7x64
Delphi 7
BeitragVerfasst: Di 15.11.11 22:48 
Hi,


in MaskEditfeldern habe ich verschiedene Uhrzeiten stehen im Format:

ausblenden Delphi-Quelltext markieren
1:
!90:00;1;_


so dass Zeiten von 00:00 bis 23:59 (Uhr) möglich sind (wird extra geprüft).

Es gibt paarweise zwei Felder, eines für den Start und eines für das Ende Bsp.:

ausblenden Quelltext markieren
1:
2:
Edit1 = 07:00
Edit2 = 12:00


Nun versuche ich mit einem definierten Intervall Bsp.:

ausblenden Quelltext markieren
1:
Intervall = 15


die Startzeit bis zur Endzeit zu durchlaufen und einen Wert mit einem anderen zu vergleichen.

Dies scheitert wohl an der Umrechnung..

ausblenden Delphi-Quelltext markieren
1:
StrToTime(Edit1.Text + ':00')


..da hier irgendwie ein Rundungfehler eintritt (?)

Bei manchen Werten wird der Vergleich korrekt ausgeführt, bei manch anderen nicht.

Dies hier wird positiv verglichen: 0,34375
Dies hier nicht: 0,36458333333

Im Debugger sind aber die Werte bei mVergleich gleich.

Was kann ich da tun ?


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 15.11.2011 um 22:52

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Di 15.11.11 23:12 
Wie vergleichst du denn?

Gleitkommazahlen lassen sich nicht per = vergleichen, da es durch die interne Darstellung kleine Abweichungen geben kann. Es gibt in der Unit Math aber die Funktion SameValue dafür.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 979
Erhaltene Danke: 124

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Di 15.11.11 23:40 
gegf. MinutesBetween oder SecondsBetween < x aus den DateUtils ....

_________________
Das Problem liegt üblicherweise zwischen den Ohren
DRY DRY KISS
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
trm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 312
Erhaltene Danke: 7

Windows 7x64
Delphi 7
BeitragVerfasst: Mi 16.11.11 01:14 
Danke euch beiden.

Mir reicht der Vergleich mittels SameValue.
Komisch nur, dass eine Subtraktion genauer arbeitet als ein Vergleich.
Verstehen kann ich das leider nicht :(

Ist dieses Verhalten in höheren Versionen nach Delphi 7 immer noch so (ist das vielleicht gewollt) ?

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mi 16.11.11 06:43 
Umgekehrt:
Der Vergleich arbeitet genauer. Und eben zu genau in vielen Fällen, weil zwei Werte sich weit hinter dem Komma durch die Binärdarstellung im PC unterscheiden können, die man eigentlich als gleich ansieht. Deshalb schaut die Funktion nicht, ob die Zahl exakt gleich ist, sondern ob die Differenz unterhalb der Darstellungsungenauigkeit ist. ;-)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Dude566
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1485
Erhaltene Danke: 72

W7, Vista, XP, Ubuntu
Delphi XE2 Pro, Turbo Delphi, Java/Eclipse, Notepad++
BeitragVerfasst: Mi 16.11.11 11:46 
Weil ich es gerade passend finde: www.michael-puff.de/...el/Fliesskomma.shtml

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
trm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 312
Erhaltene Danke: 7

Windows 7x64
Delphi 7
BeitragVerfasst: Mi 16.11.11 13:03 
Ok, ich habs :)

Vielen Dank nochmals an euch, ihr seid super :)

Gruß aus der kalten Mitte Deutschlands ;)

_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home