AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Was könnte die Funktion Now: TDateTime; blockieren?
Thema durchsuchen
Ansicht
Themen-Optionen

Was könnte die Funktion Now: TDateTime; blockieren?

Ein Thema von arc · begonnen am 4. Sep 2010 · letzter Beitrag vom 14. Mär 2013
Antwort Antwort
Benutzerbild von arc
arc

Registriert seit: 6. Nov 2009
Ort: Elbflorenz
62 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Was könnte die Funktion Now: TDateTime; blockieren?

  Alt 11. Sep 2010, 13:02
Ich melde mich wieder zurück, Now habe ich nirgends deklariert, wieso sollte man das tun.
Der Fehler scheint in einer der Umwandlungsfunktionen zu liegen. Leider kann ich nicht weiter debuggen, da ich keine SysUtils.pas habe.

Folgender Code erzeugt folgende Resultate:
Code:
function API_GetCurrentDate:string;
var SystemTime: TSystemTime;
begin
  GetLocalTime(SystemTime);
  result:=DateTimeToStr(SystemTimeToDateTime(SystemTime))+' vs '+Format('%.2d.%.2d.%d %.2d:%.2d:%.2d',[SystemTime.wDay,SystemTime.wMonth,SystemTime.wYear,SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond]);
end;
11.09.2010 13:56:24 vs 11.09.2010 13:59:10
11.09.2010 13:56:24 vs 11.09.2010 13:59:31
11.09.2010 13:56:24 vs 11.09.2010 14:00:13
11.09.2010 13:56:24 vs 11.09.2010 14:00:18
11.09.2010 13:56:24 vs 11.09.2010 14:00:27
11.09.2010 13:56:24 vs 11.09.2010 14:00:30

Ich bin ehrlich gesagt ratlos. Völlig unlogisch der Fehler.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Was könnte die Funktion Now: TDateTime; blockieren?

  Alt 11. Sep 2010, 13:16
Delphi-Quellcode:
function API_GetCurrentDate: String;
var SystemTime: TSystemTime;
begin
  GetLocalTime(SystemTime);
  Result := Format('%s (%.10n) vs %.2d.%.2d.%d %.2d:%.2d:%.2d', [
    DateTimeToStr(SystemTimeToDateTime(SystemTime)),
    SystemTimeToDateTime(SystemTime), SystemTime.wDay,
    SystemTime.wMonth, SystemTime.wYear, SystemTime.wHour,
    SystemTime.wMinute, SystemTime.wSecond]);
end;
Was sagt denn diese Funktion?

Mal gucken ob in DateTimeToStr oder SystemTimeToDateTime das Problem liegt.
(auch wenn ich eher auf SystemTimeToDateTime tippe)

Obwohl Beide eigentlich nur "reine" mathematische Berechnungen ausführen und diese sollte unabhängig vom System (Windows) berechenbar sein.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Sep 2010 um 13:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von arc
arc

Registriert seit: 6. Nov 2009
Ort: Elbflorenz
62 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Was könnte die Funktion Now: TDateTime; blockieren?

  Alt 11. Sep 2010, 13:20
11.09.2010 14:22:37 (40.432,5987862446) vs 11.09.2010 14:18:41
11.09.2010 14:22:37 (40.432,5987862446) vs 11.09.2010 14:18:47
11.09.2010 14:22:37 (40.432,5987862446) vs 11.09.2010 14:18:55
11.09.2010 14:22:37 (40.432,5987862446) vs 11.09.2010 14:18:58
11.09.2010 14:22:37 (40.432,5987862446) vs 11.09.2010 14:19:00
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Was könnte die Funktion Now: TDateTime; blockieren?

  Alt 11. Sep 2010, 13:32
SystemTimeToDateTime liefert also schon die falschen Werte.

Was mir eventuell noch einfällt, wäre, daß irgendwo mit Single anstatt mit Double/TDateTime gerechnet wird und dabei wichtige Informationen weggerundet werden,
aber sowas sollte dann auf allen Rechner und Windowssystemen gleich sein.



Wieviele signifikante Stellen hatte denn Single nochmal?
(diese blöde D2010-OH will es mir nicht verraten)

Bei 8 signifikanten Stellen würde das aktuell etwa ein Intervall von (geschätzten) ~1,5 Minuten ergeben.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Sep 2010 um 13:35 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Was könnte die Funktion Now: TDateTime; blockieren?

  Alt 11. Sep 2010, 13:38
Single hat 7 signifikante Stellen
http://www.delphibasics.co.uk/RTL.asp?Name=Single
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#6

AW: Was könnte die Funktion Now: TDateTime; blockieren?

  Alt 11. Sep 2010, 15:15
Also wenn alte Projekte den Fehler zeigen und neue nicht, dann kann das eigentlich nur daran liegen, daß die alten Projekte eine andere Sysutils verwenden (da wo Now und SystemTimeToDateTime deklariert sind). Vielleicht sollte man in diese Richtung (Stichwort: Bibliothekspfade) mal weiter suchen?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Angyrtis

Registriert seit: 25. Okt 2011
2 Beiträge
 
#7

AW: Was könnte die Funktion Now: TDateTime; blockieren?

  Alt 10. Feb 2012, 16:13
Hi,

sry, ich krame den Thread mal wieder vor, da ich das gleiche Problem habe, allerdings Delphi XE2 Update3, Win7 64bit.

Gibt es da irgendwelche neuen Erkenntnisse?

Gruß Angyrtis
  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 14:58 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