![]() |
Wildcards String
Hallo liebes Forum,
ich habe ein Problem. Mein Programm soll einen Ordner samt Inhalt vom PC löschen. Funktioniert soweit auch sehr gut. Der Ordner wird relativ regelmäßig neu erzeugt. Allerings immer mit einem anderen Präfix. z.B. C:\Users\user.'+CompName+'\Desktop\123456_Ordner und später C:\Users\user.'+CompName+'\Desktop\789012_Ordner. Habe mir dann eine Funktion Remove erstellt:
Delphi-Quellcode:
Wie bekomme ih hier nun Wildcards hinein das ich beim löschen nur schauen muss ob das Wort Ordner im Namen vorkommt?
Remove('C:\Users\user.'+CompName+'\Desktop\Ordner');
Ich stelle mir das so vor:
Delphi-Quellcode:
Die Fragezeichen sollen hier also die Wildcards darstellen.
Remove('C:\Users\user.'+CompName+'\Desktop\??????Ordner');
Ich hoffe einigermaßen verständlich. Vielleicht hat jemand ne Idee. grüße |
AW: Wildcards String
Delphi-Quellcode:
So aufzurufen:
procedure RemoveFolder(const AFolderNameWithWildcard: string);
var SearchRecord: TSearchRec; BaseFilePath: string; FoundName: string; const FILE_ATTRIBUTES = faDirectory; begin if FindFirst(AFolderNameWithWildcard, FILE_ATTRIBUTES, SearchRecord) = 0 then begin BaseFilePath := ExtractFilePath(AFolderNameWithWildcard); repeat FoundName := BaseFilePath + SearchRecord.Name; if TDirectory.Exists(FoundName) then TDirectory.Delete(FoundName); until FindNext(SearchRecord) <> 0; FindClose(SearchRecord); end; end;
Delphi-Quellcode:
RemoveFolder('C:\Users\user.'+CompName+'\Desktop\*Ordner');
Wildcard ist zumeist ein Sternchen! |
AW: Wildcards String
Hallo,
es ist ratsam, anstelle von FindClose(SearchRecord); einen qualifizierten Bezeichner
Delphi-Quellcode:
zu verwenden, weil es u. U. Konflikt geben kann mit der gleichnamigen Procedure WinAPI.Windows.FindClose(SearchRecord); , die allerdings einen anderen Datentyp erwartet.
System.SysUtils.FindClose(SearchRecord);
Gruß, Andreas |
AW: Wildcards String
Zitat:
Grüß |
AW: Wildcards String
Unter in deinem Quellcode ist TDirectrory ein undeklarierter Bezeicher... Sollte das eher faDirectory sein??
|
AW: Wildcards String
noch eine Frage. Irgendwie funktioniert der Code bei mir überhaupt nicht TiGü. Ist der Code von dir getestet worden?
|
AW: Wildcards String
Herrje, man muss wieder im Urschleim anfangen. :shock:
Ja, nur ein Sternchen für beliebige Kombinationen. Also ein
Delphi-Quellcode:
findet und löscht:
'C:\temp\*_Ordner'
Code:
Das muss in der uses-Klausel stehen, dann erkennt er auch TDirectory (Hier hätte ein beherzter Griff zur Hilfe oder in dieses Internet auch geholfen):
C:\temp\12313123_Ordner
C:\temp\1_Ordner C:\temp\4545_Ordner C:\temp\BlaKeksFuck_Ordner
Delphi-Quellcode:
uses
System.SysUtils, System.IOUtils; |
AW: Wildcards String
Ahh sehr schön Danke. Ja tut mir leid bin noch nicht so weit mit Delphi. Erst mein zweites kleines Projekt. :/
Das Problem bei deiner Variante ist, dass nur leere Verzeichnisse gelöscht werden können. Hast du da noch eine Idee wie man das umgehen kann, sodass auch "besetzte" Verzeichnisse gelöscht werden können. Gruß |
AW: Wildcards String
Zitat:
Delphi-Quellcode:
Aufruf als zweiten Parameter noch
TDirectory.Delete()
Delphi-Quellcode:
mit. Das bedeutet "Rekursiv".
True
![]() |
AW: Wildcards String
Wenn schon TDirectory, warum dann noch der Umweg über FindFirst?
Delphi-Quellcode:
var
FoundName: string; begin for FoundName in TDirectory.GetDirectories('C:\Users\user.'+CompName+'\Desktop', '*_Ordner') do TDirectory.Delete(FoundName, True); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 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