From 4fd5945ed697ad589fc4f379c7c8c173fb7de63e Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Fri, 24 Jul 2015 08:44:46 +0200 Subject: protokollunit.pas neu --- protokollunit.pas | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 protokollunit.pas diff --git a/protokollunit.pas b/protokollunit.pas new file mode 100644 index 0000000..74e9caf --- /dev/null +++ b/protokollunit.pas @@ -0,0 +1,114 @@ +unit protokollunit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils; + +type + tProtokolldatei = record + datei: textfile; + einrueckung: longint; + end; + + { tProtokollant } + + tProtokollant = class(TObject) + private + sDat: ^tProtokolldatei; + bes: string; + kinder: array of tProtokollant; + elter: tProtokollant; + public + constructor create(dateiname: string); overload; + constructor create(elter_: tProtokollant; besitzer: string); overload; + destructor destroy; override; + procedure schreibe(s: string); + procedure schreibe(s: string; tee: boolean); + procedure destroyall; + end; + + +implementation + +{ tProtokollant } + +constructor tProtokollant.create(dateiname: string); +begin + inherited create; + getmem(sDat,sizeof(tProtokolldatei)); + sDat^.einrueckung:=10; + assignfile(sDat^.datei,dateiname); + rewrite(sDat^.datei); + bes:=''; + setlength(kinder,0); + elter:=nil; +end; + +constructor tProtokollant.create(elter_: tProtokollant; besitzer: string); +begin + inherited create; + sDat:=elter_.sDat; + setlength(elter_.kinder,length(elter_.kinder)+1); + elter_.kinder[length(elter_.kinder)-1]:=self; + elter:=elter_; + setlength(kinder,0); + bes:=elter.bes+'.'+besitzer; + if pos('.',bes)=1 then delete(bes,1,1); + if length(bes)+4 > sDat^.einrueckung then + sDat^.einrueckung:=length(bes)+4; +end; + +destructor tProtokollant.destroy; +var + i: longint; +begin + while length(kinder)>0 do + kinder[length(kinder)-1].free; + if assigned(elter) then begin + flush(sDat^.datei); + i:=0; + while (iself) do + inc(i); + if i>=length(elter.kinder) then + schreibe('destroy fehlgeschlagen, ich kann mich nicht sehen.'); + inc(i); + while i