home *** CD-ROM | disk | FTP | other *** search
- program differ;
- {$APPTYPE CONSOLE}
- uses
- SysUtils,
- CGIAPI,
- Classes,
- FileCtrl,
- DiffEng in '..\..\Tools\DiffEng.pas';
-
- var
- FileName: string;
- TempFile: string;
- FileType: string;
- FileName1: string;
- TempFile1: string;
- FileType1: string;
- ReturnUrl: string;
- A: array[0..100] of char;
- DifEng: TDifference;
- SSource, SComp,
- SDest: TStringList;
- i: integer;
-
- procedure Error(ErrorStr: string);
- begin
- writeln('content-type: text/html'#13#10#13#10);
- writeln(ErrorStr);
- end;
-
- begin
- try
- with CGI do
- begin
- // get required variables for first file
- FileName := ExtractFileName(FormItems.Values['FILENAME']);
- TempFile := FormItems.Values['TEMPFILE'];
- FileType := FormItems.Values['CONTENT-TYPE'];
- // get required variables for second file
- FileName1 := ExtractFileName(FormItems.Values['FILENAME1']);
- TempFile1 := FormItems.Values['TEMPFILE1'];
- FileType1 := FormItems.Values['CONTENT-TYPE1'];
- ReturnUrl := FormItems.Values['RETURN_URL'];
- end;
-
- // validate user entries
- if (FileName = '') or (TempFile = '') then
- begin
- Error('');
- raise EAbort.Create('File 1 not submitted correctly');
- end;
-
- if (FileName1 = '') or (TempFile1 = '') then
- begin
- Error('');
- raise EAbort.Create('File 2 not submitted correctly');
- end;
-
- if (Pos('text', FileType) = 0) or (Pos('text', FileType1) = 0) then
- begin
- Error('');
- raise EAbort.Create('Files must be of type text');
- end;
-
- // run difference engine on the 2 temp files
- try
- SSource := TStringList.Create;
- SComp := TStringList.Create;
- SDest := TStringList.Create;
- try
- SSource.LoadFromFile(TempFile);
- SComp.LoadFromFile(TempFile1);
- DifEng := TDifference.Create(SSource, SComp, SDest);
- try
- DifEng.Convert;
-
- // create and display response page
- writeln('content-type: text/html'#13#10#13#10);
- writeln('<HTML>');
- writeln('<HEAD><TITLE>>Text File Difference Results</TITLE>');
- writeln('<META NAME="GENERATOR" CONTENT="Generated by HomeGrown Text File Difference Engine">');
- writeln('</HEAD>');
- writeln('<BODY BGCOLOR="#FFFFFF">');
- writeln('<BODY>');
- writeln('<H1>Text File Difference Results</H1>');
- writeln('<HR SIZE=2>');
- writeln('Difference results for <B> '+ExtractFileName(Filename)+
- '</B> compared to <B>'+ExtractFileName(FileName1)+'</B>.');
- writeln('<P><B>Legend:</B> Same in both revisions --- <FONT COLOR=GREEN><B>'+
- '<U>Deleted from base revision</U></B></FONT>'+
- ' --- <FONT COLOR=BROWN><U><I>Added to base revision</I></U></FONT>');
- writeln('<HR SIZE=2>');
- for i := 0 to SDest.Count-1 do writeln(SDest[i]);
- writeln('<HR SIZE=2>');
- writeln('<A HREF="'+ReturnUrl+'">Return to refering page</A>');
- writeln('<HR SIZE=2>');
- writeln('<B>Generated by:</B> HomeGrown''s Text File Difference Engine v1.0');
- writeln('</BODY></HTML>');
-
- finally
- DifEng.Free;
- end;
- finally
- SSource.Free;
- SComp.Free;
- SDest.Free;
- end;
- except
- on E: Exception do
- begin
- Error('');
- writeln(E.Message);
- end;
- end;
-
- finally
- // always delete TempFiles
- DeleteFile(StrPCopy(A, TempFile));
- DeleteFile(StrPCopy(A, TempFile1));
- end;
- end.
-