![]() |
Änderungsdatum ist seeehr merkwürdig
Hallo, :-D
folgender Code soll den Inhalt eines Ordners auslesen, die gefundenen Dateien in einer Listbox darstellen und nach jeder gefundenen Datei eine Message mit Erstellungsdatum, letztes Zugriffsdatum, letzter Schreibzugriff und Dateinamen anzeigen.
Delphi-Quellcode:
Das Problem ist, das er bei allen Daten, die er anzeigen soll, immer 30.12.1899 anzeigt! :roteyes:
function GetFileDate(const FileName: string; out Creation, LastAccess,
LastWrite: TDateTime): Boolean; var hFile: THandle; ftCreationUTC, ftLastAccessUTC, ftLastWriteUTC: TFileTime; ftCreationLocal, ftLastAccessLocal, ftLastWriteLocal: TFileTime; stCreationLocal, stLastAccessLocal, stLastWriteLocal: TSystemTime; begin result:=false; hFile := CreateFile(PChar(FileName), GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); if (hFile <> INVALID_HANDLE_VALUE) then begin try //Ermittlung des Dateidatums in UTC (Weltzeit) if GetFileTime(hFile, @ftCreationUTC, @ftLastAccessUTC, @ftLastWriteUTC) then begin //Umrechnung in Ortszeit if FileTimeToLocalFileTime(ftCreationUTC, ftCreationLocal) and FileTimeToLocalFileTime(ftLastAccessUTC, ftLastAccessLocal) and FileTimeToLocalFileTime(ftLastWriteUTC, ftLastWriteLocal) then begin //Umwandlung in Systemdatumformat if FileTimeToSystemTime(ftCreationLocal, stCreationLocal) and FileTimeToSystemTime(ftLastAccessLocal, stLastAccessLocal) and FileTimeToSystemTime(ftLastWriteLocal, stLastWriteLocal) then begin //Zuweisung der Rückgabewerte Creation := SystemTimeToDateTime(stCreationLocal); LastAccess := SystemTimeToDateTime(stLastAccessLocal); LastWrite := SystemTimeToDateTime(stLastWriteLocal); result:=true; end; end; end; finally CloseHandle(hFile); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin FindFirst('C:\Dokumente und Einstellungen\mega\Eigene Dateien\Homepage' + '\*.*', faAnyFile, SearchRec); repeat ListBox1.items.add(searchrec.Name); GetFileDate(searchrec.Name, erstellung, zugriff, schreibzugriff); ShowMessage('Erstellung: '+DateTimeToStr(erstellung)+#13#10+'Letzter Zugriff: '+ DateTimeToStr(zugriff)+#13#10+'Letzter Schreibzugriff: '+DateTimeToStr(schreibzugriff)+ #12#10+'Dateiname: '+ searchrec.Name); until FindNext(searchrec) <> 0; findclose(searchrec); end; Wie kann das sein? Soooo alt sind meine Daten nun auch wieder nicht.... :mrgreen: Gruß zebrafalke |
Re: Änderungsdatum ist seeehr merkwürdig
Die variable hat wohl den wert 0 (was 30.12.1899) entspricht.
|
Re: Änderungsdatum ist seeehr merkwürdig
Hi,
das Problem ist, er findet deine Datei gar nicht.... Der Searchrec.name hält nicht den Verzeichnispfad, sondern nur den Dateinamen. Du muss also deiner Funktion noch den Pfad voransetzen. Du hast extra eine Funktion gebaut mit result = false/true, fragst aber das Ergebnis gar nicht ab. Würdest Du das tun, könntest Du sehen, das immer false zurückkommt. Übergebe mal GetFiledate (verzeichnis + searchrec.name,....) und prüfe das Ergebnis. Gruss Thomas |
Re: Änderungsdatum ist seeehr merkwürdig
Jo, jetzt, funktionierts, danke! :thumb:
Warum erscheinen am Anfang der Listbox eigendlich immer zwei Einträge nur mit Punkten? gruss |
Re: Änderungsdatum ist seeehr merkwürdig
Hallo,
Zitat:
Der erste Eintrag (ein Punkt) steht für das aktuelle Verzeichnis. Der zweite Eintrag (zwei Punkte) steht für das übergeordnete Verzeichnis. Gruß xaromz |
Re: Änderungsdatum ist seeehr merkwürdig
Hmm, klingt logisch...wäre nurnoch die Frage, wie unterbinde ich das Auftreten dieser Punkte? :gruebel:
|
Re: Änderungsdatum ist seeehr merkwürdig
Delphi-Quellcode:
if (Filename <> '.') and (Filename <> '..') then
begin showmessage(filename); end; |
Re: Änderungsdatum ist seeehr merkwürdig
Das geht leider nicht, er meint TSearchRec und String wären inkompatible Typen. Kann man nicht von vornherein verhindern, das die Punkte übergaupt erst auftauchen und sie halt nicht hinterher wegzumachen??? :gruebel: :gruebel: :gruebel:
|
Re: Änderungsdatum ist seeehr merkwürdig
Nein, kann man nicht. Und:
if (searchrec.name<>'.') and (searchrec.name<>'..') then... |
Re: Änderungsdatum ist seeehr merkwürdig
Vielen Dank, jetzt klappts! :-D :-D
Gruß zebrafalke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 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 by Thomas Breitkreuz