Se innholdet i Arj, LZH og ZIP files

En enhet som viser innholdet i komprimerte filer
bidragsyter: STEVE Wierenga product: {Forfatter: Steve Wierenga ARJ Viewer} {Hei alle: Jeg slippe disse enhetene til den offentlige sfæren. De er enheter for å vise Arj, LZH, og zip-filer. De er på ingen måte profesjonell, og sannsynligvis har noen bugs. Hvis du bruker disse i Program og lyst til å gi meg kreditt, vil jeg ikke Object ... Her går:}
Unit ArjV, product: (**) Interface (**)
Bruker Dos, crt,
Type AFHeader = Record {ArjFileHeader} HeadID, HdrSize: Word; HeadSize, Vernum, MinVerNum, HOSTOS, ArjFlag, Method, FTYPE, Reservert: Byte; FILETIME, PackSize, OrigSize, FileCRC: LongInt; FilePosF, FileAcc, HostData: Word; enden,
Var ff: Integer; b: Byte; f: Fil; sl: LongInt; NR: Word; FHdr: ^ AFHeader; s, sss: String; Metode: String [8]; l: String [80]; Z, totalu, totalc: LongInt; x, d: LongInt; DT1, DT2: Datetime; i, e: Integer; registrert: Boolean;
Prosedyre ArjView (ArjFile: String); Funksjon GAN (ArjFile: String): String, product: (**) Gjennomføring (**)
Prosedyre Avslutt; begynne Write ( 'ARCHPEEK kunne ikke finne spesifisert fil Avbryter ....'); Halt; enden,
Prosedyre ArjView (ArjFile: String); begynne New (FHdr); Tildele (f, arjFile); {$ I-} Nullstill (F, 1); {Åpne fil} {$ I +} Hvis IOResult < > 0 deretter Avslutt; {Finnes angitte filen?} Registrert: = False; {Uregistrert} hvis ikke registrert da begynne Writeln ( 'ArchPeek 0.01Alpha [UREGISTRERT] Copyright 1993 Steve Wierenga'); Delay (200); ende; SL: = 0; z: = 0; TotalU: = 0; TotalC: = 0; {Init variabler} sss: = GAN (ArjFile); {Få Arj Filename} Writeln ( 'Arj Filename:', SSS); Skriv ( 'Navn Lengde Størrelse Guardado Method Dato Tid'); WriteLn ( '____________________________________________________________________________'); ff: = 0; Gjenta ff: = ff + 1; Seek (F, SL); BlockRead (F, FHdr ^, sizeof (AFHeader), NR); {Les overskriften} Hvis (NR = sizeof (AFHeader)) Deretter begynner s: = ''; Gjenta BlockRead (F, B, 1); {Få Char For Compressed Name} Hvis B < > 0 Then s: = s + Chr (b); {Sett Char i String} Inntil B = 0; {Inntil ingen flere Tegn} sak Lengde (S) Of {Rett ut String} 0: s: = s + ''; 1: S: = s + ''; 2: s: = s + ''; 3: S: = S + ''; 4: S: = S + ''; 5: S: = S + ''; 6: S: = S + ''; 7: s: = S + ''; 8: S: = S + ''; 9: S: = S + ''; 10: S: = S + ''; 11: S: = S + ''; 12: S: = S; ende; z: = z + 1; UnPackTime (FHdr ^ .FileTime, DT2); {Få tidspunktet for komprimert fil} sak FHdr ^ .Method Of {Få komprimeringsmetoden} 0: Metode: = 'Lagret'; 1: Metode: = 'Mest'; 2: Metode: = 'andre mest "; 3: Metode: = 'andre Fast'; 4: Metode: = 'raskeste'; ende; Skriv ( '', S, FHdr ^ .OrigSize: 9, FHdr ^ .PackSize: 10); {Legg Filesizes} Hvis ff > 1 da {Ikke første Arj fil i Arj File} Skriv ((100-FHdr ^ .PackSize /FHdr ^ .OrigSize * 100): 9: 0,%, Metode: 15) {Skriv forholdstall, metode} Else Write (Metode: 25); Sak dt2.month av {Show ankomst komprimert fil} 1..9: Skriv ( '0': 4, dt2.month); 10..12: Skriv (dt2.month: 4); ende; Skriv ( '/'); Sak dt2.day av 1..9: Write ( '0', dt2.day); 10..31: Write (dt2.day); ende; Skriv ( '/'); Sak dt2.year 1980: Skriv ( '80'); 1981: Skriv ( '81'); 1982: Skriv ( '82'); 1983: Skriv ( '83'); 1984: Skriv ( '84'); 1985: Skriv ( '85'); 1986: Skriv ( '86'); 1987: Skriv ( '87'); 1988: Skriv ( '88'); 1989: Skriv ( '89'); 1990: Skriv ( '90'); 1991: Skriv ( '91'); 1992: Skriv ( '92'); 1993: Skriv ( '93'); 1994: Skriv ( '94'); 1995: Skriv ( '95'); 1996: Skriv ( '96'); ende; Sak dt2.hour av {Show tiden av komprimert fil} 0..9: Write ( '0': 2, dt2.hour, ':'); 10..23: Write (dt2.hour: 3, ':'); ende; Sak dt2.min av 0..9: Write ( '0', dt2.min, ':'); 10..59: Write (dt2.min, ':'); ende; Sak dt2.sec av 0..9: Writeln ( '0', dt2.sec); 10..59: Writeln (dt2.sec); ende; TotalU: = TotalU + FHdr ^ .OrigSize; {Øk total ukomprimert størrelse} TotalC: = TotalC + FHdr ^ .PackSize; {Øk total komprimert format} Gjenta BlockRead (F, B, 1); Inntil b = 0; BlockRead (F, FHdr ^ .FileCRC, 4); {Gå forbi Fil CRC} BlockRead (f, NR, 2); SL: = FilePos (F) + FHdr ^ .PackSize; {Hvor er vi i fil? } Enden,
Inntil (FHdr ^ .HdrSize = 0); {Ingen flere filer? } GetFTime (F, x); UnPackTime (x, DT1); WriteLn ( '=============================================== ============================= '); Skriv ((z-1): 4, 'filer', TotalU: 12, TotalC: 10, (100-TotalC /TotalU * 100): 9: 0, '%'); Sak dt1.month av {Få dato og klokkeslett for Arj File} 1..9: Skriv ( "0": 19, dt1.month); 10..12: Write (dt1.month: 20); ende; Skriv ( '/'); Sak dt1.day av 1..9: Write ( '0', dt1.day); 10..31: Write (dt1.day); ende; Skriv ( '/'); Sak dt1.year 1980: Skriv ( '80'); 1981: Skriv ( '81'); 1982: Skriv ( '82'); 1983: Skriv ( '83'); 1984: Skriv ( '84'); 1985: Skriv ( '85'); 1986: Skriv ( '86'); 1987: Skriv ( '87'); 1988: Skriv ( '88'); 1989: Skriv ( '89'); 1990: Skriv ( '90'); 1991: Skriv ( '91'); 1992: Skriv ( '92'); 1993: Skriv ( '93'); 1994: Skriv ( '94'); 1995: Skriv ( '95'); 1996: Skriv ( '96'); ende; Sak dt1.hour av 0..9: Write ( '0': 2, dt1.hour, ':'); 10..23: Write (dt1.hour: 3, ':'); ende; Sak dt1.min av 0..9: Write ( '0', dt1.min, ':'); 10..59: Write (dt1.min, ':'); ende; Sak dt1.sec av 0..9: Writeln ( '0', dt1.sec); 10..59: Writeln (dt1.sec); ende; Lukk (f); Kast (FHdr); {Done} end;
Funksjon GAN (ARJFile: String): String; Var Dir: DirStr; Navn: NameStr; EXTS: ExtStr; begynne FSplit (ARJFile, Dir, navn, EXTS); GAN: = Navn + EXTS; enden,
slutten
.



Previous:
Next Page: