Zipul tău pe delphi

ZIP-ul tău pe Delphi. Rapid, de înaltă calitate, ieftin!

După lansarea Delphi 2, numărul de componente care conțin funcții ale diferitelor arhive a început să crească exponențial. Nu știu de ce ar trebui să fie, dar varietatea era înfricoșătoare: dimensiunea lor a variat de la 30 KB până la 2 MB, prețul - de la 0 la 299 de dolari, și funcții. În general, foarte mult. Înainte de Delphi 4, aceste componente progresat treptat și actualizate cu noi caracteristici de făcut, dar apoi a venit criză. Până la versiunea 6 a trăit, conform calculelor mele, aproximativ 4-5 reprezentanți demni. Acestea sunt cu adevărat monștrii. Adevărat, XEEDZIP, care cantareste acum 16 MB, nu am îndrăznit să descărcați, dar în general este de produse funcționale și scumpe, este demn de o astfel de codor săraci ca mine :).







Astăzi vom folosi componenta (sau, mai degrabă, o întreagă colecție de componente) numită ZipTV. Am ales-o pentru că are tot ce aveți nevoie pentru a lucra cu arhive. El cântărește mai puțin și nu conține nimic inutil. Dar există ceva pentru prezent] [. În final, se combină perfect simplitatea și funcționalitatea - pentru a învăța cum să-l utilizați este mai ușor decât se deplasează un bug în LogoWr, și scrie cu ajutorul WinZip - caz 10 minute. Este nevoie doar de câteva creiere, de mână de mână și fără fraude.

După instalare, puteți admira paleta de componente. Au fost adăugate trei marcaje (ZTV Tools, ZTV Compress, ZTV Decompress), conținând un total de 35 (treizeci și cinci) componente! Aceasta, înțeleg, este un set regal pentru lucrul cu arhive!

1) TBlackHole. Proiectat pentru a crea arhive de tip blackhole (* .bh).

2) TGZip. Vă permite să creați arhive gzip. Un lucru foarte util pentru Unioxids :).

3) TJar, TLha, TCab, TTar. În consecință, creați arhive Jar, Lha și Tar.

5) TZip. De fapt, cea mai importantă componentă a revizuirii noastre. Creează arhive ZIP compatibile PkZip.

După ce ți-am spus, care sunt componentele acestui tab de fapt, există o întrebare rezonabilă - cum să le folosească? De asemenea, este bine să vorbim despre anumite metode, proprietăți și evenimente.

Arhiva este creată foarte simplu. Este necesar să se atribuie proprietăți ArchiveFile (tip: string, numele viitorului sau fișierul existent) și FileSpes (TStrings tip, conține o listă de fișiere de rezervă, puteți utiliza, de asemenea, metacaractere cum ar fi * *.) Articularea valorile și apoi utilizați metoda Comprimare rula zapakovki proces. Acesta va returna o variabilă de tip integer. Acesta este numărul de fișiere comprimate. De asemenea, puteți adăuga proprietatea Parolă. Aceasta este parola pentru arhivă. Aveți grijă cu literele majuscule și majuscule - acestea diferă.

1) TUnACE, TUnARJ, TUnBH, TUnCab. Despachetați, respectiv, arhivele ACE, ARJ, BH (BlackHole) și MS Cab.

2) TUnGZIP. Dezarhivează .gz. z. tar. jz arhive.

3) TUnJar, TUnLha, TunRar, TunTar, TUnZip. Dezarhivați Jar (format soft Java), Lha, Rar, Tar, ZIP.

Procesul de despachetare diferă foarte puțin de pachet. Aici trebuie să atribuiți valorile corespunzătoare pentru ArhiveFile, FileSpec și ExtractDir (specifică directorul la care doriți să despachetați) și să începeți extragerea utilizând metoda Extract. De data aceasta vă va reveni numărul de fișiere necomprimate. ATENȚIE! TUnACE și TUnRAR necesită biblioteci pentru munca lor: unace.dll și unrar.dll, respectiv.

1) TArc2Arc. Convertește arhivele de la format la format. Pentru asta avem nevoie de date.

ArchiveFile - numele vechii arhive este scris aici.

NewArchive - numele noii arhive.

OutArcType - tipul arhivei noi; de exemplu: tyZip, tyBH, tyLzh, tyCab.

OutArcMethod este o modalitate de conversie.

IntegrityCheck - verificarea noii arhive (true / false).

DateAttribute - ce dată să alocăm fișierelor din noua arhivă.

daFileDate - aceleași date ca și fișierele de arhivă originale.

daSysDate - data sistemului.

daMaxFileDate este data celui mai nou fișier din arhivă.

Această proprietate este potrivită și pentru toate celelalte componente.

Activare - pornește procesul.

2) TMakeSFX. Creează arhiva Sfx de obicei.

