Seite 8 von 9

Verfasst: 25.02.2009 04:58
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 /:->

Verfasst: 25.02.2009 13:26
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:

Verfasst: 25.02.2009 14:06
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

Verfasst: 26.02.2009 12:29
von ts-soft
Update

resident für x64 fixed
Neue Funktion: ZIP_DirAdd((ZipHandle, Directory.s [, Compression [, Callback]])
redunanten Code entfernt

Verfasst: 01.03.2009 22:28
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

Verfasst: 01.03.2009 22:31
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

Re: minizip

Verfasst: 10.09.2011 20:30
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:

Re: minizip

Verfasst: 10.09.2011 20:43
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.

Re: minizip

Verfasst: 10.09.2011 21:10
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: )

Re: minizip

Verfasst: 10.09.2011 21:30
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