AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie komme ich an die verschiedenen Datumswerte einer Datei?

Wie komme ich an die verschiedenen Datumswerte einer Datei?

Ein Thema von Woodman · begonnen am 29. Mai 2019 · letzter Beitrag vom 31. Mai 2019
Antwort Antwort
Seite 1 von 3  1 23   
Benutzerbild von Woodman
Woodman

Registriert seit: 17. Mär 2007
74 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Wie komme ich an die verschiedenen Datumswerte einer Datei?

  Alt 29. Mai 2019, 17:07
Hallo Wissende,
tja, die Frage ist sicher schon hundertmal beantwortet worden, aber für mein Problem habe ich noch keine Lösung gefunden.
Folgendes: Bekannt ist mir diese Routine:
Delphi-Quellcode:
// Hier gefunden: https://www.delphipraxis.net/6594-letzten-zugriff-auf-datei-auslesen.html
function GetFileTimes(const FileName: string; var Created: TDateTime;
var Accessed: TDateTime; var Modified: TDateTime): Boolean;
var
  h: THandle;
  Info1, Info2, Info3: TFileTime;
  SysTimeStruct: SYSTEMTIME;
  TimeZoneInfo: TTimeZoneInformation;
  Bias: Double;
begin
  Result := False;
  Bias := 0;
  h := FileOpen(FileName, fmOpenRead or fmShareDenyNone);
  if h > 0 then
  begin
    try
      if GetTimeZoneInformation(TimeZoneInfo) <> $FFFFFFFF then
        Bias := TimeZoneInfo.Bias / 1440 * 2; // 60x24
      GetFileTime(h, @Info1, @Info2, @Info3);
      if FileTimeToSystemTime(Info1, SysTimeStruct) then
        Created := SystemTimeToDateTime(SysTimeStruct) - Bias;
      if FileTimeToSystemTime(Info2, SysTimeStruct) then
        Accessed := SystemTimeToDateTime(SysTimeStruct) - Bias;
      if FileTimeToSystemTime(Info3, SysTimeStruct) then
        Modified := SystemTimeToDateTime(SysTimeStruct) - Bias;
      Result := True;
    finally
      FileClose(h);
    end;
  end;
end;
Diese Routine gibt mir das Creation Date, Last access date und das Modified date zurück. Soweit, so gut...
Mein Explorer zeigt aber 4 Datumswerte an:
explorer-auszug-datumjpg.jpg
In meinem Falle such ich das tatsächliche Erstell- bzw. Scan-Datum. Da die Dateien schon mal umkopiert wurden, zeigt das Erstell-Datum nur das Kopierdatum an. Das eigentliche Erstelldatum wird hier unter "Datum" angezeigt.
Wie komme ich an dieses Datum heran??
Keep
Horst
Delphi 10.1 Berlin Starter unter Windows 10 - 1803
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.918 Beiträge
 
Delphi 7 Professional
 
#2

AW: Wie komme ich an die verschiedenen Datumswerte einer Datei?

  Alt 29. Mai 2019, 17:19
Eventuell EXIF-Daten aus dem JPeg?

https://www.google.com/search?q=delp...utf-8&oe=utf-8

https://sno.phy.queensu.ca/~phil/exi...ames/EXIF.html

https://www.get-metadata.com/
  Mit Zitat antworten Zitat
Benutzerbild von Woodman
Woodman

Registriert seit: 17. Mär 2007
74 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: Wie komme ich an die verschiedenen Datumswerte einer Datei?

  Alt 29. Mai 2019, 17:48
Eventuell EXIF-Daten aus dem JPeg?

...
Nee, leider nicht. Die Dateien sind - wie ich oben schon angedeutet habe - die Ergebnisse eines Dia-Scanners. Und der schreibt leider keine Exifdaten rein. Das ist aber genau das, was ich machen möchte.
Keep
Horst
Delphi 10.1 Berlin Starter unter Windows 10 - 1803
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
594 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Wie komme ich an die verschiedenen Datumswerte einer Datei?

  Alt 29. Mai 2019, 17:52
