Code-Beispiel
kleiner zip lib wrapper
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | ![]() | ![]() |
Ein kleiner wrapper um die Benutzung von zip lib zu vereinfachen.
#Include "zip.bi"
#INCLUDE "zlib.bi"
Type cZip
_zip As zip Ptr
_zipFile As zip_file Ptr
_zipFileIndex As zip_uint64_t
_zipFileSize As Integer
_zipFileData As ZString Ptr
_zipFileInfo As zip_stat_
Declare Sub o(id As string)
Declare Sub c()
Declare Function getFile(id As string) As string
End Type
Sub cZip.o (id As string)
this._zip = zip_open(ExePath & "/" & id,0,0)
End Sub
Sub cZip.c ()
zip_close(this._zip)
End Sub
Function cZip.getFile(id As string) As String
'Datei finden, Position und Grösse auslesen
this._zipFileIndex = zip_name_locate(this._zip, id, 0)
zip_stat_index(this._zip, this._zipFileIndex, 0, @this._zipFileInfo)
this._zipFileSize = this._zipFileInfo.size
'Datei zum Lesen öffnen
this._zipFile = zip_fopen(this._zip, id, 0)
this._zipFileData = Callocate(this._zipFileSize+1)
'Datei lesen und inhalt in Ausgabe Variable packen
zip_fread(this._zipFile, this._zipFileData, this._zipFileSize)
Dim As String fileData = Str(*this._zipFileData)
'Datei schliessen und pointer zerstören
zip_fclose(this._zipFile)
DeAllocate(this._zipFileData)
'Ergebnis ausgeben
Return fileData
End Function
'beispiel
Dim myZip As cZip
'test.zip öffnen
myZip.o("test.zip")
'inhalt von foo.txt ausgeben
Print myZip.getFile("foo.txt")
'inhalt von test/bar.txt ausgeben
Print myZip.getFile("test/bar.txt")
'zip datei schliessen
myZip.c()
Sleep
Was noch fehlt ist das Abfangen des Fehlers wenn auf eine Datei, die nicht existiert, zugeriffen wird.
Getestet mit windows XP.
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|