[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]