Скачать SWArcher - Чтение оглавлений архивных файлов

Виктор Вагнер
12.12.1994
Скачать файл (11,84 Кб)

SWArcher это библиотека для Turbo Pascal 6.0 и выше, позволяющая читать оглавления архивов наиболее распространенных форматов.

В настоящее время поддерживаются форматы:

PKZIP - Ver 2.04g и ранее ARJ - Ver 2.41 и ранее BSA - Ver 1.95 ZOO RAR - Ver 1.50, но не 1.30 PKARC LHA/LHICE/LHARC - все известные мне версии

Все виды архивов распознаются не по расширению, а по формату. SFX архивы распознаются для всех кроме ZOO, который их и не создает.

При разработке использованы исходные тексты пакета OOAV, разработанного Edwin Groothuis, MavEtJu software.

Как это работает:

1. Вы должны открыть файл с помощью процедуры OpenArchive

function  OpenArchive( Name:string):PArchive;

Которая возвращает указатель на объект типа TArchive или nil, если файл не существует, не читается или не относится к одному из распознаваемых типов.

2. Вы должны вызывать метод FindNext полученного объекта до тех пор, пока он не вернет False.

Function TArchive.FindNext(var sr:TArcRec):boolean;

В качестве параметра сей функции передается запись типа

TArcRec=Record
                   Name:PathStr;
                   Attr:Word;
                   Time:LongInt;
                   Size:LongInt;
                   PackedSize:LongInt;
                  end;

Где Name - полный путь (если архив с подкаталогами), Attr - атрибуты файла. Time - время создания в том же формате, что и в GetFTime, Size- размер неупакованного файла и PackedSize - соответственно.

Файлы возвращаются в порядке их расположения в архиве.

Если вам хочется иметь нечто, что работает с неупакованной структурой каталогов так же, то есть объект TDosDir=object(TArchive).

Если у вас архив не в файле, а в EMS или RAM и доступен как обьект - наследник от TStream, то вы можете создать объект для его чтения явыным образом, передав указатель на поток его конструктору. В этом случае вам придется явно указать архив какого типа вы собираетесть читать, написав что-то вроде:

MyArchive:=New(PZIPArchive,Init(MyStream))

В качестве демонстрационного примера к пакету прилагается программка FileList.PAS создающая список файлов на дискетах - что-то вроде борлан- довских FILELIST.DOC