diff options
author | Erich Eckner <git@eckner.net> | 2018-01-09 15:31:40 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2018-01-09 15:31:40 +0100 |
commit | 165cb5d2489b083921c67e6ac01fb46d1d59a095 (patch) | |
tree | 6d61f9c4c26506bc0796c683955cefe02268612e | |
parent | 33f99c328d65763226f29b63731b96e696c3ca4e (diff) | |
download | Make-165cb5d2489b083921c67e6ac01fb46d1d59a095.tar.xz |
unterVerzeichnisRegex neu
-rw-r--r-- | tools.pas | 59 |
1 files changed, 59 insertions, 0 deletions
@@ -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 |