![]() |
ListView Dateiendungen Filtern
Ich habe eine ListView, dort werden alle Dateien aus einem zuvor ausgewählten
Verzeichnis aufgelistete. Ich habe versucht, diese zu filter, aber vergeblich: [delphi if FindFirst(VerzName+'*.txt',faAnyFile,SR)=0 then begin[/delphi] So lautete es richtig, er listete alle (*:*) Dateien auf. Mein Versuch:
Delphi-Quellcode:
if FindFirst((VerzName+'*.txt') or (VerzName+'*.htm') or (VerzName+'*.html') or (VerzName+'*.php'),faAnyFile,SR)=0 then begin //Dateien gefiltert ins ListView schreiben |
Re: ListView Dateiendungen Filtern
dann tu doch faAnyFile raus ;-)
ersetz es durch 0. äähmmm... moment mal... du kannst doch keine string-literale boolesch verknüpfen :shock: Das geht so nicht :warn: probiers eher so:
Delphi-Quellcode:
oder auch mit semikolons getrennt.
if FindFirst('*.txt, *.htm, *.html, *.php',0,SR)=0 then begin
EDIT: Aber das wird glaube ich nicht funktionieren. |
Re: ListView Dateiendungen Filtern
Guten abend allerseits.
Leider funktioniert das nicht so richtig. Das LiestView stellt keinerlei Inhalte mehr an, nachdem ich den Quellcode abgeändert habe. |
Re: ListView Dateiendungen Filtern
Ansonsten ginge auch:
Delphi-Quellcode:
==> Problem er sieht 1. alle Dateien, 2. auch Ordner und 3. auch "." und ".." also
FindFirst(VerzName + '*', faAnyFile, sr) = 0
Delphi-Quellcode:
und der rest dann:
if (sr.Name <> '.') and (sr.Name <> '..') and ((sr.Attr and faDirectory) = faDirectory) then
Delphi-Quellcode:
ext := ExtractFileExt(sr.Name);
if (ext = '.txt') or (ext = '.htm') or (ext = '.html') or (ext = '.php') then |
Re: ListView Dateiendungen Filtern
Guten Tag, leider funktioniert das nicht.
Der komplette Code sieht so aus:
Delphi-Quellcode:
procedure VerzeichnisEinlesen(VerzName:string);
var NewItem : TListItem; Info : TSHFileInfo; SR : TSearchRec; ext : String; begin if VerzName[length(VerzName)]<>'\' then VerzName:=VerzName+'\'; with Form1 do begin ListView.Items.Clear; if FindFirst(VerzName+'*.*',faAnyFile,SR)=0 then begin repeat if (length(SR.Name)>0) and (SR.Name[1]<>'.') then begin NewItem:=ListView.Items.Add; NewItem.Caption:=SR.Name; SHGetFileInfo(PChar(VerzName+SR.Name), 0,Info,SizeOf(TSHFileInfo),SHGFI_SYSIconIndex or SHGFI_TYPENAME); NewItem.ImageIndex:=Info.IIcon; NewItem.SubItems.Add(Info.szTypeName); end; until FindNext(SR)<>0; FindClose(SR); end; ListView.CustomSort(@NamenSortProc, 0); end; end; |
Re: ListView Dateiendungen Filtern
Hmmm, funktioniert eigentlich ganz gut. Was soll denn nicht gehen...
|
Re: ListView Dateiendungen Filtern
Zitat:
|
Re: ListView Dateiendungen Filtern
So sollte es funktionieren
Delphi-Quellcode:
if VerzName[length(VerzName)]<>'\' then
VerzName:=VerzName+'\'; with Form1 do begin ListView.Items.Clear; if FindFirst(VerzName+'*.*',faAnyFile,SR)=0 then begin repeat if (sr.Name <> '.') and (sr.Name <> '..') and ((sr.Attr and faDirectory) <> faDirectory) then begin ext := ExtractFileExt(sr.Name); if (ext = '.txt') or (ext = '.htm') or (ext = '.html') or (ext = '.php') then begin NewItem := ListView.Items.Add; NewItem.Caption := SR.Name; SHGetFileInfo(PChar(VerzName+SR.Name), 0,Info,SizeOf(TSHFileInfo),SHGFI_SYSIconIndex or SHGFI_TYPENAME); NewItem.ImageIndex := Info.IIcon; NewItem.SubItems.Add(Info.szTypeName); end; end; until FindNext(SR)<>0; FindClose(SR); end; ListView.CustomSort(@NamenSortProc, 0); end; Eventuell solltest du noch die Extensions auf Gross/Kleinbuchstaben prüfen, wenn dies notwendig ist
Delphi-Quellcode:
[..]
ext := Uppercase(ExtractFileExt(sr.Name)); if (ext = '.TXT') or (ext = '.HTM') or (ext = '.HTML') or (ext = '.PHP') then begin NewItem := ListView.Items.Add; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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