minizip

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

;UseFLACSoundDecoder()
;UseJPEG2000ImageDecoder()
UseJPEGImageDecoder()
UseOGGSoundDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
;UseTIFFImageDecoder()
MessageRequester hat geschrieben:---------------------------

---------------------------
42993608
---------------------------
OK
---------------------------
Das funktioniert aber auch nur, solange es kein CatchImage gibt.
Wie das alles zusammenhängt ist mir nicht klar, ich ändere nichts,
was damit auch nur im entferntesten zu tun haben könnte /:->
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Drauf geschissen jetzt ...

Entweder benutze ich nun einen entsprechenden Packer (MoleBox, etc.) oder belasse das Archiv passwortgeschützt im Hauptverzeichnis ohne es einzubinden. Ich muss nämlich nur noch an der Mucke feilen dann ist das Spiel fertig. :shock:
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Update

Problem mit Passwortfunktionen beseitigt
CHM-Hilfe hinzugefügt
64- und 32-Bit UserLibs mit Source hinzugefügt.

Jetzt könnt Ihr selber entscheiden, Include oder UserLib (beides geht nicht)
(dafür ist das Paket etwas größer)

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Update

resident für x64 fixed
Neue Funktion: ZIP_DirAdd((ZipHandle, Directory.s [, Compression [, Callback]])
redunanten Code entfernt
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
mardanny71
Beiträge: 266
Registriert: 05.03.2005 01:15
Wohnort: Thüringen

Beitrag von mardanny71 »

Habe ich bei mir was falsch Kopiert oder sind die Konstanten zur Kompression noch nicht angemeldet?
Das Beispiel 5 läuft erst, wenn man #Z_BEST_COMPRESSION durch seine Nummer ersetzt.
gruß
mardanny71
Gruß, mardanny71
Windows 7 - openSUSE 12.1 - KDE 4.7 - PB4.6 beta 4
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Du benutzt wahrscheinlich die UserLib, aber nicht die aktuellste!
Es sind folgende Strukturen und Konstanten zur Benutzung deklariert:

Code: Alles auswählen

Structure tm_unz
  tm_sec.l;            /* seconds after the minute - [0,59] */
  tm_min.l;            /* minutes after the hour - [0,59] */
  tm_hour.l;           /* hours since midnight - [0,23] */
  tm_mday.l;           /* day of the month - [1,31] */
  tm_mon.l;            /* months since January - [0,11] */
  tm_year.l;           /* years - [1980..2044] */
EndStructure

Structure unz_file_info
  version.l;              /* version made by                 2 bytes */
  version_needed.l;       /* version needed to extract       2 bytes */
  flag.l;                 /* general purpose bit flag        2 bytes */
  compression_method.l;   /* compression method              2 bytes */
  dosDate.l;              /* last mod file date in Dos fmt   4 bytes */
  crc.l;                  /* crc-32                          4 bytes */
  compressed_size.l;      /* compressed size                 4 bytes */
  uncompressed_size.l;    /* uncompressed size               4 bytes */
  size_filename.l;        /* filename length                 2 bytes */
  size_file_extra.l;      /* extra field length              2 bytes */
  size_file_comment.l;    /* file comment length             2 bytes */
  disk_num_start.l;       /* disk number start               2 bytes */
  internal_fa.l;          /* internal file attributes        2 bytes */
  external_fa.l;          /* external file attributes        4 bytes */
  tmu_date.tm_unz;
  FileName.s
EndStructure

#ZIP_OK                             =  0
#ZIP_CANCEL                         =  1
#UNZIP_OK                           =  0
#UNZIP_CANCEL                       =  1

#Z_NO_COMPRESSION                   =  0
#Z_BEST_SPEED                       =  1
#Z_BEST_COMPRESSION                 =  9
#Z_DEFAULT_COMPRESSION              = -1

Enumeration
  #ZIP_SUPPORT_OK
  #ZIP_SUPPORT_NOT_ARCHIVE
  #ZIP_SUPPORT_ERROR_IN_ARCHIVE
EndEnumeration
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: minizip

Beitrag von Thorsten1867 »

Vielen Dank für das Include.
PureZIP produziert bei mir unerklärliche Abstürze in meinem Programm, wenn es nicht im Debugmodus (???) läuft.
MiniZip ist meine Rettung.

Mir ist aufgefallen, dass Archivnamen mit Umlauten nach dem Packen etwas seltsam aussehen.
z.B. "K├╝ndigung.doc" anstatt "Kündigung"

Dann noch einen Vorschlag für "ZIP_DirAdd()".
Wie wäre ein Parameter "Pattern", damit man nur bestimmte Dateien packen kann (z.B. "*.doc")
ZIP_DirAdd(ZipHandle.l, Directory.s, [Pattern.s [, Compression [, Callback]]])

Ich habe mir das Include zwar entsprechend angepasst, aber vielleicht hätten auch andere Verwendung dafür. :wink:
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: minizip

Beitrag von STARGÅTE »

Mir ist aufgefallen, dass Archivnamen mit Umlauten nach dem Packen etwas seltsam aussehen.
z.B. "K├╝ndigung.doc" anstatt "Kündigung"
Das ist aber allgemein ein problem bei ZIP.
Zumindest hatte ich das auch schon wenn ich mit ZIP selbst "Umlaute gepackt" habe.

Sieht danach aus, als ob der Dateiname mit UTF-8 gespeichert wurde, dann aber mit Ascii gelesen wurde.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: minizip

Beitrag von ts-soft »

Entweder im ASCII oder im Unicode-Modus sollten die Umlaute stimmen, hab da irgendwo aufgegeben, PKZip 2 unterstützt
keine Umlaute und Infos über die ganzen wilden Formate fehlten mir da teilweise, weil jeder seinen eigenen Kram macht,
vor allem Winzip macht alles total anders (falsch :mrgreen: )
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: minizip

Beitrag von Thorsten1867 »

Hier ein Vorschlag für ZIP_DirAdd() mit Pattern und einem Flag, ob Unterverzeichnisse gepackt werden oder nicht:

Code: Alles auswählen

Procedure ZIP_BrowseDirectory(sPath.s, List ZIP_DirList.s(), List ZIP_FileList.s(), pattern.s="", Recursive.l=#True)
  Protected dirID, sDirName.s
  
  If (Right(sPath, 1) <> "\"): sPath + "\"  : EndIf

  dirID = ExamineDirectory(#PB_Any, sPath, pattern)
  If dirID
    While NextDirectoryEntry(dirID)
      If DirectoryEntryType(dirID) =  #PB_DirectoryEntry_File
        AddElement(ZIP_FileList())
        ZIP_FileList() = sPath + DirectoryEntryName(dirID)
      ElseIf Recursive
        sDirName = DirectoryEntryName(dirID)
        If (sDirName <> ".") And (sDirName <> "..")
          AddElement(ZIP_DirList())
          ZIP_DirList() = sPath + sDirName
          ZIP_BrowseDirectory(sPath + sDirName, ZIP_DirList(), ZIP_FileList(), pattern, Recursive)
        EndIf
      EndIf
    Wend
    FinishDirectory(dirID)
  EndIf
EndProcedure


Procedure ZIP_DirAdd(ZipHandle, Directory.s, pattern.s="", Recursive.l=#True, Compression = #Z_DEFAULT_COMPRESSION, Callback = 0)
  ; .....
  ZIP_BrowseDirectory(Directory, ZIP_DirList(), ZIP_FileList(), pattern, Recursive)
  ; .....
EndProcedure
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Antworten