äh, mhh, jetzt ich bin langsam verwirrt
Das brauchst du nicht, aber vielleicht weigerst du dich einfach nur paar Tatsachen zu akzeptieren. Eine wäre, es gibt keine Dateien die vor 1980 auf einem PC abgelegt sein können. Gut, ich dachte es war 1970, ist aber nicht so wichtig. Es ist irgendwas dazwischen. Der Grund ist, 1980 war der Speicher verdammt teuer, da verplempert man den nicht mit unwichtigen Daten, die es davor nicht gab, wie z. B. den Brief von Pontius Pilatus an das römische Senat, verfasst in Word 0.1 im Jahr... so um 30. Damals gab es keine Computer. Auch hat Luther seine Thesen nicht in Word 0.3 geschrieben. Auch da gab es keine Computer. Der PC wurde so um 1976/77 erfunden. Somit wurden davor keine Daten auf den PC abgelegt.
Wozu also Speicher für Daten bereithalten, die es vor 1970 nicht gab. Für das Jahr 1968 braucht man zusätzliche 7 Bits. Wofür. Also hat man getrickst und beschlossen, die Zeitrechnung auf Computern beginnt im Jahr 1970 (oder so ähnlich). Wenn also im Jahr 2015 eine Datei abgespeichert wird, wird nur das Jahr 45 gespeichert. Fragt man das System jetzt wann die Datei gespeichert wurde, nimmt es die 45 und addiert 1970 dazu. Ergebnis 2015. Ist ein Trick, man spart 7 Bits.
Deshalb kann es auch keine Datum-Daten vor vor 1970 geben, denn das System kann nicht kleinere Werte als 0 ablegen. Somit kann jede Datei ohne Datum nur mit 1970 anfangen.
Und nun kommst du mit deinem Delphi-Datum an. Auch Delphi muss tricksen, damit es ein Datum plus Uhrzeit in eine Double speichern kann. Ein Double kommt mit 8 Bytes aus. Das würde nicht für ein volles Datum reichen, aber Delphi ist großzügiger, es beginnt bei 1900.
Also, es gibt keine Daten von vor 1970, also findet sich auf dem System auch kein Datum von vor 1970. Das solltest du akzeptieren.
Zitat:
also ich möchte alle Dateien in einem Verzeichnis scannen und das korrekte Dateidatum ermitteln. Naja OK, die weitere Speicherung ist zweitrangig - und wie sich ja ergeben hat, als integer - auch weniger leicht.
Das ist superleicht. Nichts leichter als das Dateidatum zu speichern. Nur man kann dir hundert mal sagen wie du es machen sollst, du weigerst dich einfach. Du willst unbedingt dein Delphi-Datum speichern und das geht nicht mit einem Integer. Das Time-Datum der Datei ist aber schon ein Integer. Und was du dich seit Stunden weigerst zu machen ist einfach den Search.Time Wert zu speichern, statt das FileDateToDateTime. Wo ist das Problem die Funktion FileDateToDateTime zu entfernen und schon hat man das was man will. Aber nö, du willst unbedingt das FileDateToDateTime Datum speichern. Dann versuche es weiter.
Zitat:
a) Aber was ich nicht verstehe ist, warum Dateien mit dem Datum vor 1.1.1980 (gerade festgestellt ... Dateidatum VOR 1980 macht schon Probleme) von Delphi nicht mit searchrec.time ermittelt werden können?
Wie gesagt, den Grund wurde dir schon vor Stunden genannt. Du weigerst dich das einfach zu verstehen.