From 165cb5d2489b083921c67e6ac01fb46d1d59a095 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 9 Jan 2018 15:31:40 +0100 Subject: unterVerzeichnisRegex neu --- tools.pas | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/tools.pas b/tools.pas index 2efcb5e..999b381 100644 --- a/tools.pas +++ b/tools.pas @@ -48,6 +48,7 @@ function unescape(s: string): string; function escape(s,toe,es: string): string; function escapeStringToRegex(s: string; typ: tRegexTyp; extras: string = ''): string; inline; procedure ersetzeAlleVorkommen(var worin: string; was,wodurch: string); +function unterVerzeichnisRegex(dateien: array of const): string; // Routinen für sha512-Prüfsummen @@ -413,6 +414,64 @@ begin end; end; +function unterVerzeichnisRegex(dateien: array of const): string; +var + i,j: longint; + dats: tStringList; + s: string; + rekursiv: boolean; +begin + result:=''; + dats:=tStringList.create; + for i:=0 to length(dateien)-1 do + case dateien[i].vType of + vtChar: + dats.add(dateien[i].vChar); + vtWideChar: + dats.add(string(dateien[i].vWideChar)); + vtString: + dats.add(string(dateien[i].vString)); + vtPChar: + dats.add(dateien[i].vPChar); + vtPWideChar: + dats.add(dateien[i].vPWideChar); + vtAnsiString: + dats.add(string(dateien[i].vAnsiString)); + vtWideString: + dats.add(string(dateien[i].vWideString)); + vtObject: + if dateien[i].vObject is tStringList then begin + for j:=0 to (dateien[i].vObject as tStringList).count-1 do + dats.add((dateien[i].vObject as tStringList)[j]); + end + else + fehler('unterVerzeichnisRegex Argument Nummer '+intToStr(i)+' ist ein Klasse, aber keine StringList!'); + else + fehler('unterVerzeichnisRegex Argument Nummer '+intToStr(i)+' ist kein String!'); + end{of case}; + + for i:=0 to dats.count-1 do begin + s:=dats[i]; + rekursiv:=leftStr(s,1)='1'; + delete(s,1,1); + if rekursiv then begin + s:=extractFilePath(s); + while rightStr(s,1)='/' do + delete(s,length(s),1); + end; + s:=escapeStringToRegex(s,rtFpc); // "*" soll nicht escaped werden, müsste bei rtFpc aber eigentlich escaped werden! + s:=escape(s,'*','[^/]'); + if leftStr(s,1)='/' then // absoluter Pfad + s:='^'+s; + result:=result+'|'+s; + if rekursiv then + result:=result+'(/|$)' + else + result:=result+'$'; + end; + delete(result,1,1); +end; + // Routinen für sha512-Prüfsummen var -- cgit v1.2.3-70-g09d2