![]() |
Dateidatum simple ermitteln
Hallo, und zwar möchte ich recht einfach das Datum einer Datei ermitteln.
Hierzu habe ich bisher immer folgende selbstgebastelte Function verwendet, wollte aber nun mal fragen, ob es da nicht was effizienteres gibt?
Delphi-Quellcode:
function DateSizeOfFile(Fname: string): string;
var Rec: TSearchRec; sim: string; Filename, Path: string; begin Path := ''; FileName := Fname; if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0 then try repeat Sim := Datetimetostr(FileDateToDateTime(Rec.Time)) + ' '+ inttostr(Rec.Size)+ ' Byte'; until FindNext(Rec) <> 0; finally FindClose(Rec); result := Sim; end; end; |
Re: Dateidatum simple ermitteln
Moin Coder,
soll das so sein, dass nur die letzten Dateiinfos zurückgegeben werden? Wenn ja, dann könntest du dir das ständige codieren sparen. Stattdessen speicherst du das SearchRec zwischen und sobald er die Schleife verlässt nimmt er das zwischengespeicherte Rec und liest daraus die Daten aus? Und TimeD/SizeD werden gar nicht verwendet? MfG xZise |
Re: Dateidatum simple ermitteln
äh, wie meinste Zwischenspeichern?
was meinste mit ständigem Codieren? zudem wollte ich fragen, ob man diese Function (immer das ganze Verzeichnis nach einem Dateinamen scannen, nur um Dateidatum und Größe EINER einzelnen Datei herauszubekommen) auf etwa z.B. 1 Zeile Code reduzieren könnte? Oder geht das am besten nur über den SearchRec? |
Re: Dateidatum simple ermitteln
Also wenn du die datei kennt, kannst du sie natürlcih direkt angeben. Ich verstehe deinen Code sowieso nicht so ganz. Du kennst offensichtlich den dateinamen:
Delphi-Quellcode:
Und läufst trotzdem in einer Schleife alle Dateien durch oder was machst du da?
function DateSizeOfFile(Fname: string): string;
|
Re: Dateidatum simple ermitteln
Zitat:
Edit2.text := DateSizeOfFile (Edit1.text); Zitat:
Aber wie soll ich denn sonst an das Dateidatum kommen? Es geht doch vermutlich nur über den Searchrec, oder? Wie kann ich denn sonst einfach nur Dateidatum und Größe ermitteln? Wie machst Du das denn? Oder Ihr? |
Re: Dateidatum simple ermitteln
Es gibt da eine Funktion und die nennt sich
![]() zu deiner Funktion:
Delphi-Quellcode:
da FindClose das Suchrgebnis nicht löscht, kann man es so kürzen
function DateSizeOfFile(FileName: String): String;
var Rec: TSearchRec; begin if FindFirst(FileName, faAnyFile and not faDirectory, Rec) = 0 then begin try Result := DateTimeToStr(FileDateToDateTime(Rec.Time)) + ' ' + IntToStr(Rec.Size) + ' Byte'; finally FindClose(Rec); end; end else Result := ''; end;
Delphi-Quellcode:
function DateSizeOfFile(FileName: String): String;
var Rec: TSearchRec; begin if FindFirst(FileName, faAnyFile and not faDirectory, Rec) = 0 then begin FindClose(Rec); Result := DateTimeToStr(FileDateToDateTime(Rec.Time)) + ' ' + IntToStr(Rec.Size) + ' Byte'; end else Result := ''; end; |
Re: Dateidatum simple ermitteln
Bitte bitte, keine Subtraktion bei Bitmasken (auch wenn es in diesem Fall keine Rolle spielen sollte).
Zitat:
Delphi-Quellcode:
, dann kann ich besser schlafen ;)
faAnyFile and not faDirectory
|
Re: Dateidatum simple ermitteln
erst Mal Danke,
das mit GetFileTime() war mir damals zu kompliziert. (Das Datum und die Zeit entsprechend daraus für meinen benötigten String zu Formatieren) ist igendwie heute auch nicht anders :D daher mein Umweg über den TSearchRec. Puhh, Ihr seid aber streng (Syntax) ... :zwinker: |
Re: Dateidatum simple ermitteln
man könnte auch
![]() ![]() man muß sich nur per ![]() aber einen Nachteil hat es ... ist kein Zugriff auf die Datei möglich (z.B. schon exklusiv geöffnet oder fehlende Rechte), dann bekommt man kein Handle. |
Re: Dateidatum simple ermitteln
Zitat:
Delphi-Quellcode:
if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0 then
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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