Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schnelle Suche einer Zeile in txt-Datei (https://www.delphipraxis.net/50435-schnelle-suche-einer-zeile-txt-datei.html)

Nicolai1234 25. Jul 2005 23:08


Schnelle Suche einer Zeile in txt-Datei
 
Hallo,
ich habe eine Textdatei, in der alle Ordner meiner Festplatte (nur c:\ aufgelistet sind. Das ganze sieht in etwa so aus:
Zitat:

c:\Downloads\
c:\Downloads\Delphi\
c:\Downloads\Delphi\icq\
c:\Downloads\Delphi\icq\adicqclient\
c:\Downloads\Delphi\icq\adicqclient\ICQ\
c:\Downloads\Delphi\icq\adicqclient\ICQ\Component\
c:\Downloads\Delphi\icq\adicqclient\ICQ\DBConverte r\
c:\Downloads\Delphi\icq\adicqclient\ICQ\Example\
Nun möchte ich zwischen den Verzeichnisse à la MS-DOS navigieren können.
Soll heißen, dass da sowas in einer Art Eingabeaufforderung stehen soll:
Zitat:

c:\ cd Downloads
c:\Downloads\
Naja, ihr wisst denke ich, was ich meine...

Nun ist das Problem, dass man dann realtiv schnell überprüfen muss, ob das angegebende Verzeichnis bei "cd" auch existiert (in diesem Fall "Downloads").
Dazu müsste ich nun alle Zeilen in der Textdatei durchgehen, um zu schauen, ob das Verzeichnis vorhanden ist. Das dauerte bei mehreren Tausend Ordner aber zu lange.

Wie könnte man das schneller machen?
(auch gerne mit Konvertierung in mehrere Dateien vorher oder so. Allerdings keine DBs, die vom Rechner abhängig sind (Installierte Trieber und so...))

Vielen Dank im voraus
Nicolai

(mir fiel eben kein besserer Titel ein; ich ändere ihn aber gerne)

DBR 25. Jul 2005 23:54

Re: Schnelle Suche einer Zeile in txt-Datei
 
warum nicht einfach "DirectoryExists"

oder hab ich die Sache falsch verstanden?

Thebe 26. Jul 2005 01:30

Re: Schnelle Suche einer Zeile in txt-Datei
 
Du könntest die TXT beim Starten des Programms in ein binären Baum einlesen und mit dem Baum navigieren. Das Ding würde erst lahm werden, wenn Du sehr viele Unterverzeichnisse / Dateien in deinem aktuellen Verzeichniss hast. Nachteil is nur, das Du TXT und Treeview beim Starten/Beenden/zwischendurch u.U. synchronisieren musst, hab ja keine Ahnung wofür dein Prog is und was da alles so nebenbei passiert.

Nicolai1234 27. Jul 2005 00:01

Re: Schnelle Suche einer Zeile in txt-Datei
 
Ich habe das ganze jetzt so gelöst:
Ich lese das ganze in tstringlist ein und lasse mir dann ein Ergebnis über IndexOf geben. Wenn das -1 ist, existiert der String nicht. Das ganze geht eigentlich ziehmlich schnell.

Wie durchsucht denn tstringlist die Liste?

ste_ett 27. Jul 2005 07:03

Re: Schnelle Suche einer Zeile in txt-Datei
 
Mit einer for-Schleife durch den String und CompareStrings().

marabu 27. Jul 2005 08:04

Re: Schnelle Suche einer Zeile in txt-Datei
 
Hallo Nicolai,

Zitat:

Zitat von Nicolai1605
Das ganze geht eigentlich ziehmlich schnell.

wenn du die Eigenschaft Sorted deiner Stringlist einschaltest, dann könnte es sogar noch schneller gehen, weil dann ein binary search möglich ist. Bei 65535 Einträgen hat der Suchvorgang dann maximal 16 Schritte, bei unsortierter Liste im Mittel immerhin 32767.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz