AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateiliste gefiltert erstellen

Ein Thema von DieDolly · begonnen am 24. Aug 2023 · letzter Beitrag vom 24. Aug 2023
 
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#18

AW: Dateiliste gefiltert erstellen

  Alt 24. Aug 2023, 21:09
Zitat:
Du nimmst erstmal alle auf und entfernst dann die aus ListeB. Besser ist Einträge aus ListeB erst gar nicht in ListeA aufzunehmen.
So war es ja vorher und das war elendig langsam. Bei meinen Testdaten und mit dem alten Code hat das rund 4 Sekunden gedauert. Mit dem neuen Code jetzt nur noch wenn überhaupt 0,1 Sekunden.
Klar hat der neue Code nachteile. So kann ich keine Wildcards mehr verwenden, weil Strings 1zu1 abgeglichen werden. Aber besser der Code ist schnell.

Hier grob erklärt was ich jetzt mache

- Winapi.Windows.FindFirstFileEx() holt mir alle Dateien eines Verzeichnisses und fügt diese in meine Liste HashListe ein
type TFileHashTable = TDictionary<string, TWin32FindData>; var FileHashTable: TFileHashTable;

- ist das getan, gehe ich durch meine Liste B. Alles was in der fixen Liste B ist, wird aus der HashListe entfernt
Delphi-Quellcode:
for i := 0 to ListeB.Count - 1 do
 begin
  if FileHashTable.ContainsKey(RootFolder + ListeB.Strings[i]) then // ich bin mir nicht sicher, ob <Liste>.Remove selber nochmal prüft, ob der String vorhanden ist.
   FileHashTable.Remove(RootFolder + ListeB.Strings[i]);
 end;
- jetzt ist die HashListe bereinigt (alle Pfade aus Liste B sind jetzt nicht mehr dort drin)
- jetzt die Einträge der HashListe in meine eigentliche Liste A überführen, mit der ich weiterarbeite
Delphi-Quellcode:
for Key in FileHashTable.Keys do
 begin
  ...
 end;
Ja, Wildcards wären jetzt schön. Aber ich bin erstmal zufrieden.

Geändert von DieDolly (24. Aug 2023 um 21:16 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:18 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