![]() |
AW: Wildcards String
Perfekt danke das funktioniert.
Vielen Dank euch allen für die schnelle Hilfe. |
AW: Wildcards String
Etwas älter der Threat aber:
In dem definierten Verzeichnis »ModPath« befinden sich unterschiedlich viele der mit [StartShips]..... gesetzten Verzeichnisse. Beispiel:
Code:
Der nachstehende Befehl zum entfernen dieser Verzeichnisse aus dem »ModPath« funktioniert einwandfrei:
[StartShips] Flaggschiff
[StartShips] Kreuzer [StartShips] Tankschiff [StartShips] U-Boot [StartShips] Values
Delphi-Quellcode:
Aber er lässt immer ein Verzeichnis über. In diesem Beispiel [StartShips] Flaggschiff, letztlich immer das erste Verzechniss, das alphabetisch oben steht.
TDirectory.GetDirectories(ModPath+'\', '*[StartShips]') do TDirectory.Delete(FoundName, True);
Was ist das? geldis |
AW: Wildcards String
Trenn es doch erstmal auf?
* findet GetDirectories alles? * und löscht Delete das dann auch wirklich? Ich hätte eher gedacht, dass garnichts gelöscht wird, weil ähhhhh :stupid:
Delphi-Quellcode:
'*[StartShips]'
Delphi-Quellcode:
'[StartShips]*'
PS: ich bin mir sicher, dass
Delphi-Quellcode:
nicht nötig sein sollte.
+'\'
|
AW: Wildcards String
Tja, der oben angezeigte Code ist nicht ganz komplett:
Delphi-Quellcode:
Er zeigt mir hiermit alle enthaltenen Verzeichnisse an. Bis auf das Erste.
for FoundName in TDirectory.GetDirectories(ModPath+'\', '*[StartShips]') do TDirectory.Delete(FoundName, True);
Und er löscht alle entsprechenden Verzeichnisse. Bis auf das Erste. Wildcard: *[StartShips] wie gesagt. *[StartShips]* löscht alles !! [StartShips]* löscht nichts ?? geldis |
AW: Wildcards String
LÖL :lol:
IOUtils nimmt teilweise (nicht immer) des MatchesMask aus System.Masks (sucht nach allem und filtert selbst), und an anderen Stellen verwendet es den Filter direkt via FindFirstFile. MatchesMask nutzt aber nicht nur * und ?, sondern auch CharSets via [] :freak: So
Delphi-Quellcode:
?
'[[]StartShips[]]*'
|
AW: Wildcards String
Das folgende funktioniert genau wie gewünscht :
Delphi-Quellcode:
Man muss die eckigen Klammern weglassen - obwohl im Verzeichnisnamen enthalten. Gemerkt habe ich das als ich den eigentlich für mein Verständnis erforderlichen BackSlash entfernt und direkt in den Suchstring gesetzt habe.
for FoundName in TDirectory.GetDirectories(ModPath+'\', '*StartShips*') do TDirectory.Delete(FoundName, True);
In der erscheinenden Fehlermeldung wird der Slash als «Ungültige Zeichen im Suchmuster : [\[StartShips]*]» angegeben (EInOUtArgumentException). Und da fielen mir die eckigen Klammern um den Fehleranzeigestring auf. Hmmmm... Also mal den Suchstring wie oben definiert anz ohne eckige Klammern - klappt. Aber so richtig verstehen kann ich das jetzt nicht. Denn für einen Ordnernamen sind die eckigen Klammern ja zugelassen ...... Jedenfalls geht es jetzt. geldis P.S. '[[]StartShips[]]*' habe ich jetzt nicht probiert. Aber das riecht auch als Möglichkeit.... Danke jedenfalls, ich werde das mal probieren. Rein Interessehalber. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 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 by Thomas Breitkreuz