AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Findfirst/Findnext Sommer/Winterzeit
Thema durchsuchen
Ansicht
Themen-Optionen

Findfirst/Findnext Sommer/Winterzeit

Ein Thema von zeras · begonnen am 16. Nov 2014 · letzter Beitrag vom 17. Nov 2017
Antwort Antwort
Seite 1 von 3  1 23      
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#1

Findfirst/Findnext Sommer/Winterzeit

  Alt 16. Nov 2014, 09:32
Wir haben folgendes Problem:
Während der Sommerzeit werden Dateien auf einen USB Stick kopiert und gleichzeitig in ein Zip Archiv gepackt.
Nun ist Winterzeit und es soll geprüft werden, ob sich die Daten auf dem USB Stick verändert haben. Es kann ja sein, dass jemand die Daten auf dem USB Stick verändert hat.
Als Routine nehme ich folgende:

Damit man sehen kann, welche Datei welches Datum hat, scanne ich jede Datei auf dem USB Stick in der Art:
FormatDateTime('dd/mm/yyyyy hh:nn', FileDateToDateTime(SR.Time));
Damit entsteht eine Stringliste, wo auch noch der jeweilige Dateiname mit hinterlegt ist.
Das gleiche mache ich mit den eingepackten Dateien. Diese packe ich aus und nutze dieselbe Routine. Die Infos stehen dann in einer 2. Stringliste. Die beiden Stringlisten vergleiche ich dann und es kommt nun immer 1 Stunde Unterschied bei allen Dateien raus.
Sollten nicht die Datumseinträge gleich sein, weil die Dateien an sich zur gleichen Zeit erstellt wurden?
Oder ist meine Denkweise hier nicht richtig?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Findfirst/Findnext Sommer/Winterzeit

  Alt 16. Nov 2014, 09:46
Wenn der USB Stick mit FAT(Ex/32) formatiert ist, dann speichert er das Datum immer in der lokalen Uhrzeit (also Winterzeit oder Sommerzeit). Bei NTFS wird hingegen in UTC-Zeit (aka SystemTime) gepeichert und erst beim Einlesen an die lokale Uhrzeit angepasst, womit sich die Zeit der Datei bei der Umstellung automatisch ändert (so wird aus eine in Deutschland um 10:00 Uhr geschriebenen Datei schnell mal 4:00 Uhr wenn man in den USA ist)

Bei der ZIP-Datei hängt es vom Packer/Entpacker ab, ob er das Datum in lokaler Zeit und/oder UTC-Zeit abspeichert bzw. einliest.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#3

AW: Findfirst/Findnext Sommer/Winterzeit

  Alt 16. Nov 2014, 12:08
In Ergänzung zu jbg:
Wenn du zuverlässig Dateien vergleichen willst, ist sowas wie ein Zeitstempel ungeeignet, weil der von einer ganzen Reihe von Faktoren abhängt. Prüfsummen (SHA1, SHA256, notfalls auch MD5 etc) oder ein Vergleich nach Inhalt sind dafür besser geeignet. Klar ist das mehr Aufwand und setzt das Einlesen der kompletten Datei voraus, aber im Punkt "Sicherstellen, dass (k)ein Unterschied vorhanden ist" ist das unschlagbar.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Findfirst/Findnext Sommer/Winterzeit

  Alt 16. Nov 2014, 12:35
ist sowas wie ein Zeitstempel ungeeignet, weil der von einer ganzen Reihe von Faktoren abhängt.
z.B. auch vom Datenformat, in welchem gespeichert wird.
Ältere FAT32 speicherten das Datum gern in einem Integer und waren dann nur bus zu einer ganzen Sekunde genau, NTFS speichert das Datum des letzten Zugriffs anders, als das Datum der Erstellung, bzw. der letzten Änderung, und die verschiedensten Archiv-Formate (ZIP usw.) machen es auch wieder anders,
womit es dort jeweis zu unterschiedlichen Rundungen kommt und man beim Vergleich garnicht "genau" auf Gleichheit prüfen sollte.

