diff options
Diffstat (limited to 'mystringlistunit.pas')
-rw-r--r-- | mystringlistunit.pas | 70 |
1 files changed, 35 insertions, 35 deletions
diff --git a/mystringlistunit.pas b/mystringlistunit.pas index 72a86b0..34e72e8 100644 --- a/mystringlistunit.pas +++ b/mystringlistunit.pas @@ -272,6 +272,41 @@ begin end; inc(i); end; + if wasGefunden then continue; + + i:=count-1; + while i>=0 do begin // Substitutionen auswerten + s:=self[i]; + if startetMit('!setze',s) then begin + wasGefunden:=true; + t:=erstesArgument(s,':'); + if pos('$',t)<>1 then begin + prot.schreibe('ungültiger Variablenname '''+t+''' für Ersetzung!',true); + exit; + end; + delete(i); + for j:=i to count-1 do begin + u:=self[j]; + k:=length(u); + while (pos(t,u)>0) and (k>0) do begin // ... nach Ersetzung ... + u:=copy(u,1,pos(t,u)-1)+s+copy(u,pos(t,u)+length(t),length(u)); + dec(k); + end; + self[j]:=u; + end; + end + else + dec(i); + end; + if wasGefunden then continue; + + for i:=0 to count-1 do begin // Shellvariablen auswerten + s:=shellSubst(self[i]); + if s<>self[i] then begin + wasGefunden:=true; + self[i]:=s; + end; + end; i:=0; while i<count do begin // Schleifen ausrollen @@ -367,41 +402,6 @@ begin end; inc(i); end; - if wasGefunden then continue; - - i:=count-1; - while i>=0 do begin // Substitutionen auswerten - s:=self[i]; - if startetMit('!setze',s) then begin - wasGefunden:=true; - t:=erstesArgument(s,':'); - if pos('$',t)<>1 then begin - prot.schreibe('ungültiger Variablenname '''+t+''' für Ersetzung!',true); - exit; - end; - delete(i); - for j:=i to count-1 do begin - u:=self[j]; - k:=length(u); - while (pos(t,u)>0) and (k>0) do begin // ... nach Ersetzung ... - u:=copy(u,1,pos(t,u)-1)+s+copy(u,pos(t,u)+length(t),length(u)); - dec(k); - end; - self[j]:=u; - end; - end - else - dec(i); - end; - if wasGefunden then continue; - - for i:=0 to count-1 do begin // Shellvariablen auswerten - s:=shellSubst(self[i]); - if s<>self[i] then begin - wasGefunden:=true; - self[i]:=s; - end; - end; until not wasGefunden; |