{ > 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] = $4B)) then Gat := Zip else if ((c[1] = $60) and (c[2] = $EA)) then Gat := Arj else if ((c[4] = $6c) and (c[5] = $68)) then Gat := Lzh else if ((c[1] = $5a) and (c[2] = $4f) and (c[3] = $4f)) then Gat := Zoo else if ((c[1] = $1a) and (c[2] = $08)) then Gat := Arc else if ((c[1] = $1a) and (c[2] = $0b)) 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.