AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Wann hat sich die Funktion SecondsBetween geändert
Thema durchsuchen
Ansicht
Themen-Optionen

Wann hat sich die Funktion SecondsBetween geändert

Ein Thema von v2afrank · begonnen am 21. Aug 2014 · letzter Beitrag vom 21. Aug 2014
Antwort Antwort
Dejan Vu
(Gast)

n/a Beiträge
 
#1

AW: Wann hat sich die Funktion SecondsBetween geändert

  Alt 21. Aug 2014, 11:20
Wieso ist es denn wichtig wann das passiert ist?
Um zu wissen, wann der Qualitätscheck bei Emba/nprise/Codegear/Borland ausgesetzt hat.
Zitat:
Eventuell ist die CPU auch auf einen anderen Rundungsmodus eingestellt, z.B. durch irgendwelche Fremdkomponenten, welche einfach so an programmglobalen Dingen rumfummeln, oder durch andere Grundeinstellungen der RTL/VCL.
Mal sehen: Ungenauigkeit = 1 Sekunde, oder 1/86400 oder die 10/11 Stelle (30000.123456 ist ja ein auf die Sekunde genaues Datum). Double hat aber 15 signifikante stellen. Wenn ich jetzt mal annehme, das 'StrToDateTime' keine 3-4 Schutzstellen verbrät, kann es daran nicht liegen.

Habe ich einen Fehler in meinen Überlegungen?

Aber ausprobieren wäre ja interessant:
Delphi-Quellcode:
var oneSecond double;

begin
  oneSecond := (strToDateTime('16.07.2014 13:04:05')-StrToDateTime('16.07.2014 13:04:04'))*86400;
  writeln(oneSecond);
end.
Was kommt denn da raus? Bzw. mit den Zeiten vom TE?

Geändert von Dejan Vu (21. Aug 2014 um 11:23 Uhr)
  Mit Zitat antworten Zitat
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
318 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wann hat sich die Funktion SecondsBetween geändert

  Alt 21. Aug 2014, 11:45
Was kommt denn da raus? Bzw. mit den Zeiten vom TE?
" 9.99999605119228E-0001" mit Delphi 2010.

Grüße, Christoph
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
576 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Wann hat sich die Funktion SecondsBetween geändert

  Alt 21. Aug 2014, 12:10
9.99999605119228E-0001 mit Delphi 6 und XE2
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.556 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wann hat sich die Funktion SecondsBetween geändert

  Alt 21. Aug 2014, 12:16
Alle Between-Time-Funktionen arbeiten mit Millisekunden.

Also erstmal auf Millisekunden umgerechnet, dann die Differenz gebildet und zum Schluß abgerundet (Integerdivision durch die entsprechende Zeiteinheit, hier MSecPerSec).
Es wird also 3 Mal (ab)gerundet.



Die Betweenfunktionen geben halt jede "abgeschlossene" Zeiteinheit raus und nicht die gerundeten.
In diesem Fall lieg die Lösung darin, daß an das Endedatum z.B. eine halbe Sekunde angehängt wird,
oder Emba hätte, wie z.B. bei den CompareValue-Funktionen, ein Epsilon zur Verfügung gestellt, bzw. würde runden statt abzurunden.



Um zu wissen, wann der Qualitätscheck bei Emba/nprise/Codegear/Borland ausgesetzt hat.
Wieso ausgesetzt?

Jetzt rechnet die Funktion doch richtig und früher war sie "kaputt".
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (21. Aug 2014 um 12:34 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Wann hat sich die Funktion SecondsBetween geändert

  Alt 21. Aug 2014, 12:28
Um zu wissen, wann der Qualitätscheck bei Emba/nprise/Codegear/Borland ausgesetzt hat.
Wieso ausgesetzt?

Jetzt rechnet die Funktion doch richtig und früher war sie "kaputt".
Wurde das kommuniziert?
Ist Qualität = 'gut' oder eher und in erster Linie 'gleichbleibend', 'transparent' und vor allen Dingen 'nachvollziehbar'?

Etwas, was immer gleich ist, ist qualitativ besser, als etwas, von dem man nicht weiß, ob es noch gleich ist. Qualität ist in erster Linie ein Maß für die Wiederholbarkeit und erst dann ein Maß für Güte. McDonalds hat zum Beispiel eine sehr hohe Qualität. Schmeckt zwar beschissen, aber immer gleich, man kann sich drauf verlassen.

Aber es war polemisch. Kann nämlich sein, das das in irgend einer Release note drin stand.

@himitsu: Also werden doch die Stellen ausgereizt. Ich habe hier kein Delphi und kann das nicht nachprüfen. Danke für die Mühe.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.556 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wann hat sich die Funktion SecondsBetween geändert

  Alt 21. Aug 2014, 12:34
Nochmal nachgedacht:
Aufgrund der bekannten Rundungen, an jede Zeit 'ne 1/4 Millisekunde dranhängen und an die Endezeit nochmal 'ne 1/4 Sekunde ... dann sollten die Rundungsfehler weg sein.
Oder selber rechnen Round(Abs(Zeit1 - Zeit2) * SecsPerDay) .
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Wann hat sich die Funktion SecondsBetween geändert

  Alt 21. Aug 2014, 12:40
Gibt es da nicht so eine tolle Erfindung wie Unittests?

Damit prüft man die eigenen Gebilde (und auch implizit das, was man mitverwendet).
Im Zweifelsfall läuft es auf einen Compilerschalter hinaus, der bestimmt Unterschiede bei den Compilern eben berücksichtigt. Aber dieser Fehler rutscht dann nicht mehr durch.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.556 Beiträge
 
Delphi 12 Athens
 
#8

AW: Wann hat sich die Funktion SecondsBetween geändert

  Alt 21. Aug 2014, 12:07
Wenn ich jetzt mal annehme, das 'StrToDateTime' keine 3-4 Schutzstellen verbrät, kann es daran nicht liegen.
Wenn Da SecondsBetween abrundet, dann reicht schon ein Rundungsfehler von 'ner Millisekunde, in die ungünstigste Richtung.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 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-2025 by Thomas Breitkreuz