home *** CD-ROM | disk | FTP | other *** search
- PROGRAM Report;
-
- {$A+,B-,F-,N-,O-,R-,S-,V-,I-,G+}
- {$M 10000,0,100000}
-
- USES DOS,Crt,StrProcs;
-
- CONST BufSize=$FFFF;
- MaxDizLines=50;
-
- LABEL NewEntry;
-
- VAR i,AllZ,DizZ,Cntr:WORD;
- Datei1,Datei2:TEXT;
- DName1,DName2:PathStr;
- Stichwort,Lesezeile:STRING;
- Buffer:POINTER;
- DizArray:ARRAY [1..MaxDizLines] OF STRING;
-
- PROCEDURE BothOutput(Zeile:STRING);
- BEGIN
- WriteLn(Zeile);
- WriteLn(Datei2,Zeile);
- END;
-
-
- BEGIN
- ClrScr;
- WriteLn('┌──────╖ ┌─────╖ ┌─────╖ ┌──────╖ ┌──────╖ ┌─────╖ V2.0, Freeware-');
- WriteLn('│ ╔══╕ ║ │ ╔═══╝ │ ╔═╕ ║ │ ╔══╕ ║ │ ╔══╕ ║ ╘═╕ ╔═╝ Report-Generator zur');
- WriteLn('│ ╙──┘ ║ │ ╙─╖ │ ╙─┘ ║ │ ║ │ ║ │ ╙──┘ ║ │ ║ Dateisuche in Filelisten');
- WriteLn('│ ╔═╕ ╔╝ │ ╔═╝ │ ╔═══╝ │ ║ │ ║ │ ╔═╕ ╔╝ │ ║');
- WriteLn('│ ║ │ ╙╖ │ ╙───╖ │ ║ │ ╙──┘ ║ │ ║ │ ╙╖ │ ║ Thomas.Moenkemeier');
- WriteLn('╘═╝ ╘══╝ ╘═════╝ ╘═╝ ╘══════╝ ╘═╝ ╘══╝ ╘═╝ FIDO: 2:2426/2240');
- IF ParamCount=0 THEN BEGIN
- WriteLn;
- WriteLn('Syntax: REPORT <Quelldatei> <Zieldatei> <Stichwort>');
- WriteLn;
- WriteLn('Durchsucht <Quelldatei> nach einem <Stichwort> und schreibt alle');
- WriteLn('Fundzeilen in <Zieldatei>. Das Stichwort wird, wenn nicht angegeben,');
- WriteLn('im Dialog abgefragt. An die Zieldatei wird hinten REPORT.TXT angehängt.');
- Halt(255)
- END;
- AllZ:=0;
- LeseZeile:='';
- Cntr:=0;
- CheckEOF:=true;
- GetMem(Buffer,BufSize);
- SetTextBuf(Datei1,Buffer^,BufSize);
- DName1:=ParamStr(1);
- IF DName1='' THEN DName1:='M:\LIST\VCPHQALL.LST';
- DName1:=FExpand(DName1);
- WriteLn(#10+'Quelldatei: '+DName1);
- DName2:=ParamStr(2);
- IF DName2='' THEN DName2:=PathOnly(ParamStr(0))+'REPORT.DAT';
- DName2:=FExpand(DName2);
- WriteLn(#10+'Zieldatei: '+DName2);
- Stichwort:=ParamStr(3);
- IF Stichwort='' THEN BEGIN
- Write(#10+'Bitte Stichwort eingeben :');
- ReadLn(Stichwort);
- END;
- Stichwort:=FastUpper(Stichwort);
- ASSIGN(Datei1,DName1);
- RESET(Datei1);
- ASSIGN(Datei2,DName2);
- REWRITE(Datei2);
- BothOutput('');
- BothOutput('Suche nach "'+Stichwort+'" in der Datei "'+DName1+'" ergab:');
- BothOutput('');
- REPEAT
- ReadLn(Datei1,Lesezeile);
- INC(AllZ);
- NewEntry:
- IF (LeseZeile[1]<>#32) OR (LeseZeile[0]=#0) THEN BEGIN
- DizZ:=1;
- FillChar(DizArray,SizeOf(DizArray),#0);
- END ELSE BEGIN
- INC(DizZ);
- END;
- DizArray[DizZ]:=Lesezeile;
- IF BOOLEAN(POS(Stichwort,FastUpper(LeseZeile))) THEN BEGIN
- INC(Cntr);
- FOR i:=1 TO DizZ DO BEGIN
- BothOutPut(DizArray[i]);
- END;
- REPEAT
- ReadLn(Datei1,Lesezeile);
- INC(AllZ);
- IF (LeseZeile[1]=#32) OR (LeseZeile[0]=#0) THEN BEGIN
- BothOutput(LeseZeile);
- END ELSE BEGIN {schon ein neuer Eintrag}
- BothOutput('');
- GOTO NewEntry;
- END;
- UNTIL false;
- END;
- UNTIL (EOF(Datei1)) OR (KeyPressed);
- CLOSE(Datei1);
- BothOutput(STR0(Cntr,4)+' Dateien gefunden, '+STR0(AllZ,4)+' Zeilen durchsucht.');
- IF (Cntr>0) THEN BEGIN
- BothOutput('');
- ASSIGN(Datei1,PathOnly(ParamStr(0))+'REPORT.TXT');
- FileMode:=0;
- RESET(Datei1);
- IF DOSError=0 THEN REPEAT
- ReadLn(Datei1,LeseZeile);
- BothOutput(LeseZeile);
- UNTIL EOF(Datei1);
- BothOutput('');
- END;
- CLOSE(Datei1);
- CLOSE(Datei2);
- FreeMem(Buffer,BufSize);
- END.
-
-
- REPEAT
- ReadLn(Datei1,Lesezeile);
- INC(Zeilen);
- IF (LeseZeile[1]<>#32) THEN Start:=Zeilen;
- IF BOOLEAN(POSBM(Stichwort,FastUpper(LeseZeile))) THEN BEGIN
- INC(Zaehler);
- CLOSE(Datei1);
- ASSIGN(Datei1,DName1);
- FileMode:=0;
- RESET(Datei1);
- FOR i:=1 TO Start DO ReadLn(Datei1,LeseZeile);
- REPEAT
- BothOutput(LeseZeile);
- ReadLn(Datei1,Lesezeile);
- INC(Zeilen);
- UNTIL (LeseZeile[1]<>#32);
- CLOSE(Datei1);
- ASSIGN(Datei1,DName1);
- FileMode:=0;
- RESET(Datei1);
- DEC(Zeilen);
- FOR i:=1 TO Zeilen DO ReadLn(Datei1,LeseZeile);
- BothOutput('');
- END;
-