![]() |
FindFirst FindNext - Datei muss achiviert werden?
Hallo :)
ich benutzt FindFirst, FindNext um Dateien in einem Ordner auszulesen.. und das soll in einem LISTVIEW aufgelistet werden..
Delphi-Quellcode:
Das funktioniert auch super!
sr: TSearchRec;
if FindFirst(applpath + 'daten\*.dat', faAnyFile, sr) = 0 then begin repeat if (sr.Attr and faAnyFile) = sr.Attr then begin dateiname := sr.Name; V1 := copy(dateiname,1,pos('_',dateiname)-1); delete(dateiname,1,pos('_',dateiname)); V2 := copy(dateiname,1,pos('_',dateiname)-1); delete(dateiname,1,pos('_',dateiname)); V3 := copy(dateiname,1,pos('.',dateiname)-1); ..... end; until FindNext(sr) <> 0; FindClose(sr); end; Aber, wenn man bei der Eigenschaft der .dat Datei, "Datei kann achieviert werden" nicht ankreuzen, dann wird diese Datei nicht in der Listview angezeigt .. warum ist es so? Vielen Dank!! Gruss, greyblue |
Re: FindFirst FindNext - Datei muss achiviert werden?
Was genau willst Du mit dieser Zeile erreichen?
Delphi-Quellcode:
Wo im Code ist etwas von einer ListView zu sehen? Der Rest scheint korrekt, nur solange wir nicht die Ereignisse wissen, die bis zum ListView-Eintrag führen, lässt sich wenig sagen ;)
if (sr.Attr and faAnyFile) = sr.Attr then
...:cat:... |
Re: FindFirst FindNext - Datei muss achiviert werden?
Zitat:
soll es (sr.Attr and faAnyFile) = faAnyFile heissen?
Delphi-Quellcode:
ListItem := ListView1.Items.Add;
ListItem.ImageIndex := 0; ListItem.Caption := ' ' + V1; ListItem.SubItems.Add(V2); ListItem.SubItems.Add(V3); ListItem.SubItems.Add(DateToStr(FileDateToDateTime(sr.Time))); das war die ...... oben .. :-) Danke .. greyblue |
Re: FindFirst FindNext - Datei muss achiviert werden?
Ändere
Delphi-Quellcode:
mal auf
if (sr.Attr and faAnyFile) = sr.Attr then
Delphi-Quellcode:
Der Rest (die ... von oben) sieht eigentlich korrekt aus :-)
if (sr.Attr and faSymLink) = 0 then
...:cat:... |
Re: FindFirst FindNext - Datei muss achiviert werden?
danke,
aber komisch ist, das Code oben funktioniert bis auf Achiev.. das Ankreuzen von versteckt oder schreibgeschützt in der Dateieigenschaft macht überhaupt nichts, nur man muss vor Achiev ankreuzen .. :( if (sr.Attr and faAnyFile) = sr.Attr then das bedeutet doch, dass nur die Dateien nicht die Unterordner gesucht werden oder? |
Re: FindFirst FindNext - Datei muss achiviert werden?
Hi greyblue,
hier mal die Konstanten wie sie in der Hilfe sind:
Code:
Von daher schätze ich mal, dass faAnyFile eigentlich faReadOnly or faHidden or faSysFile or faSymLink ist.
faReadOnly 1 Read-only files
faHidden 2 Hidden files faSysFile 4 System files faVolumeID 8 Volume ID files faDirectory 16 Directory files faArchive 32 Archive files faSymLink 64 Symbolic link faAnyFile 71 Any file Deine Abfrage müsste also so lauten:
Delphi-Quellcode:
Greetz
if (sr.Attr and (faAnyFile or faArchive)) = sr.Attr then
alcaeus |
Re: FindFirst FindNext - Datei muss achiviert werden?
Danke für deine Antwort,
werde mal probieren, habe gedacht dass faArchive \in faAnyFile ist .. Vielen Dank!! |
Re: FindFirst FindNext - Datei muss achiviert werden?
[add]
ach, zu langsam -.-'' Zitat:
[/add]
Delphi-Quellcode:
als wer der verbrochen hat, gehört gevierteilt, da diese Abfrage immer True ergibt
if (sr.Attr and faAnyFile) = sr.Attr then
Delphi-Quellcode:
faReadOnly = $01;
faHidden = $02; faSysFile = $04; faVolumeID = $08; faDirectory = $10; faArchive = $20; faSymLink = $40; faAnyFile = $3F; // also alle möglichen Bits sind gesetzt Prüft, ob nur ein bestimmtes Bit (hier faArchive),
Delphi-Quellcode:
oder mehrere bestimmte Bits (hier faArchive und faHidden) gesetzt sind und kein Anderes.
if sr.Attr and faArchive = sr.Attr then
Delphi-Quellcode:
if sr.Attr and (faAnyFile or faHidden) = sr.Attr then
Prüft, ob ein bestimmtes Bit (hier faArchive),
Delphi-Quellcode:
oder mehrere bestimmte Bits (hier faArchive und faHidden) gesetzt sind ... ob andere Bits auch gesetzt sind, oder nicht, ist hierbei egal.
if sr.Attr and faArchive <> 0 then
Delphi-Quellcode:
if sr.Attr and (faAnyFile or faHidden) <> 0 then
|
Re: FindFirst FindNext - Datei muss achiviert werden?
Zitat:
Hier die Definitionen aus der SysUtils.pas
Delphi-Quellcode:
...:cat:...
const
faReadOnly = $00000001 platform; faHidden = $00000002 platform; faSysFile = $00000004 platform; faVolumeID = $00000008 platform; faDirectory = $00000010; faArchive = $00000020 platform; faSymLink = $00000040 platform; faAnyFile = $0000003F; |
Re: FindFirst FindNext - Datei muss achiviert werden?
nun bin ich verwirrt,
nochmal die Frage, warum zeigt sich die Nicht-Achieve Datei nicht an? Vielen Dank!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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