home *** CD-ROM | disk | FTP | other *** search
- (*$A+,C-,R-,V-,X-*)
-
- Program TxtFix; {text file processor
- (adds cr and strips high bit)}
-
-
- type
- FnStr = String[14];
- const
-
- BufSiz = 128;
-
- var
- InFile : file;
- OutFile : text;
- Remains : integer;
- Buf : array[1..BufSiz] of byte;
- BufPtr : integer;
- OutStr : string[255];
- InName,
- OutName : FnStr;
- Got : byte;
-
- Procedure Capitalize(var S:FnStr);
- var i:integer;
- begin
- for i := 1 to Length(S) do S[i] := UpCase(S[i]);
- end;
-
- function ReadNext:Boolean;
- begin
- if (BufPtr > Bufsiz) and (Remains > 0) then
- begin
- Write(^M,'Blocks remaining ',Remains:4);
- BlockRead(Infile,Buf,1);
- BufPtr := 1;
- Remains := pred(Remains);
- end;
- if (BufPtr <= Bufsiz) then
- begin
- Got := Buf[BufPtr];
- BufPtr := succ(BufPtr);
- if Got = $1A then ReadNext := false
- else Readnext := true;
- end
- else
- ReadNext := false;
- end;
-
- function Exist(F:FnStr):boolean;
- var Fil:file;
- begin
- Assign(Fil,F);
- {$I-} Reset(Fil); {$I+}
- Exist := (IoResult = 0);
- end;
-
- Function OpenIn:boolean;
- begin
- If exist(InName) then
- begin
- Assign(InFile,InName);
- Reset(InFile);
- BufPtr := Succ(BufSiz);
- Remains := filesize(InFile);
- OpenIn := true;
- end
- else
- begin
- Writeln(InName,' was not found!');
- OpenIn := false;
- end;
- end;
-
- Function OpenOut:boolean;
- var YN:Char;
- begin
- YN := 'Y';
- If exist(OutName) then
- begin
- Write(Outname,' exists. Erase (Y/*N) ?');
- repeat until keypressed;
- Read(Kbd,YN);
- YN := UpCase(YN);
- Writeln(YN);
- end;
- if YN = 'Y' then
- begin
- Assign(OutFile,OutName);
- Rewrite(OutFile);
- OpenOut := true;
- end
- else
- OpenOut := false;
- end;
-
- Procedure FlushOut;
- begin
- Writeln(OutFile,OutStr);
- if Got = $0D then
- if ReadNext then
- if Got <> $0A then BufPtr := Pred(BufPtr);
- OutStr := '';
- end;
-
- Procedure BuildOut;
- begin
- If Length(OutStr) = 255 then FlushOut;
- OutStr := OutStr + Chr(Got);
- end;
-
- Procedure FixFile;
- begin
- OutStr := '';
- While ReadNext do
- begin
- Got := Got and 127;
- if (got = $0A) or (got = $0d) then FlushOut
- else BuildOut;
- end;
- end;
-
- {*** main ***}
- begin
- Write('Name of input file >');
- readln(InName);
- Capitalize(InName);
- Write('Name of output file >');
- readln(OutName);
- Capitalize(OutName);
- if OpenIn then if OpenOut then
- begin
- FixFile;
- Close(InFile);
- Close(OutFile);
- Writeln;
- end;
- end.