Und bezüglich dem "Datei(Inhalt) vergleichen" gibt es in der DP auch mehrere Threads.


Alternativ könntest du prüfen, ob das Dateidatum innerhalb der Sommerzeit liegt und dann die Stunde umrechnen.
Jeweils abhängig davon in welchem Format das Datum bei dir ankommt und wie es gespeichert wurde.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#5

AW: Findfirst/Findnext Sommer/Winterzeit

  Alt 16. Nov 2014, 14:16
Danke für die Antworten.

Wenn der USB Stick mit FAT(Ex/32) formatiert ist.....
Ja.

Bei NTFS wird hingegen in UTC-Zeit (aka SystemTime) gepeichert und erst beim Einlesen an die lokale Uhrzeit angepasst
Unsere Server haben meines Wissen NTFS. So ergibt das auch ein Bild.

Jede Datei analysieren würde ich jetzt noch nicht favorisieren, aber vielleicht später.

Mich wundert es nur, dass die Kollegen das erst jetzt bemerkt haben, wo die Funktion schon seit Jahren so drin ist. Es müsste ja jedes Jahr mindestens 2x auftreten und da wir mehrere von den Sticks haben, sollte es ja schon vor Jahren so gewesen sein.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Findfirst/Findnext Sommer/Winterzeit

  Alt 16. Nov 2014, 17:15
Windows ohne Sommerzeit?

Oder Backup und Vergleich zufällig immer in der selben Zeitzone/Jahreszeit? (Sommerzeit oder Winterzeit)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#7

AW: Findfirst/Findnext Sommer/Winterzeit

  Alt 16. Nov 2014, 17:39
Windows ohne Sommerzeit?

Oder Backup und Vergleich zufällig immer in der selben Zeitzone/Jahreszeit? (Sommerzeit oder Winterzeit)
Sollte eigentlich nicht immer sein.
Zum Sachverhalt. Wir bauen Maschinen.
Beim Beginn der Prüfung der Maschinen wird der Stick erzeugt und das Zipfile dazu. Nach Ende der Prüfung wird dann die obige Prozedur gestartet, um festzustellen, ob jemand etwas geändert hat. Die Prüfung kann schon einige Tage bzw. Wochen dauern. Da sollte es mehr als einmal vorkommen, dass es in der Zeitzone 1 erstellt wird und dann in der Zeitzone 2 archiviert.
Ich werde mal die Kollegen fragen, warum das nicht eher aufgefallen ist.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Findfirst/Findnext Sommer/Winterzeit

  Alt 16. Nov 2014, 20:12
Problematisch werden solche Prozesse vorallem dann, wenn sie während der Zeitumstellung arbeiten, da es dann einmal im Jahr eine Stunde lang Zeiten doppelt gibt und ab der Umstellung die Zeiten dann auseinanderlaufen.
Ist fast so schlimm, wie der 2000er-Überlauf, aber praktisch passiert das selten, da um diese Zeit die Wenigsten arbeiten oder "problematische" Prozesse dort möglichst nicht durchführen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#9

AW: Findfirst/Findnext Sommer/Winterzeit

  Alt 16. Nov 2014, 21:35
Problematisch werden solche Prozesse vorallem dann, wenn sie während der Zeitumstellung arbeiten, da es dann einmal im Jahr eine Stunde lang Zeiten doppelt gibt und ab der Umstellung die Zeiten dann auseinanderlaufen.
Ist fast so schlimm, wie der 2000er-Überlauf, aber praktisch passiert das selten, da um diese Zeit die Wenigsten arbeiten oder "problematische" Prozesse dort möglichst nicht durchführen.
Ja, am Sonntag Morgen um 2 Uhr wird bei uns keine neue Software erstellt. Das sollte eigentlich sicher sein. Aber vielleicht gibt es andere Firmen, wo das ein Problem darstellen kann.
Man kann gar nicht genug "Um die Ecke denken", um alle Eventualitäten zu ergründen.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Findfirst/Findnext Sommer/Winterzeit

  Alt 17. Nov 2014, 02:42
Automatischer Buildprocess? Bumm.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 06:33 Uhr.
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