[Back to FINDREPL SWAG index] [Back to Main SWAG index] [Original]
{
TRAVIS GRIGGS
> I have one question For you in return: could you send the current
> source code of your Program, or could you otherwise describe what
> your input Text File Characterizations are (how big can the File be,
> how long can the lines be, do you scan each line, or only taglines,
Here's the code. Don't worry about the structure of it. I know it is bad but
this was a quick and dirty little util I wrote up that I needed. Have fun With
it and try to speed it up. And whoever else wants to help have fun!
I hope this compiles I took out some stuff that would display a little picture
of a sWord and show the version and product name. I also tried DJ's idea of
the buffer of 65535 but it said the structure was too large. So I used 64512.
}
Uses Crt;
Type
BBT = Array[0..64512] of Char;
Var
BUFF : ^BBT;
TheFile,
logFile : Text;
Looking,
TempStr : String[80];
Numoflines,
F, J, Point : LongInt;
Divi, Multi : Real;
Procedure Stop;
begin
Close(TheFile);
Close(LogFile);
Halt(1);
end;
Procedure CommandError(Err: Byte);
begin
TextColor(10);
Case Err Of
2 : WriteLn('You must specify a File on the command line.');
3 : WriteLn('Can''t find "', ParamStr(1),'"');
4 : WriteLn('Too many open Files to open ', ParamStr(1));
5 : WriteLn('Error in reading ', ParamStr(1));
end; { end total Case }
WriteLn;
Halt(1);
end; { end Procedure }
begin
if Paramcount < 1 Then
CommandError(2);
ClrScr;
Assign(TheFile,ParamStr(1));
New(BUFF);
SetTextBuf(TheFile,BUFF^);
Assign(LogFile,'FINDDUPE.LOG');
ReWrite(LogFile);
Reset(TheFile);
Case IoResult Of
2 : CommandError(3);
4 : CommandError(4);
3,5..162 : CommandError(5);
end;
While not EOF(TheFile) Do
begin
Readln(TheFile);
Inc(Numoflines);
end;
Writeln('There are ',Numoflines,' lines in this File.');
Writeln;
Writeln('Duplicate lines are being written to FINDDUPE.LOG');
Writeln;
Writeln('Press any key to stop the search For duplicate lines');
Point := 0;
Reset(TheFile);
While Point <> Numoflines Do
begin
GotoXY(1, 7);
if Point <> 0 Then
begin
Divi := Point / Numoflines;
Multi := Divi * 100;
WriteLn(Multi : 3 : 2, '% Completed');
end;
Reset(TheFile);
if Point <> 0 Then
For J := 1 to Point Do
Readln(TheFile);
Readln(TheFile,Looking);
Reset(TheFile);
Inc(Point);
For F := 1 to Numoflines Do
begin
if KeyPressed then
Stop;
Readln(TheFile, TempStr);
if (Point <> F) and (TempStr = Looking) Then
Writeln(LogFile,Looking);
end;
end;
GotoXY(1, 7);
Writeln('100.00% Completed');
Close(TheFile);
Close(LogFile);
end.
[Back to FINDREPL SWAG index] [Back to Main SWAG index] [Original]