[Back to TEXTFILE SWAG index] [Back to Main SWAG index] [Original]
PROGRAM FileListDemo; {FILELIST.PAS}
USES Crt, Printer;
TYPE
Action = (Input, Output);
TextObj = OBJECT
fp : text;
LineCount : integer;
EndOfFile : boolean;
CONSTRUCTOR OpenFile(FileName: string;
FileAction: Action);
PROCEDURE ReadLine(VAR TextLine: string);
PROCEDURE WriteLine(TextLine: string);
PROCEDURE PrintLine(TextLine: string);
PROCEDURE FillBlanks;
FUNCTION Done: boolean;
DESTRUCTOR CloseFile;
END;
CONSTRUCTOR TextObj.OpenFile;
BEGIN
Assign(fp, FileName);
CASE FileAction of
Input:
BEGIN
LineCount := 1;
Reset(fp);
IF IOResult <> 0 THEN
BEGIN
writeln(FileName, ' not found!');
halt(1);
END;
writeln(FileName, ' opened for read...');
END;
Output:
BEGIN
Rewrite(fp);
WriteLn(FileName, ' opened for write...');
END;
END; {CASE}
END;
DESTRUCTOR TextObj.CloseFile;
BEGIN
Close(fp);
WriteLn('File closed...');
END;
PROCEDURE TextObj.ReadLine;
BEGIN
ReadLn(fp, TextLine);
EndOfFile := Eof(fp);
END;
PROCEDURE TextObj.WriteLine;
BEGIN
WriteLn(fp, TextLine);
END;
PROCEDURE TextObj.PrintLine;
BEGIN
IF not EndOfFile THEN
BEGIN
IF TextLine[1] <> '}' THEN
BEGIN
WriteLn(lst, TextLine);
Inc(LineCount);
END ELSE FillBlanks;
END;
END;
PROCEDURE TextObj.FillBlanks;
VAR
i : integer;
BEGIN
FOR i := LineCount TO 6 DO WriteLn(lst);
LineCount := 1;
END;
FUNCTION TextObj.Done;
BEGIN
Done := EndOfFile;
END;
VAR
InFile: TextObj;
TextLine: string;
BEGIN
ClrScr;
WITH InFile DO
BEGIN
OpenFile('DUMMY.DAT', Input);
REPEAT
ReadLine(TextLine);
PrintLine(TextLine);
UNTIL Done;
CloseFile;
END;
Write('Press Enter to quit...'); ReadLn;
END.
[Back to TEXTFILE SWAG index] [Back to Main SWAG index] [Original]