[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]
Program ReadArj;
Uses
Crt,
Search;
Const
ArjID = #96#234;
Type
Array10 = Array[1..10] of Byte;
Array12 = Array[1..12] of Char;
AFileRec = Record
FileDate : LongInt;
CompressedSize : LongInt;
originalSize : LongInt;
DudSpace : Array10;
FileName : Array12
end;
Array60K = Array[1..61440] of Byte;
Var
Buffer : Array60K;
ArjFileRec : AFileRec;
ArjFileSize,
ArjRecStart,
ArjRecStop,
Index,
Index1 : LongInt;
ArjFile : File;
begin
ClrScr;
fillChar(Buffer, sizeof(Buffer), 0);
fillChar(ArjFileRec, sizeof(ArjFileRec), 0);
ArjFileSize := 0;
ArjRecStart := 1;
ArjRecStop := 0;
assign(ArjFile, 'TEST.ARJ');
{$I-}
reset(ArjFile, 1);
{$I+}
if (ioresult <> 0) then
begin
Writeln(' ERRor OPENinG TEST.ARJ');
halt(255)
end;
ArjFileSize := Filesize(ArjFile);
Index := ArjFileSize - 50;
blockread(ArjFile, Buffer, Index);
close(ArjFile);
Index1 := 50;
ArjFileRec.Filename := ' ';
While ((Index1 + 33) < ArjFileSize) do
begin
ArjRecStart := StrPos(Buffer[Index1], Index, ArjID) + 11;
ArjRecStop := StrPos(Buffer[Index1 + ArjRecStart + 22], 13, #0);
move(Buffer[ArjRecStart + Index1], ArjFileRec, (ArjRecStop + 21));
With ArjFileRec do
begin
Writeln(' ',FileName, ' Compressed size = ', CompressedSize:6,
' original size = ', originalSize:6);
FileName := ' ';
inc(Index1, CompressedSize + ArjRecStop + ArjRecStart);
dec(Index, CompressedSize + ArjRecStop + ArjRecStart)
end
end
end.
[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]