![]() |
Suche eine Funktion, die mir alle Dateiinfos zurückgibt
Ich habe kein Problem Code zu schreiben, der mir zb zu einer Datei die Dateigröße, Dateityp, Attribute, Erstelldatum, Änderungsdatum, letzter Zugriff usw. zurückgibt. Allerdings sind das immer einzelne Abfragen, und jede Abfrage kostet Zeit. Nach meinem Verständnis muss ich achtmal auf eine Datei zugreifen, wenn ich acht Angaben brauche. Deshalb meine Frage: gibt es eine Funktion die mir zb in einem Record alle Infos in einem Schritt/Zugriff zurückgibt?
|
AW: Suche eine Funktion, die mir alle Dateiinfos zurückgibt
FindFirst liefert im
![]() |
AW: Suche eine Funktion, die mir alle Dateiinfos zurückgibt
Danke, ich kenne zwar TSearchRec, hatte aber im Kopf, dass einige Daten unbrauchbar sind (zb Dateigröße). Habe vergessen, dass es da noch TWin32FindData gibt.
|
AW: Suche eine Funktion, die mir alle Dateiinfos zurückgibt
Es gibt auch irgendein TDirectory.GetFiles (anderer Name), welches ein TArray<TSearchRec> zurück gibt, wenn ich mich nicht irre.
Oder man nutzt TDirectory.GetFiles mit einem FilterPredicate, wo man, während der Suche, Zugriff darauf bekommt. FilterPredicate: Man muß sein Suchergebnis ja nicht im Result speichern lassen, sondern kann es auch in einem externen Array/Liste/Dictionary speichern, mit ALLEM, was man haben möchte. |
AW: Suche eine Funktion, die mir alle Dateiinfos zurückgibt
Wo ist hier der Fehler?
Delphi-Quellcode:
Das habe ich aus einem anderen Programm von mir kopiert, das ich schon vor Jahren erstellt habe. In dem anderen Programm gibt es keine Probleme, hier kommt die Meldung.
type
TFileInfo = record FileName: string; FileSize: Int64; end; function GetFileInfo(const FilePath: string): TFileInfo; var FileInfo: TFileInfo; FileHandle: THandle; FindData: TWin32FindData; SystemTime: TSystemTime; begin FillChar(FileInfo, SizeOf(TFileInfo), 0); FileInfo.FileName := ExtractFileName(FilePath); FileHandle := FindFirstFile(PChar(FilePath), FindData); if FileHandle <> INVALID_HANDLE_VALUE then try FileInfo.FileSize := (Int64(FindData.nFileSizeHigh) shl 32) + FindData.nFileSizeLow; finally FindClose(FileHandle); //<<<<<< Hier Fehlermeldung (Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen) end; Result := FileInfo; end; Auf jeden Fall sehe ich auf die Schnelle das Problem nicht. |
AW: Suche eine Funktion, die mir alle Dateiinfos zurückgibt
Es gibt ein FindClose in System.SysUtils und eins in Winapi.Windows. Je nachdem wie die uses-Anweisung ist, findet der Compiler das zuletzt deklarierte.
Lösung:
Delphi-Quellcode:
schreiben.
Winapi.Windows.FindClose(FileHandle)
|
AW: Suche eine Funktion, die mir alle Dateiinfos zurückgibt
Das war es. Danke. Hätte mir eigentlich auch selbst einfallen können.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12: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-2025 by Thomas Breitkreuz