AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [D5] Dateidatum wird falsch gelesen

[D5] Dateidatum wird falsch gelesen

Ein Thema von JanWe · begonnen am 16. Apr 2015 · letzter Beitrag vom 18. Apr 2015
Antwort Antwort
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: [D5] Dateidatum wird falsch gelesen

  Alt 17. Apr 2015, 19:10
Jain. 0 ist nicht konvertierbar. Geht erst ab 2162688 (1.1.80). (Siehe auch himitsu)
Delphi-Quellcode:
  I := DateTimeToFileDate(StrToDateTime('1.1.1980'));
  ShowMessage(DateTimeToStr(FileDateToDateTime(I - 1))); // -> Exception
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#2

AW: [D5] Dateidatum wird falsch gelesen

  Alt 17. Apr 2015, 19:35
Jain. 0 ist nicht konvertierbar. Geht erst ab 2162688 (1.1.80). (Siehe auch himitsu)
Um genau zu sein:

2162688 entspricht dem 01.01.1980 um 00:00:01 Uhr.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: [D5] Dateidatum wird falsch gelesen

  Alt 17. Apr 2015, 21:36
Gerade habe ich eine Textdatei erstellt und nachträglich Erstelldatum sowie Änderungdatum geändert. Seltsamerweise zeigt der FreeCommander das korrekte Änderungsdatum 17.04.1970 22:45 an, der Windows-Explorer zeigt dagegen gar kein Datum an. Auch ein Änderungsdatum 23.08.1804 01:15 wird nach Eingabe im FreeCommander korrekt angezeigt. Also irgendwie muß der FreeCommander das ja auch speichern und auslesen. Offenbar gibt es hier doch weitere Möglichkeiten, obwohl es ja laut Popov gar nicht möglich ein sollte, ein solches Datum überhaupt erst zu erzeugen bzw. einer Datei zuzuweisen.

Geändert von Perlsau (17. Apr 2015 um 21:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: [D5] Dateidatum wird falsch gelesen

  Alt 17. Apr 2015, 22:09
NTFS hat einen grösseren Datumsbereich als Fat. Und mit den richtigen Api bekommt man die auch zu gesicht
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: [D5] Dateidatum wird falsch gelesen

  Alt 17. Apr 2015, 22:55
Bjoerk und BadenPower

Ich könnte beschwören bei einigen gecrashten Festplatten, Disketten und Sonstigem eine 7 als Dekadenwert gesehen zu haben. Ob es eine 70 oder 7x gewesen ist, weiß ich nicht, aber ich kann mich gut dran erinnern. Auf der anderen Seite hatte ich mich nie genauer damit auseinander gesetzt, somit will ich nichts genau behaupten. Man sollte aber bedenken, das man das Jahr der PC Geburt auf 1976/77 beziffert. Andererseits kam das was man heute allgemein als PC ansieht, wobei es eigentlich nur der IBM-PC kompatible PC ist, 1981 raus. Trotzdem, unsere PCs sind nur die verbesserten Nachbauten des damaligen IBM-PCs. Damit ist anzunehmen, dass Microsoft bei seinem MS-DOS, was eigentlich das 1980 fertiggestellte QDOS von Tim Paterson ist, die Zeitrechnung auf 1980 gesetzt hat. Wobei eigentlich anzunehmen ist, dass das BIOS das Datum liefern sollte. Letztendlich, ich weiß es nicht. Man sollte aber bedenken, dass andere Systeme (vor allem über FTP) durchaus andere Startzeiten haben und vielleicht berücksichtigen einige Programme dies.

Aber wo wir dabei sind, hier der Quellcode der Funktion FileDateToDateTime:
Delphi-Quellcode:
function FileDateToDateTime(FileDate: Integer): TDateTime;
begin
  Result :=
    EncodeDate(
      LongRec(FileDate).Hi shr 9 + 1980,
      LongRec(FileDate).Hi shr 5 and 15,
      LongRec(FileDate).Hi and 31) +
    EncodeTime(
      LongRec(FileDate).Lo shr 11,
      LongRec(FileDate).Lo shr 5 and 63,
      LongRec(FileDate).Lo and 31 shl 1, 0);
end;
Da wird frech 1980 dazu gezählt.


obwohl es ja laut Popov gar nicht möglich ein sollte, ein solches Datum überhaupt erst zu erzeugen bzw. einer Datei zuzuweisen.
Es gibt meiner Kenntnis nach insgesamt 4 Quellen für ein Datum. Das gewöhnliche Time, sowie drei bei TWin32FindData. Time ist Typ Integer, die drei Zeiten bei TWin32FindData sind Longword. Time ist alt, TWin32FindData ist neuer. Vielleicht wird da was anders gespeichert.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: [D5] Dateidatum wird falsch gelesen

  Alt 18. Apr 2015, 00:03
Bevor ich nicht schlafen kann, habe ich schnell noch etwas geprogr und bei einer Datei bei FindData (TWin32FindData) die Zeiten auf 0 gesetzt. Rausgekommen ist 1617.

Aber wie gesagt, das sin die Zeiten die in FindData gespeichert sind, nicht die von Time.
Angehängte Grafiken
Dateityp: png 1617.png (41,5 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: [D5] Dateidatum wird falsch gelesen

  Alt 18. Apr 2015, 09:22
Es gibt Programme, die Prüfen ein Datum auf Gültigkeit und zeigen dann offensichtlich unglütige Datumwerte nicht an.

z.B. gibt Delphi-FindFirst bei 29.03.2015 02:01 eine Fehlermeldung aus, da es erkennt, daß es diese Zeit eigentlich nicht geben kann.
Nachweisbar an zwei meiner Dateien, denn der Rechner hatte die Sommerzeit nicht rechtzeitig umgestellt.
Der Fehler tritt dort auf, weil Delphi die Zeit auf LocalTime umrechnen will und mit dieser Uhrzeit ein kleines Problemchen hat.

So, und jetzt zeig mir mal bitte jemand einen Computer aus dem Jahre 1617.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#8

AW: [D5] Dateidatum wird falsch gelesen

  Alt 18. Apr 2015, 10:49
So, und jetzt zeig mir mal bitte jemand einen Computer aus dem Jahre 1617.
Aber gerne doch: Helpdesk .

MfG Dalai
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: [D5] Dateidatum wird falsch gelesen

  Alt 18. Apr 2015, 11:21
So, und jetzt zeig mir mal bitte jemand einen Computer aus dem Jahre 1617.
http://mathe-abakus.fraedrich.de/abakus/lr/poster02.jpg
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:17 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