[Back to TEXTFILE SWAG index] [Back to Main SWAG index] [Original]
{ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»}
{º TEMPLATE - Text File Parser º}
{º Steven Kerr, 1994 º}
{º º}
{º Syntax : TEMPLATE Input Output º}
{º º}
{º Where Input = Input File º}
{º Output = Output File º}
{ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ}
{$M 8192, 0, 0}
Program Template;
Uses DOS;
Const
Null : String = '';
LeftControl : Char = '<'; { Left hand control character }
RightControl : Char = '>'; { Right hand control character }
Var
InputFile, OutputFile : Text;
Checked, Error : Boolean;
Function Upper (Parameter : String) : String;
Var
I : Integer;
begin
for I := 1 to Length(Parameter) do
Parameter[I] := UpCase(Parameter[I]);
Upper := Parameter
end {Function Upper};
Function File_Exists (Filename : String) : Boolean;
Var
Attr : Word;
F : File;
begin
Assign(F, Filename);
GetFAttr(F, Attr);
File_Exists := (DOSError = 0)
end { Function FileExists };
Procedure Display_Error (Message : String; Filename : String);
begin
Writeln;
Writeln('TEMPLATE - Text File Parser');
Writeln(' Steven Kerr, 1994');
Writeln;
Writeln('Syntax : TEMPLATE Input Output');
Writeln;
Writeln(' Where Input = Input File');
Writeln(' Output = Output File');
Writeln;
Writeln('Error : ', Message, Filename)
end { Procedure Display_Help };
Function Check_Variable (Variable : String; Position : Byte) : Byte;
Var
Valid : Boolean;
begin
Valid := False;
{ Add in addition variables as below. If Valid = False, the variable }
{ is ignored and written "as is". }
if Upper(Variable) = LeftControl + 'DISKFREEC' + RightControl then begin
Valid := True;
Write(OutputFile, DiskFree(3))
end { DiskFreeC };
{}
Checked := True;
if Valid then
Check_Variable := Position + Length(Variable) - 1
else
Check_Variable := Position - 1
end { Function Check_Variable };
Function Look_Ahead (Line : String; Position : Byte) : String;
Var
Variable : String;
begin
Variable := Line[Position];
While (Length(Line) <> Position) and
(Line[Position] <> RightControl) do begin
Inc(Position);
Variable := Variable + Line[Position]
end { While };
Look_Ahead := Variable
end { Function Look_Ahead };
Procedure Parse_File;
Var
Line : String;
Position : Byte;
begin
Position := 0;
Checked := False;
While (not EOF(InputFile)) do begin
Readln(InputFile, Line);
While Position < Length(Line) do begin
Inc(Position);
if (Line[Position] = LeftControl) and (not Checked) then begin
Position := Check_Variable(Look_Ahead(Line, Position), Position)
end else begin
Write(OutputFile, Line[Position]);
Checked := False
end { if }
end { While };
Position := 0;
Checked := False;
Writeln(OutputFile)
end { While }
end { Procedure Parse_File };
Function Files_Opened (InputF : String; OutputF : String) : Boolean;
Var
Error : Boolean;
begin
Error := False;
Assign(InputFile, ParamStr(1));
Assign(OutputFile, ParamStr(2));
{$I-} ReWrite(OutputFile); {$I+}
if IOResult <> 0 then begin
Display_Error('Unable to write to ', Upper(ParamStr(2)));
Error := True
end { if IOResult };
if (not Error) then begin
{$I-} Reset(InputFile); {$I+}
if IOResult <> 0 then begin
Display_Error('Unable to read from ', Upper(ParamStr(1)));
Error := True
end { if IOResult }
end { if };
Files_Opened := (not Error)
end { Function Files_Opened };
begin { Program Template }
if ParamCount = 2 then begin
if File_Exists(ParamStr(1)) then begin
if (not File_Exists(ParamStr(2))) then begin
if Files_Opened(ParamStr(1), ParamStr(2)) then begin
Parse_File;
Close(InputFile);
Close(OutputFile)
end
end else
Display_Error('Output file already exists', '')
end else
Display_Error('Input file not found', '')
end else
Display_Error('Invalid number of parameters', '')
end { Program Template }.
[Back to TEXTFILE SWAG index] [Back to Main SWAG index] [Original]