summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lesethreadunit.pas21
1 files changed, 19 insertions, 2 deletions
diff --git a/lesethreadunit.pas b/lesethreadunit.pas
index 03b1499..1f78201 100644
--- a/lesethreadunit.pas
+++ b/lesethreadunit.pas
@@ -11,13 +11,14 @@ type
tLeseProzess = class
private
prozess: tProcess;
- puffer: string;
+ puffer,_kopie: string;
_anzahl,sollVorrat: longint;
function rAnzahl: longint;
procedure fuelleVorrat;
public
property anzahl: longint read rAnzahl;
- constructor create(dateiName: string; vorratsZeilen: longint);
+ constructor create(dateiName: string; vorratsZeilen: longint); overload;
+ constructor create(dateiName, kopie: string; vorratsZeilen: longint); overload;
destructor destroy; override;
function gibZeile(out s: string): boolean;
end;
@@ -28,11 +29,17 @@ implementation
constructor tLeseProzess.create(dateiName: string; vorratsZeilen: longint);
begin
+ create(dateiName,'',vorratsZeilen);
+end;
+
+constructor tLeseProzess.create(dateiName, kopie: string; vorratsZeilen: longint);
+begin
inherited create;
puffer:='';
_anzahl:=0;
sollVorrat:=vorratsZeilen;
+ _kopie:=kopie;
prozess:=tProcess.create(nil);
if pos('/dev/',dateiName)=1 then
@@ -66,6 +73,7 @@ procedure tLeseProzess.fuelleVorrat;
var
s: string;
len,i: longint;
+ f: textfile;
const
maxLen = 1024*1024;
begin
@@ -75,6 +83,15 @@ begin
for i:=1 to len do
_anzahl:=_anzahl+byte(s[i]=#10);
puffer:=puffer+copy(s,1,len);
+ if _kopie<>'' then begin
+ assignfile(f,_kopie);
+ if not fileexists(_kopie) then
+ rewrite(f)
+ else
+ append(f);
+ write(f,copy(s,1,len));
+ closefile(f);
+ end;
end;
end;