Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dateinamen aus String filtern (https://www.delphipraxis.net/4361-dateinamen-aus-string-filtern.html)

Basic-Master 25. Apr 2003 17:49


Dateinamen aus String filtern
 
Hi,
kennt ihr ne methode, um dateinamen aus nem beliebigen string zu filtern? mir fällt nix ein um sowas zu verwirklichen :oops: : aus
Delphi-Quellcode:
blabla,bla:test.exe>bla-hier ist noch einer...datei.bmp;bla
wird dann z.b.
Delphi-Quellcode:
test.exe
datei.bmp
also mir fällt nix ein um sowas zu verwirklichen... please help!

Christian Seehase 25. Apr 2003 17:55

Moin Basic Master,

nur so als grobe Idee:
Du könntest nach den Endungen suchen, nach denen Du filtern willst, und Dich dann, von der Fundstelle aus, rückwärts durch den String "hangeln", bis Du auf ein Zeichen gestossen bist, dass nicht in einem Dateinamen vorkommen kann.
Je nachdem, ob Du nach ganzen Pfaden, oder nur Dateinamen suchen willst, und ob es sich um Namen mit oder ohne Leerzeichen handeln kann sieht die Suchstrategie immer etwas anders aus.

Stanlay Hanks 25. Apr 2003 18:06

Also 100%tig wirst du das wohl nicht hinbekommen. Du müsstest, wie schon Christian gesagt hat, nach einer Dateiendung suchen. Wenn du aber dann zu einem Leerzeichen kommst, kann das Programm ja nicht wissen ob das Leerzeichen dazugehört oder nicht. Bei einem Ganzen Pfad ist das einfacher: Nach dem ersten "\" suchen, wenn davor dann ein ":" steht nach einem anderen Buchstaben direkt davor suchen und schon hast du das Laufwerk zum namen. Dann müsstest du nur noch nach einer dateiendung suchen und alles was dazwischen ist, ist dann der komplette pfad mit datei. (Natürlich nicht zwangsweise :wink: )

Man liest sich Stanlay :firejump:

Basic-Master 25. Apr 2003 18:15

hmm also mit pos+copy und variablen?

Christian Seehase 25. Apr 2003 19:22

Moin Basic Master,

im Wesentlichen: Ja.

@Stanlay:
Was Du dabei übersiehst: UNC Pfade, also z.B. \\Server\Share\pfad1\pfad2\dateiname.ext

Das mit den Leerstellen im Dateinamen lässt sich noch gut abfragen, weil dann, hoffentlich (;-)), der Pfad in " eingeschlossen ist, so dass man bei einem " hinter der Extension mit der Annahme arbeiten kann, dass der Pfad in " eingeschlossen ist.
Dazu wäre es dann noch ganz sinnvoll auf die Anzahl von " im String , bzw. vor der Extension zu prüfen. Existiert z.B. ein " direkt hinter der Extension, aber kein " vorher, dann kann der Pfad nicht in " eingeschlossen sein.

Basic-Master 25. Apr 2003 20:54

hmm mir ist glaub ich was eingefallen: gibts ne funktion, um alle installierten dateierweiterungen auszugeben? dann könnte man nämlich den text mit den dateierweiterungen splitten und anschliessend "weiterverarbeiten".

Stanlay Hanks 25. Apr 2003 21:07

Dazu müsste man alle registrierten Endungen aus der Registry auslesen, oder? Weiß nicht , ob es dafür ne Funtkion gibt, wie bei Ini Dateien.

man liest sich Stanlay :dancer2:

Basic-Master 25. Apr 2003 21:12

hmm ok wo die ganzen "ordner" der reg liegen, wo die endungen drin sind weiss ich... nur da bräuchte man dann sowas wie readsections bei tinifile...

Stanlay Hanks 25. Apr 2003 21:16

Das ist ja das Problem. Ich hab in der Delphi Hilfe nix dazu gefunden. ich glaub, das liegt daran, dass man ja, wenn man einen neuen Schlüssel auslesen will, erstmal den letzten schließen muss.

Tom 25. Apr 2003 22:05

Du hast IMHO keine Chance, da dieses
Code:
bla-hier ist noch einer...datei.bmp;bla
ein gültiger Dateiname ist. Wieso sollte jetzt ausgerechnet der Teil
Code:
datei.bmp
der gewünschte Dateiname sein?

Aus der Registry die Dateiendungen auszulesen nützt auch nichts, da nirgendwo steht, dass eine Dateiendung in der Registry angeführt sein muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr.
Seite 1 von 2  1 2      

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