zlib.h einbinden, wenn vorhanden
Verfasst: 3. September 2004 10:41
Hallo,
ich habe eine Klasse, die sich nur dem schreiben und lesen von Dateien widmet und sieht wie folgt aus:
So, was aber wenn auf Systemen kein zlib vorhanden ist? Dann bekommt man immer die Fehlermeldung, dass zlib nicht gefunden werden kann. Wie kann ich den Code umprogrammieren, dass zlib nicht installiert sein muss. Wie ich mit Qt schreiben und lesen kann weis ich, aber nicht wie ich die abfrage mache ob zlib vorhanden, und das ergebnis dann verarbeite. (Wenn vorhanden soll komprimiert gespeichert werden, ansonsten halt nicht)
Danke
Lykurg
ich habe eine Klasse, die sich nur dem schreiben und lesen von Dateien widmet und sieht wie folgt aus:
Code: Alles auswählen
#include "zlib.h"
#define _ZFILE_OPEN_MODE char zattr[8]; char *i = zattr;
#define ZFILE_OPEN_MODE_WRITE _ZFILE_OPEN_MODE *i++ = 'w'; *i++ = 'b'; *i++ = (char)47+clevel; *i++ = '\0';
#define ZFILE_OPEN_MODE_READ _ZFILE_OPEN_MODE *i++ = 'r'; *i++ = 'b'; *i++ = '\0';
[... lesen:]
QString xml;
ZFILE_OPEN_MODE_READ;
gzFile zfile = ::gzopen( pfad.data(), zattr );
if( ! zfile ) {
return false;
}
const int buffsize = 1024 * 4;
char rbuff[buffsize];
int readsize;
while( (readsize = gzread( zfile, rbuff, buffsize )) > 0 ) {
xml += QString(std::string(rbuff, rbuff + readsize ).c_str());
}
::gzclose( zfile );
[... schreiben:]
const char *xmlc = (const char *)xml;
int clevel = 6;
ZFILE_OPEN_MODE_WRITE;
gzFile zfile = ::gzopen( (const char *)pfad, zattr );
if( ! zfile ) {
return false;
} else {
::gzwrite( zfile, (voidp)xmlc, (unsigned int)xml.length() );
::gzclose( zfile );
return true;
}
Danke
Lykurg