diff options
-rw-r--r-- | lowlevelunit.pas | 6 | ||||
-rw-r--r-- | mystringlistunit.pas | 40 |
2 files changed, 29 insertions, 17 deletions
diff --git a/lowlevelunit.pas b/lowlevelunit.pas index 17ac70b..7ff4268 100644 --- a/lowlevelunit.pas +++ b/lowlevelunit.pas @@ -505,10 +505,10 @@ begin raise e; end; -procedure dumpExceptionCallStack(E: Exception); +procedure dumpExceptionCallStack(e: exception); var - I: Integer; - Frames: PPointer; + I: integer; + Frames: pPointer; Report: string; begin Report := 'Program exception! ' + LineEnding + diff --git a/mystringlistunit.pas b/mystringlistunit.pas index af2ce33..7b91f75 100644 --- a/mystringlistunit.pas +++ b/mystringlistunit.pas @@ -13,6 +13,7 @@ type line: longint; prot: tProtokollant; srNoGo,srBuff: tMyStringList; // Liste der in SubRoutinen verbotenen Zeilenanfänge, sowie der aufgeschobenen Zeilen + procedure gibAus(s: string; ausgaben: byte); public constructor create; overload; constructor create(protokollant: tProtokollant; name: string); overload; @@ -72,6 +73,14 @@ begin inherited destroy; end; +procedure tMyStringlist.gibAus(s: string; ausgaben: byte); +begin + if assigned(prot) then + prot.schreibe(s,odd(ausgaben shr 1)) + else + lowlevelunit.gibAus(s,ausgaben); +end; + procedure tMyStringlist.loadFromFile(const s: ansiString); var i: longint; @@ -80,10 +89,7 @@ begin for i:=0 to count-1 do self[i]:=trim(self[i]); line:=0; - if assigned(prot) then - prot.schreibe(inttostr(count)+' Zeilen eingelesen') - else - gibAus(inttostr(count)+' Zeilen eingelesen',1); + gibAus(inttostr(count)+' Zeilen eingelesen',1); end; procedure tMyStringlist.loadFromGz(const s: ansiString); @@ -100,10 +106,7 @@ begin for len:=0 to count-1 do self[len]:=trim(self[len]); line:=0; - if assigned(prot) then - prot.schreibe(inttostr(count)+' Zeilen eingelesen') - else - gibAus(inttostr(count)+' Zeilen eingelesen',1); + gibAus(inttostr(count)+' Zeilen eingelesen',1); end; procedure tMyStringlist.loadFromResource(const s: ansiString); @@ -321,7 +324,7 @@ begin wasGefunden:=true; t:=erstesArgument(s,':'); if pos('$',t)<>1 then begin - prot.schreibe('ungültiger Variablenname '''+t+''' für Ersetzung!',true); + gibAus('ungültiger Variablenname '''+t+''' für Ersetzung!',3); exit; end; delete(i); @@ -356,7 +359,10 @@ begin l:=i; delete(i); t:=erstesArgument(s,':'); - if (length(t)=0) or (t[1]<>'$') then exit; + if (length(t)=0) or (t[1]<>'$') then begin + gibAus('Schleifenvariable muss mit ''$'' beginnen!',3); + exit; + end; SchleifenInhalt:=tMyStringlist.create(nil,''); // Schleifenkörper merken Ebene:=0; @@ -366,6 +372,14 @@ begin if pos('!Schleife:',self[i])=1 then inc(Ebene); delete(i); end; + if i>=count then begin + gibAus('Ich kann kein zugehöriges Schleifenende zu Schleife über Variable '''+t+''' finden!',3); + gibAus(' ich habe hier noch:',3); + for i:=0 to SchleifenInhalt.count-1 do + gibAus(SchleifenInhalt[i],3); + exit; + end; + delete(i); u:=s; @@ -443,8 +457,7 @@ begin istWahr:=erstesArgument(t)<>u; end; else begin - if assigned(prot) then prot.schreibe('Operator '''+binops[j]+''' ist nicht implementiert!',true) - else gibAus('Operator '''+binops[j]+''' ist nicht implementiert!',3); + gibAus('Operator '''+binops[j]+''' ist nicht implementiert!',3); exit; end; end{of case}; @@ -453,8 +466,7 @@ begin break; end; if not gefunden then begin - if assigned(prot) then prot.schreibe('Ich kann keinen gültigen Operator in Bedingung '''+t+''' finden!',true) - else gibAus('Ich kann keinen gültigen Operator in Bedingung '''+t+''' finden!',3); + gibAus('Ich kann keinen gültigen Operator in Bedingung '''+t+''' finden!',3); exit; end; if not istWahr then |