Das Datum mit dem letzten Update findest Du folgendermaßen heraus und dies ist auf allen OS kompilierbar (ich kann jetzt aber nicht die Hand in's Feuer legen, dass es auch auf allen OS einen brauchbaren Wert zurückliefert, das müsste ich erst testen):

Delphi-Quellcode:
class function TFileUtils.getFileChangeDate(filename:String):TDateTime;
var sr: TSearchRec;
begin
  Result := 0;
  try
    if FindFirst(filename, faNormal, sr) = 0 then
      Result := sr.TimeStamp;
  finally
    FindClose(sr);
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Woodman
Woodman

Registriert seit: 17. Mär 2007
74 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: Wie komme ich an die verschiedenen Datumswerte einer Datei?

  Alt 29. Mai 2019, 18:28
Das Datum mit dem letzten Update findest Du folgendermaßen heraus ....
Vielen Dank, das funktioniert... Ist aber leider nicht das was ich gesucht habe. S.o.
Tatsächlich gibt Deine Routine das gleiche zurück wie SysUtils.FileAge(Filename), also das Änderungsdatum.
Keep
Horst
Delphi 10.1 Berlin Starter unter Windows 10 - 1803
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

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

AW: Wie komme ich an die verschiedenen Datumswerte einer Datei?

  Alt 29. Mai 2019, 18:36
Ich sehe auf dem Screenshort nur drei Datumswerte.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Woodman
Woodman

Registriert seit: 17. Mär 2007
74 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

AW: Wie komme ich an die verschiedenen Datumswerte einer Datei?

  Alt 29. Mai 2019, 18:43
Ich sehe auf dem Screenshort nur drei Datumswerte.
Ähm, also von links nach rechts:
Datum, Erstelldatum, Änderungsdatum und Letzter Zugriff
explorer-auszug-datumjpg.jpg
Keep
Horst
Delphi 10.1 Berlin Starter unter Windows 10 - 1803
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
378 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Wie komme ich an die verschiedenen Datumswerte einer Datei?

  Alt 29. Mai 2019, 19:53
Hallo Wissende,
tja, die Frage ist sicher schon hundertmal beantwortet worden, aber für mein Problem habe ich noch keine Lösung gefunden.
Folgendes: Bekannt ist mir diese Routine:
Delphi-Quellcode:
// Hier gefunden: https://www.delphipraxis.net/6594-letzten-zugriff-auf-datei-auslesen.html
function GetFileTimes(const FileName: string; var Created: TDateTime;
var Accessed: TDateTime; var Modified: TDateTime): Boolean;
var
  h: THandle;
  Info1, Info2, Info3: TFileTime;
  SysTimeStruct: SYSTEMTIME;
  TimeZoneInfo: TTimeZoneInformation;
  Bias: Double;
begin
  Result := False;
  Bias := 0;
  h := FileOpen(FileName, fmOpenRead or fmShareDenyNone);
  if h > 0 then
  begin
    try
      if GetTimeZoneInformation(TimeZoneInfo) <> $FFFFFFFF then
        Bias := TimeZoneInfo.Bias / 1440 * 2; // 60x24
      GetFileTime(h, @Info1, @Info2, @Info3);
      if FileTimeToSystemTime(Info1, SysTimeStruct) then
        Created := SystemTimeToDateTime(SysTimeStruct) - Bias;
      if FileTimeToSystemTime(Info2, SysTimeStruct) then
        Accessed := SystemTimeToDateTime(SysTimeStruct) - Bias;
      if FileTimeToSystemTime(Info3, SysTimeStruct) then
        Modified := SystemTimeToDateTime(SysTimeStruct) - Bias;
      Result := True;
    finally
      FileClose(h);
    end;
  end;
end;
Diese Routine gibt mir das Creation Date, Last access date und das Modified date zurück. Soweit, so gut...
Mein Explorer zeigt aber 4 Datumswerte an:
Anhang 51162
In meinem Falle such ich das tatsächliche Erstell- bzw. Scan-Datum. Da die Dateien schon mal umkopiert wurden, zeigt das Erstell-Datum nur das Kopierdatum an. Das eigentliche Erstelldatum wird hier unter "Datum" angezeigt.
Wie komme ich an dieses Datum heran??
Das angezeigte Erstelldatum kann nur in der Datei selbst stehen, es ist nicht Teil der Metadaten des Filesystems. Explorer weis offenbar, wie er das aus der jpg-Datei ecxtrahieren muss (eventuell ein Plugin der Scannersoftware??).
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

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

AW: Wie komme ich an die verschiedenen Datumswerte einer Datei?

  Alt 29. Mai 2019, 20:13
Ich sehe auf dem Screenshort nur drei Datumswerte.
Ähm, also von links nach rechts:
Datum, Erstelldatum, Änderungsdatum und Letzter Zugriff
Anhang 51163
Mist. Ich habe nur die drei Datumsspalten rechts gesehen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
445 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Wie komme ich an die verschiedenen Datumswerte einer Datei?

  Alt 29. Mai 2019, 20:59
Bei diesen Daten geht es sowieso nicht mit rechten Dingen zu. Wie kann das letzte Änderungsdatum vor dem Erstelldatum liegen? "Datum" wird vom Explorer offenbar auch nur bei Bildern angeboten. Das ist sicher, dass der Scanner keine EXIF-Sektion angelegt hat?
  Mit Zitat antworten Zitat
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 16:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf