Autor Téma: Komprimace pomocí TAbMakeCab končí chybou  (Přečteno 2304 krát)

Offline Slappy

  • Plnoletý
  • ***
  • Příspěvků: 185
  • Karma: 11
  • Slappy
    • Verze Delphi: 10.2 Tokyo + Vsetky :)
    • unSigned
Re:Komprimace pomocí TAbMakeCab končí chybou
« Odpověď #15 kdy: 14-10-2019, 17:40:17 »
Ale to přece vůbec není o tom, jestli knihovna je nebo není 64bitová! Jde o to, že formát souboru má pouze 32bitová čísla. S tím by přepsání knihovny nijak nehnulo, i kdybys to napsal "128bitově", tak ten formát pořád bude limitovat velikost. Pokud se s tím má něco stát, je nutné změnit formát, tzn. příjít s variantou ZIPu, která bude mít 64bitové číselné údaje. Ale to je samozřejmě absolutně nereálné - sice to teoreticky jde udělat (a nezáleží přitom na bitovosti knihovny), ale nikdo z nás nedokáže takhle upravený formát prosadit. Prostě ZIP je široce rozšířený standard a s tím se nedá hnout (stačí se podívat např. na mnohaleté snahy o nahrazení JPEG lepšími formáty).

Myslim, ze obaja rozpravame o tom istom, ale inymi slovami.

Zip64 samozrejme existuje, to je ta rozsirena verzia, spravilo to myslim Pkware ale bohuzial to nie je implementovane vo Windows a dalsich beznych programoch.

Implementovat to sam je dost zlozite cize je lepsie pouzit hotovy 7z.
Moje projekty: http://www.unsigned.sk Tvorba cool dizajnovych instalatorov v NSIS a Inno Setup. Rozsirenie pre Visual Studio a RAD Studio pre tvorbu NSIS a Inno Setup instalatorov.

Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 211
  • Karma: 16
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:Komprimace pomocí TAbMakeCab končí chybou
« Odpověď #16 kdy: 14-10-2019, 19:56:40 »
Já bych naopak řekl, že je to implementováno v docela dost moderních programech, i ty samotné Windows to už umí. (Mám pocit, že od Visty, posléze W7 přidalo podporu unicode v zipu)

Jinak existuje i toto (zahlednuto, nezkouseno):
https://github.com/ccy/delphi-zip

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2375
  • Karma: 102
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Komprimace pomocí TAbMakeCab končí chybou
« Odpověď #17 kdy: 17-10-2019, 09:05:34 »
Ale to přece vůbec není o tom, jestli knihovna je nebo není 64bitová! Jde o to, že formát souboru má pouze 32bitová čísla. S tím by přepsání knihovny nijak nehnulo, i kdybys to napsal "128bitově", tak ten formát pořád bude limitovat velikost. Pokud se s tím má něco stát, je nutné změnit formát, tzn. příjít s variantou ZIPu, která bude mít 64bitové číselné údaje. Ale to je samozřejmě absolutně nereálné - sice to teoreticky jde udělat (a nezáleží přitom na bitovosti knihovny), ale nikdo z nás nedokáže takhle upravený formát prosadit. Prostě ZIP je široce rozšířený standard a s tím se nedá hnout (stačí se podívat např. na mnohaleté snahy o nahrazení JPEG lepšími formáty).


Ale formát Zip64 existuje https://en.wikipedia.org/wiki/Zip_%28file_format%29#ZIP64, přesto bych použil ten 7z, pro Delphi udělal wrapper Henri Gourvest, ale jeho stránka neexistuje, přesto se to povaluje všude - https://github.com/zedalaye/d7zip/blob/master/sevenzip.pas, ukázku jsem měl na delphi.cz (resp. pořád mám)
Embarcadero MVP - Czech republic

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1440
  • Karma: 34
    • Pepak.net
Re:Komprimace pomocí TAbMakeCab končí chybou
« Odpověď #18 kdy: 17-10-2019, 10:58:40 »
Ale formát Zip64 existuje
To samozřejmě existuje, ale nikdo ho nepoužívá. Některé nástroje mají zabudovanou podporu, což je fajn, ale chceš skutečně řešit, že si uživatel bude stěžovat, že mu ten ZIP nejde přečíst? Podle mě to je slepá větev, stejně jako všechny ty náhrady JPEGu nebo MP3...

Citace
přesto bych použil ten 7z, pro Delphi udělal wrapper Henri Gourvest, ale jeho stránka neexistuje, přesto se to povaluje všude - https://github.com/zedalaye/d7zip/blob/master/sevenzip.pas, ukázku jsem měl na delphi.cz (resp. pořád mám)
Souhlasím, pracuje se s tím pěkně a je to spolehlivé a kompatibilní.

Offline KarelHorky

  • Plnoletý
  • ***
  • Příspěvků: 204
  • Karma: 8
    • Verze Delphi: 7, XE6, Delphi 10.2 Tokyo
Re:Komprimace pomocí TAbMakeCab končí chybou
« Odpověď #19 kdy: 17-10-2019, 11:11:53 »
Použil jsem 7z.dll, wrapper je také v JclCompression.pas. Je na to demo ve složce s instalací JCL: \jcl\examples\windows\compression\archive\ArchiveDemo.dproj. Tam se dá zjistit, jak přes ty interface nastavit úroveň komprese, která výrazně ovlivňuje rychlost. Výchozí mi přišla pomalá a výsledná velikost není o moc menší než mnou zvolená úroveň 4. Úrovně 5-9 trvají několikanásobně déle.
Zkoušel jsem měnit také počet vláken, ale to nemělo na rychlost ani cokoliv jiného vliv. Máte jinou zkušenost?
K.