summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-12-20 12:03:25 +0100
committerErich Eckner <git@eckner.net>2017-12-20 12:03:25 +0100
commitfeefc686d8637b14732f1543e346f486f6920a8c (patch)
tree25a828a49af854dc0e74fc6f492be862500aec49
parent2fb1e0b965e8ab4563dcbf9e59b020f72cc66f84 (diff)
downloadMake-feefc686d8637b14732f1543e346f486f6920a8c.tar.xz
tDateienMitDaten.finde neu zum einfachereren Suchen von Dateien per Name
-rw-r--r--dateibeziehungen.pas51
-rw-r--r--tools.pas26
2 files changed, 41 insertions, 36 deletions
diff --git a/dateibeziehungen.pas b/dateibeziehungen.pas
index 403ca03..7eee746 100644
--- a/dateibeziehungen.pas
+++ b/dateibeziehungen.pas
@@ -419,7 +419,6 @@ function tGenerischeAbhaengigkeit.zieleHinzufuegen(ziele, quellen: tDateienMitDa
var
i,ebene,ende: longint;
s,t,u: string;
- wasda: boolean;
sR: tSearchRec;
begin
result:=false;
@@ -427,19 +426,7 @@ begin
if not quellErsetzung(zielFkt,rtKein,quellen,quellen.count) then exit;
if pos('*',zielFkt)=0 then begin
zielFkt:=unescape(zielFkt);
- wasda:=false;
- for i:=0 to _dats.count-1 do
- if zielFkt=_dats[i].name then begin
- wasda:=true;
- ziele.add(_dats[i]);
- end;
- if not wasda then begin
- result:=true;
- _dats.add(tDateiMitDatum.create);
- _dats.last.name:=zielFkt;
- _dats.last.aktuell:=aNichtVorhanden;
- ziele.add(_dats[i]);
- end;
+ ziele.add(_dats.finde(zielFkt,result));
end
else begin
i:=findFirst(zielFkt,$3f,sR);
@@ -864,9 +851,10 @@ end;
function tMach.liesPruefsummenfile: boolean;
var
f: textFile;
- i,j: longint;
+ i: longint;
gutSchlecht: tMyStringListBArray;
gefunden,gut: boolean;
+ dat: tDateiMitDatum;
begin
result:=false;
if _pruefSummenDatei='' then begin
@@ -888,28 +876,19 @@ begin
for gut:=false to true do
for i:=0 to gutSchlecht[gut].count-1 do begin
- gefunden:=false;
- for j:=0 to _dats.count-1 do
- if _dats[j].name=gutSchlecht[gut][i] then begin
- if gut then
- _dats[j].aktuell:=aAktuell
- else
- _dats[j].aktuell:=aVeraltet;
- gefunden:=true;
- break;
+ dat:=_dats.finde(gutSchlecht[gut][i]);
+ if gut then begin
+ if dat.aktuell=aNichtVorhanden then begin
+ gibAus('Fehler: In der Summendatei gibt es eine Datei mit gültiger Prüfsumme, die ich nicht finden kann: '''+dat.name+'''!',3);
+ for gefunden:=false to true do
+ gutSchlecht[gefunden].free;
+ exit;
end;
- if not gefunden then begin
- if not gut then begin // dateien mit ungültiger Prüfsumme können auch nicht vorhanden sein,
- _dats.add(tDateiMitDatum.create); // dann werden sie einfach eingefügt
- _dats.last.name:=gutSchlecht[gut][i];
- _dats.last.aktuell:=aNichtVorhanden;
- continue;
- end;
- gibAus('Fehler: In der Summendatei gibt es eine Datei mit gültiger Prüfsumme, die ich nicht finden kann: '''+gutSchlecht[gut][i]+'''!',3);
- for gefunden:=false to true do
- gutSchlecht[gefunden].free;
- exit;
- end;
+ dat.aktuell:=aAktuell;
+ end
+ else
+ if dat.aktuell<>aNichtVorhanden then
+ dat.aktuell:=aVeraltet;
end;
for gefunden:=false to true do
diff --git a/tools.pas b/tools.pas
index 7c7f96d..8797441 100644
--- a/tools.pas
+++ b/tools.pas
@@ -33,6 +33,8 @@ type
function toString: string; override;
procedure append(dmd: tDateienMitDaten);
function toMyStringList: tMyStringList;
+ function finde(name: string; wirdAktualitaet: tAktualitaet = aNichtVorhanden): tDateiMitDatum; overload; inline;
+ function finde(name: string; out istNeu: boolean; wirdAktualitaet: tAktualitaet = aNichtVorhanden): tDateiMitDatum; overload; inline;
end;
function min(a1,a2: tAktualitaet): tAktualitaet; inline; overload;
@@ -135,6 +137,30 @@ begin
result.add(items[i].name);
end;
+function tDateienMitDaten.finde(name: string; wirdAktualitaet: tAktualitaet = aNichtVorhanden): tDateiMitDatum;
+var
+ dummy: boolean;
+begin
+ result:=finde(name,dummy,wirdAktualitaet);
+end;
+
+function tDateienMitDaten.finde(name: string; out istNeu: boolean; wirdAktualitaet: tAktualitaet = aNichtVorhanden): tDateiMitDatum;
+var
+ i: longint;
+begin
+ istNeu:=false;
+ for i:=0 to count-1 do
+ if items[i].name=name then begin
+ result:=items[i];
+ exit;
+ end;
+ add(tDateiMitDatum.create);
+ istNeu:=true;
+ result:=last;
+ last.name:=name;
+ last.aktuell:=wirdAktualitaet;
+end;
+
// allgemeine Funktionen *******************************************************
function min(a1,a2: tAktualitaet): tAktualitaet;