You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
281 lines
7.3 KiB
281 lines
7.3 KiB
(*
|
|
Dieses Programm ist nicht von mir, sondern stammt von DL5FBD.
|
|
Es dient zum Ausdruck der TOP-Logbuchdatei (LOG.TOP).
|
|
Allerdings ist das Programm wenig getestet und muss gegebenfalls
|
|
angepasst werden.
|
|
*)
|
|
|
|
{LOGPRINT bietet folgende Moeglichkeiten:
|
|
|
|
1. Formattierter Druck von SP.LOG auf EPSON-komp. Druckern
|
|
|
|
Der Druck wird in Blaettern zu je 67 Zeilen formattiert und
|
|
die 5 SP.LOG Kopfzeilen am Anfang jeder jedes Blatt ausgedruckt.
|
|
|
|
2. Anpositionieren einer gewuenschten Druckseite und Druck der
|
|
Restdatei inklusiv dieser Seite.
|
|
|
|
|
|
Der Aufruf ist:
|
|
|
|
LOGPRINT <Datei> fuer kompletten Ausdruck einer SP.LOG
|
|
|
|
LOGPRINT <Datei> (Druckseite) fuer Ausdruck ab Seite (Druckseite)
|
|
|
|
Sofern die Environmentvariable SPDIR gesetzt ist, wird SP.LOG in der darin de-
|
|
finierten Directory gesucht. Ist SPDIR nicht gesetzt so wird in der aktuellen
|
|
Directory gesucht.
|
|
|
|
73 de Gerd Michael}
|
|
|
|
|
|
{-------------------------------------------------------------------------}
|
|
{LOGPRINT 22.07.90 DL5FBD }
|
|
{ }
|
|
{Druckutility zum Ausdruck der SP.LOG Datei }
|
|
{Erlaubt den Ausdruck von SP.LOG in Seiten formattiert wobei die }
|
|
{Kopfzeilen am Anfang jeder Seite wiederholt werden. }
|
|
{ }
|
|
{Das Programm erlaubt die Positionierung auf eine gewuenschte Druckseite }
|
|
{mittels eines Suchlaufs. }
|
|
{ }
|
|
{22.07.90 DL5FBD }
|
|
{-------------------------------------------------------------------------}
|
|
|
|
Program LOGPRT;
|
|
|
|
USES Printer;
|
|
|
|
CONST TopOfForm = 0;
|
|
TextFenster = 50;
|
|
AnzKopfzeil = 3;
|
|
unwichtig = 10;
|
|
|
|
VAR Datei : Text;
|
|
Name : STRING[70];
|
|
Seite : Word;
|
|
Seiten : Word;
|
|
Zeilen : Byte;
|
|
I : Byte;
|
|
Test : Integer;
|
|
Zeile : String[140];
|
|
Start : String[80];
|
|
Ende : String[80];
|
|
CRLF : String[2];
|
|
SeitS : String[5];
|
|
Fett : String[10];
|
|
Normal : String[10];
|
|
Kopfzeile : Array[1..5] of STRING;
|
|
Formfeed : String[1];
|
|
|
|
|
|
FUNCTION GetEnv (EnvVar : String) : String;
|
|
|
|
TYPE
|
|
EnvPtr = Word;
|
|
|
|
VAR
|
|
Enviro : ^EnvPtr;
|
|
Offset : Word;
|
|
I : Byte;
|
|
S : String;
|
|
|
|
BEGIN
|
|
GetEnv := '';
|
|
IF Length(EnvVar) = 0 THEN Exit;
|
|
FOR I := 1 TO Length(EnvVar) DO EnvVar[I] := UpCase(EnvVar[I]);
|
|
EnvVar := EnvVar + '=';
|
|
Enviro := Ptr(PrefixSeg,$2C);
|
|
Offset := 0;
|
|
S := '';
|
|
Repeat
|
|
S:='';
|
|
|
|
{Environmentstring komplett extrahieren}
|
|
While Mem[Enviro^:Offset] > 0 DO
|
|
BEGIN
|
|
S := S+UpCase(Chr(Mem[Enviro^:Offset]));
|
|
INC (Offset);
|
|
END;
|
|
|
|
{Ist die Environmentvariable vorhanden ??}
|
|
{Dann Zuweisungsteil holen und beenden !}
|
|
IF (Pos(EnvVar,S) = 1) THEN
|
|
BEGIN
|
|
GetEnv := Copy(S,Pos('=',S)+1,Length(S));
|
|
EXIT;
|
|
END;
|
|
|
|
Inc(Offset);
|
|
|
|
{Endekennung Environmentvariablenbereich}
|
|
Until (Mem[Enviro^:Offset] = 0)
|
|
AND (Mem[Enviro^:Offset+1] = 1)
|
|
AND (Mem[Enviro^:Offset+2] = 0);
|
|
END;
|
|
|
|
|
|
Function GetDIR(Pfad:String):String;
|
|
|
|
VAR Dummi :String[70];
|
|
|
|
BEGIN
|
|
Dummi:=GetEnv(Pfad);
|
|
IF LENGTH(Dummi) >0 THEN Dummi:=Dummi+'\';
|
|
GETDIR:=Dummi;
|
|
END;
|
|
|
|
|
|
Procedure DefiniereDruckervariable;
|
|
|
|
Begin
|
|
CRLF :=chr(13)+chr(10); {Zeilenabschluss CR+LF}
|
|
Formfeed:=chr(12); {Seitenvorschub}
|
|
Start :=chr(27)+'@'; {Drucker-Reset}
|
|
{Start :=Start+chr(27)+chr(25)+'T'+'1';}{Druckbeginn Einzelblatteinzug Zeile 1}
|
|
Start :=Start+chr(27)+chr(15); {Eliteschrift 96 Zeichen/Zeile}
|
|
{Start :=Start+chr(27)+'l'+chr(1);} {Heftrand 1 Zeichen}
|
|
Ende :=chr(27)+'@'; {Drucker-Reset}
|
|
Fett :=chr(27)+'E'; {Fettschrift ein}
|
|
Normal:=chr(27)+'F'; {Fettschrift aus}
|
|
END;
|
|
|
|
|
|
Procedure Druckstring(AusZeile :String);
|
|
|
|
VAR K :Byte;
|
|
Z :CHAR;
|
|
Begin
|
|
|
|
FOR K:=1 TO LENGTH(AusZeile) DO
|
|
BEGIN
|
|
Z:=AusZeile[K];
|
|
Repeat
|
|
{$I-} Write(LST,Z); {$I+}
|
|
Until IOResult=0;
|
|
END;
|
|
END;
|
|
|
|
|
|
Procedure DruckKopf;
|
|
|
|
Begin
|
|
Begin
|
|
DruckString(Fett+Name+' ');
|
|
STR(Seite,SeitS);
|
|
DruckString('Seite: '+SeitS+CRLF);
|
|
Writeln(crlf,crlf);
|
|
Writeln(Name+' Seite: '+SeitS);
|
|
FOR I:=1 to AnzKopfZeil-1 DO
|
|
BEGIN
|
|
Druckstring(Kopfzeile[I]+CRLF);
|
|
Writeln(Kopfzeile[I]);
|
|
END;
|
|
Druckstring(Normal);
|
|
Zeilen:=AnzKopfZeil;
|
|
END;
|
|
END;
|
|
|
|
BEGIN
|
|
|
|
DefiniereDruckervariable;
|
|
|
|
IF ParamCount>=1 THEN Name:=ParamStr(1)
|
|
ELSE
|
|
BEGIN
|
|
Writeln;
|
|
Writeln('LOGPRINT - Formattierter Ausdruck der SP-Log-Datei');
|
|
Writeln(' 22.07.90 DL5FBD');
|
|
Writeln;
|
|
Writeln('Aufruf: LOGPRINT <Dateiname> [Druckseite]');
|
|
Writeln;
|
|
Halt;
|
|
END;
|
|
|
|
Assign(Datei,GETDIR('SPDIR')+Name);
|
|
{$I-} Reset(Datei); {$I+}
|
|
If IOResult<>0 THEN
|
|
BEGIN
|
|
Writeln;
|
|
Writeln(GETDIR('SPDIR'),Name,' nicht gefunden!');
|
|
Writeln;
|
|
Halt;
|
|
END;
|
|
|
|
FOR I:=1 to unwichtig DO Readln(Datei);
|
|
FOR I:=1 to AnzKopfZeil-1 DO Readln(Datei,Kopfzeile[I]);
|
|
|
|
DruckString(Start);
|
|
|
|
IF ParamCount=2 THEN
|
|
BEGIN
|
|
Zeile:=ParamStr(2);
|
|
VAL(Zeile,Seite,Test);
|
|
IF Test <>0 THEN
|
|
BEGIN
|
|
Writeln;
|
|
Writeln('Fehlerhafte Druckseitenangabe!');
|
|
Writeln;
|
|
Halt;
|
|
END;
|
|
Seite:=Seite-1
|
|
END
|
|
ELSE Seite:=0;
|
|
|
|
IF Seite>0 THEN
|
|
BEGIN
|
|
Seiten:=0;
|
|
Writeln;
|
|
Repeat
|
|
INC(Seiten);
|
|
Write('Positionierung steht auf Seite ',Seiten+1,CHR(13));
|
|
Zeilen:=AnzKopfZeil;
|
|
|
|
Repeat
|
|
Readln(Datei,Zeile);
|
|
INC(Zeilen);
|
|
Until (Eof(Datei)) OR (Zeilen=Textfenster);
|
|
|
|
Until Eof(Datei) OR (Seiten=Seite);
|
|
|
|
IF Eof(Datei) THEN
|
|
BEGIN
|
|
Writeln;
|
|
Writeln('Fehlerabbruch! Das Ende der Logdatei wurde vor der');
|
|
Writeln(' Leseposition der Druckseite erreicht!');
|
|
Writeln;
|
|
Halt;
|
|
END;
|
|
END;
|
|
|
|
Repeat { Druckschleife }
|
|
|
|
IF TopOfForm>0 THEN For I:=1 TO TopOfForm DO DruckString(CRLF);
|
|
|
|
INC(Seite);
|
|
Zeilen:=0;
|
|
|
|
DruckKopf; {Kopfzeile bei Zusatzparametern}
|
|
|
|
Repeat { Seitenschleife }
|
|
Readln(Datei,Zeile);
|
|
Druckstring (Zeile);
|
|
Druckstring (CRLF);
|
|
Writeln(Zeile);
|
|
INC(Zeilen);
|
|
Until (Zeilen=TextFenster) OR Eof(Datei);
|
|
|
|
IF Zeilen=TextFenster THEN
|
|
Begin
|
|
Druckstring(Formfeed); { Seitenvorschub }
|
|
End;
|
|
|
|
Until Eof(Datei);
|
|
|
|
Druckstring(Formfeed); { Seitenvorschub }
|
|
|
|
DruckString(Ende);
|
|
|
|
FiResult := CloseBin(Datei);
|
|
END.
|