diff options
Diffstat (limited to 'tools.pas')
-rw-r--r-- | tools.pas | 120 |
1 files changed, 92 insertions, 28 deletions
@@ -18,7 +18,20 @@ type name: ansiString; aktuell: tAktualitaet; end; - tDateienMitDaten = array of tDateiMitDatum; + tDateienMitDaten = class(tFPList) + function rItem(idx: longint): tDateiMitDatum; inline; + procedure wItem(idx: longint; neu: tDateiMitDatum); inline; + public + property items[idx: longint]: tDateiMitDatum + read rItem + write wItem; default; + procedure mrProper; + function add(neu: tDateiMitDatum): longint; + function last: tDateiMitDatum; + function gleicheNamenWie(dmd: tDateienMitDaten): boolean; + function toString: string; override; + procedure append(dmd: tDateienMitDaten); + end; function min(a1,a2: tAktualitaet): tAktualitaet; inline; overload; function max(a1,a2: tAktualitaet): tAktualitaet; inline; overload; @@ -29,8 +42,7 @@ procedure testeObBefehlLokal(bef, ordner: string; lokTest: tRegExpr); function extrahiereAlleDateien(woraus: string): tMyStringList; function unescape(s: string): string; function escape(s,toe: string; ec: char): string; -function bashMatch(was,worauf: string): boolean; -function gleicheDateinamen(dl1,dl2: tDateienMitDaten): boolean; +procedure ersetzeAlleVorkommen(var worin: string; was,wodurch: string); // Routinen für sha512-Prüfsummen @@ -42,6 +54,77 @@ implementation uses lowlevelunit; +// tDateienMitDaten ************************************************************ + +function tDateienMitDaten.rItem(idx: longint): tDateiMitDatum; +begin + result:=tDateiMitDatum(get(idx)); +end; + +procedure tDateienMitDaten.wItem(idx: longint; neu: tDateiMitDatum); +begin + put(idx,neu); +end; + +procedure tDateienMitDaten.mrProper; +var + i: longint; +begin + for i:=0 to count-1 do + items[i].free; + clear; +end; + +function tDateienMitDaten.add(neu: tDateiMitDatum): longint; +begin + result:=inherited add(neu); +end; + +function tDateienMitDaten.last: tDateiMitDatum; +begin + result:=tDateiMitDatum(inherited last); +end; + +function tDateienMitDaten.gleicheNamenWie(dmd: tDateienMitDaten): boolean; +var + i,j: longint; +begin + result:=count=dmd.count; + if not result then + exit; + for i:=0 to count-1 do begin + result:=false; + for j:=0 to dmd.count-1 do + result:=result or (items[i].name = dmd[j].name); + if not result then exit; + end; +end; + +function tDateienMitDaten.toString: string; +var + i: longint; +begin + result:=''; + for i:=0 to count-1 do + result:=result+''''+items[i].name+''''#10; +end; + +procedure tDateienMitDaten.append(dmd: tDateienMitDaten); +var + i,j: longint; + found: boolean; +begin + for i:=0 to dmd.count-1 do begin + found:=false; + for j:=0 to count-1 do + found:=found or (items[j].name = dmd[i].name); + if not found then + add(dmd[i]); + end; +end; + +// allgemeine Funktionen + function min(a1,a2: tAktualitaet): tAktualitaet; begin if a1<a2 then @@ -233,32 +316,13 @@ begin end; end; -function bashMatch(was,worauf: string): boolean; -var - re: tRegExpr; +procedure ersetzeAlleVorkommen(var worin: string; was,wodurch: string); begin - if pos('*',was)=0 then begin - result:=was=worauf; - exit; - end; - re:=tRegExpr.create; - re.expression:='^'+escape(escape(was,'.|()^$','\'),'*','.')+'$'; - result:=re.exec(worauf); - re.free; -end; - -function gleicheDateinamen(dl1,dl2: tDateienMitDaten): boolean; -var - i,j: longint; -begin - result:=length(dl1)=length(dl2); - if not result then - exit; - for i:=0 to length(dl1)-1 do begin - result:=false; - for j:=0 to length(dl2)-1 do - result:=result or (dl1[i].name=dl2[j].name); - if not result then exit; + while pos(was,worin)>0 do begin + worin:= + leftStr(worin,pos(was,worin)-1) + + wodurch + + rightStr(worin,length(worin)-pos(was,worin)-length(was)+1); end; end; |