ArchiveFile este numele unei arhive obișnuite.

TargetFile este numele viitorului Sfx.

SfxStubDir - definește un director cu fișiere * .sfx. Acestea sunt necesare pentru componenta (de exemplu, pentru a face Zip'a de SFX, au nevoie de ZTV_Zip.SFX), iar calea către ei implicit - c: \ windows \ system \.

Metoda CreateSfx inițiază întregul proces.

3) TZipTV. Ca orice televizor, aceasta arată detalii intime din viața arhivelor. Adică, cu ajutorul acestuia puteți afla aproape orice informație despre arhivă și fișierele conținute în ea.

ArchiveFile - definește numele arhivei telestar :).

FileSpec.Add este o mască pentru fișierele ambalate. Tipul de date este TStrings.

FilesInArchive - listă de fișiere arhivate corespunzătoare mască din proprietatea anterioară. Tipul este, de asemenea, TStrings.







Count - numărul de fișiere împachetate.

TotalUnpackedSize este dimensiunea originală a fișierelor.

TotalPackedSize - dimensiunea fișierelor ambalate.

GetFileInfo - obține informații despre fișierul arhivat. De exemplu, aceasta:

ArchiveFile este numele lui.

Data este data. Este ușor să fii adus în forma divină cu ajutorul funcției FormatDateTime. Acest lucru se face, de exemplu, astfel: FormatDateTime ('mm-dd-yy', ZipTV1.Date). Va va returna stringul care contine data. La fel cu timpul.

PackedSize - dimensiunea sa după pachet.

UnpackedSize este dimensiunea originală.

Ratio - raport de compresie.

Iată o componentă atât de veselă. Dacă te uiți în fișierul de ajutor numit tziptv.hlp, vei învăța mult mai mult.

4) TZipKey. Cel mai mult] [- component din revizuirea mea :). Faptul că el, ca să spunem așa, ajută să-și amintească parolele uitate. Înțelegi că există o arhivă protejată prin parolă și ai uitat parola, sau nu știai. Dar vrei să înveți ceva! Aici și înainte. Există o demonstrație foarte bună pentru această componentă (\ ZIPZV5 \ DEMO \ ZIPKEY \) și trebuie să fie stăpânită. Strict vorbind, pentru multe componente există un demo, dar nu toate sunt atât de bune. Într-un caz hacker dificil, suntem asistați de:

ArchiveFile - numele victimei.

FileSpec - aceeași mască pentru fișiere.

CharSets este o modalitate de a găsi parole. De exemplu, dacă atribuiți Zipkey1.CharSets: = TCharSets (0), atunci căutarea va fi limitată la parole constând doar din cifre. Dacă, în loc de zero, există 8, atunci căutarea va urma toate caracterele ASCII. Toate valorile pe care le puteți învăța de la demo-uri (în care totul este foarte clar făcut), pentru că în ajutorul acestei componente, din anumite motive, există. Apropo, puteți căuta un dicționar. Acestea pot fi descărcate pe site-ul dezvoltatorului în secțiunea "despre produs". Există chiar și o listă de cuvinte din China. Cu siguranță vă va fi de folos.

StartPassword - începe căutarea.

Activare - pornește procesul.

Pauză - pauze :).

Odată ce parola este găsită, evenimentul OnFound este apelat și proprietatea Password obține o valoare specifică. De asemenea, trebuie să profite.

Pe aceasta cu o recenzie am terminat, așa că haideți să mergem la codificarea mea preferată.

Creare formă (formă mai mult, de exemplu, va fi destul de mare) și ei bagajele 5 tEditează, 12 TLabel, 7 TButton, 2 TListBox, 2 TProgressBar, 1 TGroupBox. Din moment ce este atât de ușor de înțeles această diversitate, nu pot nici măcar să mă uit la această imagine:

Deci, proiectul nou-născut ar trebui să arate aproximativ. Este momentul să distribuiți proprietățile. Iată următoarele:

label1 - caption "Deschide / crea arhiva:"

label2 - caption "Parola pentru arhivă"

label3 - caption "Cale de despachetare"

label4 - caption "Calea pentru arhiva nou-născută"

label5 - caption "Fișiere totale:"

label7 - caption "Dimensiunea originală:"

label9 - legendă "Dimensiunea după ambalaj:"

label11 - caption "Ratio:"

Etichetele cu aceleași numere 6, 8, 12 ar trebui să obțină în loc de caption'a doar zerouri, deoarece vor obține valori normale numai în timpul rănirii. Apropo, înainte de a fi prea târziu, vă avertizez. Nu puteți face formalizarea formularului, deoarece pe disc există 2 coduri sursă: o formă oficială, dar nu funcțională (în scopuri educaționale) și un proiect complet pregătit pentru cei nerăbdători. Bine, să continuăm designul, mai departe:

