Contributor: SWAG SUPPORT TEAM 
{
> I'm looking For descriptions of the formats of headers in
> all popular archive Files, ie .ZIP, .ARC, .LZH, .ARJ, etc.
> I just want to be able to read the headers of all of these
> archives, not necessarily manipulate them. Anyone know
> where such can be had?
Here's a Program that will determine most of the major archive Types.
I've made a couple of additions, but the original source was from
a message on this echo...the original author's name has since been
lost. To use the Procedure, just call it as follows:
 If GetArcType(FileName.Ext)=Zip then....
}
Uses
 Dos;
Type
 ArcType = (FileError, Unknown, Zip, Zoo, Arc, Lzh, Pak, Arj);
Function GetArcType(FName : String) : ArcType;
Var
 ArcFile : File of Byte;
 i : Integer;
 Gat : ArcType;
 c : Array[1..5] of Byte;
begin
 Assign(ArcFile, FName);
 {$I-}
 Reset(ArcFile);
 {$I+}
 if IOResult  0 then
 Gat := FileError
 else
 if FileSize(ArcFile) < 5 then
 Gat := FileError
 else
 begin
 For i := 1 to 5 do
 Read(ArcFile, c[i]);
 Close(ArcFile);
 if ((c[1] = 50ドル) and (c[2] = 4ドルB)) then
 Gat := Zip
 else
 if ((c[1] = 60ドル) and (c[2] = $EA)) then
 Gat := Arj
 else
 if ((c[4] = 6ドルc) and (c[5] = 68ドル)) then
 Gat := Lzh
 else
 if ((c[1] = 5ドルa) and (c[2] = 4ドルf) and (c[3] = 4ドルf)) then
 Gat := Zoo
 else
 if ((c[1] = 1ドルa) and (c[2] = 08ドル)) then
 Gat := Arc
 else
 if ((c[1] = 1ドルa) and (c[2] = 0ドルb)) then
 Gat := Pak
 else
 Gat := Unknown;
 end;
 GetArcType := Gat;
end;
Var
 FileName : String;
 Return : ArcType;
 {ArcType = (FileError,Unknown,Zip,Zoo,Arc,Lzh,Pak,Arj)}
begin
 if ParamCount = 1 then
 begin
 FileName := ParamStr(1);
 Return := GetArcType(FileName);
 Case Return of
 ARJ : Writeln(FileName, ' = ARJ ');
 PAK : Writeln(FileName, ' = PAK ');
 LZH : Writeln(FileName, ' = LZH ');
 ARC : Writeln(FileName, ' = ARC ');
 ZOO : Writeln(FileName, ' = ZOO ');
 ZIP : Writeln(FileName, ' = ZIP ');
 UNKNOWN : Writeln(FileName, ' = Unknown!')
 else
 Writeln('File Not Found');
 end;
 end {IF}
 else
 Writeln('No parameter');
end.
 

AltStyle によって変換されたページ (->オリジナル) /