summaryrefslogtreecommitdiff
path: root/tools.pas
diff options
context:
space:
mode:
Diffstat (limited to 'tools.pas')
-rw-r--r--tools.pas120
1 files changed, 92 insertions, 28 deletions
diff --git a/tools.pas b/tools.pas
index 4ba44a7..3b9671b 100644
--- a/tools.pas
+++ b/tools.pas
@@ -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;