![]() |
Nur bestimmte Dateien eines Ftp Ordners anzeigen
Hi
Wie schon im Titel zu lesen, möchte ich in einer CheckListBox nur vorher bestimmte Dateien anzeigen. Zurzeit füge ich meine Daten so zur CheckListBox dazu:
Delphi-Quellcode:
Wie kann ich jetzt Dateien die ich nicht möchte löschen oder nur diejenigen dazufügen in einer leeren Liste?
IdFTP1.List(LS);
CheckListBox1.Items.Assign(LS); |
Re: Nur bestimmte Dateien eines Ftp Ordner anzeigen
Hier ein Beispiel zum löschen von Dateinamen aus der Liste.
Delphi-Quellcode:
// alle Dateien löschen, die .exe oder .dll beinhalten
procedure CleanList(list:TStrings); var i : integer; begin // Wichtig: vom Ende zum Anfang löschen for i:=list.count-1 downto 0 do begin if (Pos(list[i], '.exe')>0) or (Pos(list[i], '.dll')>0) then list.Delete(i); end; end; CleanList(CheckListBox1.Items); |
Re: Nur bestimmte Dateien eines Ftp Ordner anzeigen
Manchmal kann man die gewünschten Dateien auch mit einer wildcard expression anfordern und spart sich das iterative Filtern hinterher:
Delphi-Quellcode:
Grüße vom marabu
FTP.List(sl, '*.txt', false);
|
Re: Nur bestimmte Dateien eines Ftp Ordner anzeigen
Ok das funzt schon jetzt kann ich aber nur 2 Dateien auschliessen so:
Delphi-Quellcode:
Wie kann ich jetzt aber mehrere auschliessen, ein 2. or wird nicht vertragen und mit Kommas bring ich auch nichts fertig ;(
begin
// Wichtig: vom Ende zum Anfang löschen for i:=list.count-1 downto 0 do begin if (Pos(list[i], 'wichtigedatei1.zip')>0) or (Pos(list[i], 'nächstewichtige2.zip')>0) then // Diese Dateien in Ruhe lassen, die anderen alle aus der Liste entfernen else list.Delete(i); end; end; Edit: Ok ich bin jetzt so vorgegangen: procedure CleanList(list:TStrings); var i : integer; dateien: string; exparr: TStringDynArray; begin // Wichtig: vom Ende zum Anfang löschen dateien := 'wichtigedatei1.zip||nächstewichtige2.zip||nochmal seinedatei3.zip$'; // Dieser String wird in das Array geschrieben. exparr := explode('$', dateien); // String in Array speichern. for i:=list.count-1 downto 0 do begin if Pos(list[i], exparr[i])>0 then // Diese Dateien in Ruhe lassen, die anderen alle aus der Liste entfernen else list.Delete(i); end; end; Aber jetzt löscht es mir alle Dateien, das ist mir wirklich unklar ?? |
Re: Nur bestimmte Dateien eines Ftp Ordners anzeigen
Oder so:
Delphi-Quellcode:
Grüße vom marabu
function Intersect(sl1, sl2: TStringList): TStringList;
var i: integer; begin Result := TStringList.Create; Result.Sorted := true; Result.Duplicates := dupIgnore; Result.AddStrings(sl1); Result.AddStrings(sl2); for i := Result.Count - 1 downto 0 do if (sl1.IndexOf(Result[i]) < 0) or (sl2.IndexOf(Result[i]) < 0) then Result.Delete(i); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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