From feefc686d8637b14732f1543e346f486f6920a8c Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 20 Dec 2017 12:03:25 +0100 Subject: tDateienMitDaten.finde neu zum einfachereren Suchen von Dateien per Name --- dateibeziehungen.pas | 51 +++++++++++++++------------------------------------ tools.pas | 26 ++++++++++++++++++++++++++ 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; -- cgit v1.2.3-54-g00ecf