![]() |
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:
wird dann z.b.
blabla,bla:test.exe>bla-hier ist noch einer...datei.bmp;bla
Delphi-Quellcode:
also mir fällt nix ein um sowas zu verwirklichen... please help!
test.exe
datei.bmp |
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. |
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: |
hmm also mit pos+copy und variablen?
|
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. |
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".
|
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: |
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...
|
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.
|
Du hast IMHO keine Chance, da dieses
Code:
ein gültiger Dateiname ist. Wieso sollte jetzt ausgerechnet der Teil
bla-hier ist noch einer...datei.bmp;bla
Code:
der gewünschte Dateiname sein?
datei.bmp
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 14:36 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