Butoanele numerotate 1 și 2 primesc legenda sub formă de elipsă. Dar celelalte:

Button3 - caption "Adăugați!"

Button4 - caption "Arhiva"

Button5 - caption "Unzip"

Button6 - caption "Creați SFX"

Button7 - caption "Convert"

GroupBox1 primește legenda "Conținutul arhivelor".

De asemenea, nu uitați să definiți componentele: Zip, UnZip, Arc2Arc, MakeSfx și OpenDialog din fila Dialoguri.

Iată ce am obținut ca rezultat:

În primul rând, o să ne dăm seama cu deschiderea arhivei și adaptarea secretelor sale intime :). Pentru a face acest lucru, aruncați o privire la primul buton (cu elipsă):

Ca întotdeauna, totul este simplu și plictisitor. Dacă utilizatorul a ales numele fișierului, îl transmitem lui ZipTv, asignăm masca la *. * Și scoatem fișierele din această listă în ListBox2. Asta este, toate fișierele din arhivă. Apoi afișăm informații suplimentare despre arhivă: numărul de fișiere, dimensiunea originală a datelor, dimensiunea ambalată și, în final, raportul de compresie. Faptul este că dezvoltatorii componentei au venit cu o întreagă funcție CalcRatio în acest scop. Dar înainte de ao folosi, nu voi fi niciodată umilit :). Luați mărimea originală pentru 100% și calculați cât a mai rămas, acest lucru este posibil și pentru un elev din orfelinatul pentru oligofrenici. Și va fi aceeași linie de cod, așa că pofta de simplificare nu este încălcată :).

În prima listă puteți crea o listă de fișiere care trebuie arhivate. Acest lucru este ajutat de Edit2, Button2 și Button3 (adică "Add!", Adaugă conținutul Edit2 în ListBox1). Button2 doar activează OpenDialog și introduce numele fișierului în Edit2. Iată cum se face:

Cu toate acestea, trebuie să completați manual masca (ca * .exe, e.doc) în Edit2.

Să ne uităm la butonul "Arhiva":

Variabila voi conține numărul de fișiere împachetate. Apoi vom defini numele arhivei, vom corela conținutul ListBox1 cu proprietatea FileSpec și vom introduce parola din Edit3. Rulați procesul și tipăriți rezultatul utilizând ShowMessage.

Aici este butonul pentru butonul "Dezarhivați":

Aici totul este foarte asemănător pachetului, cu excepția noii proprietăți ExtractDir, datele pentru care sunt preluate din Edit4.

Creați arhiva SFX de obicei nu este ușor, dar foarte simplu. Acest lucru se face în 3 rânduri de cod. Vreau să spun aceste linii:

Dacă faceți MakeSfx1.CreateSfx apoi ShowMessage ("Arhiva creată!");

Acesta este Onklik de la butonul "Creare SFX". Calea către fișierul final va fi determinată de conținutul Edit5. Nu uitați că fișierele SFX implicite sunt căutate în directorul de sistem.

Iată cum se face:

Dacă ați citit cu atenție teoria, ați înțeles deja: aici stabilesc în mod constant fișierele sursă și de destinație, aleg modul de conversie. Acesta este, de fapt, întregul exemplu. Este timpul să-l modernizăm puțin. Nu e de mirare că am pus-o pe formularul 2 TProgressBar :).

Creați un eveniment OnProgress pentru componenta TZip1 și introduceți următoarele:

Aceste linii simple vor oferi utilizatorului monitorizarea a două procese importante: progresul în arhivarea fișierului curent și a arhivei ca întreg.

Am lansat programul nostru și am deschis una dintre arhivele mele, primind scurte informații despre el. Apoi am dorit să adaug un fișier, ceea ce am făcut cu un rezultat bun - raportul de compresie a fost de aproximativ 34%.

În această situație este normal pentru un algoritm ZIP în oricare dintre implementările sale. Dar RAR s-au descurcat mai bine - 25% și nu au unghii. Până acum, sunt surprins de popularitatea WinZip. Drag'n'Drop atrage atât de mult utilizatorii?

Asta e tot pentru ziua de azi. Restul pe care îl las pe cititori: citirea fișierului de ajutor a componentelor (deși nu există tot și este în limba engleză) și stăpânirea demo-ului. După aceea, vă puteți considera un expert competent în domeniul arhivării datelor. Fără proști - pentru că clientul nu contează, CUM veți face prog. Este important, CUM SOON va fi scris si CUM FUNCTIONAL va fi. Așa cum obișnuia să spună Horrific. "Nu reinventeaza roata si pierde timpul, rescriind ceea ce sa facut inainte de tine sub forma de componente."







Articole similare

Trimiteți-le prietenilor: