Hmm, ich komme gerade nicht weiter mit der Nutzung der gzWrite/gzOpen Funktionen
gzOpen gibt ein handle zurück, dessen Struktur mit nicht ganz klar ist.
Code: Alles auswählen
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
Wenn ich das handle typenlos deklariere, dann gibt es bei der nächsten Verwendung (gzWrite) einen invalid memoryaccess error.
Bei meiner Recherche bin ich auf folgende Struktur für gzFile gekommen.
Code: Alles auswählen
//C Code?
struct gzFile_s {
unsigned have;
unsigned char *next;
z_off64_t pos;
};
Falls das die richtige Struktur sein sollte, dann gekomme ich sie nicht nach PB übersetzt, zumindest nicht das dritte Element (z_off64_t pos).
Mein bisheriger (nicht funktionierender) Testcode sieht so aus:
Code: Alles auswählen
EnableExplicit
Global sOutFile.s, sFileMode.s, sText.s
Global *InBuffer
Global *Filehandle
Import "zlib.lib"
gzclose(a.i) As "_gzclose"
gzopen(a.i, b.i) As "_gzopen"
gzwrite(a.i, b.i, c.i) As "_gzwrite"
EndImport
sOutFile = "F:\Out.txt"
sFileMode = "wb9"
sText = "01234567890123456789"
*InBuffer = @sText
*Filehandle = gzopen(@sOutFile, @sFileMode)
Debug *Filehandle
If *Filehandle <> 0
Debug Str(gzwrite(*Filehandle, *InBuffer, 10))
gzclose(*Filehandle)
EndIf
Viellecht kann mir hier noch jemand unter die Arme greifen?
Gruß Kurzer