Seite 1 von 1

zlib.h einbinden, wenn vorhanden

Verfasst: 3. September 2004 10:41
von Lykurg
Hallo,

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;
  }
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

Verfasst: 7. September 2004 15:32
von pm_Snake
Wenn du Systemübergreifend programmieren willst darfst du natürlich keine Systemspezifischen sachen einbinden, da die ja, logischerweise, auf anderen Systemen fehlen.

Also entweder es ist nur für ein BS zu gebrauchen oder du versuchst es ohne zlib.h ( was aussieht wie eine Systemspezifische header-datei ) hinzubekommen.

Verfasst: 8. September 2004 06:15
von Lykurg
Tach!
pm_Snake hat geschrieben:Wenn du Systemübergreifend programmieren willst darfst du natürlich keine Systemspezifischen sachen einbinden
naja, zlib ist ja eigentlich für alle BS zu haben. Das ding ist halt nur, wenn es einer nicht hat, soll er es auch nicht unbedingt installieren müssen, nur die anderen sollen auch nicht darauf verzichten müssen ihre Daten gepackt speichern zu können.

Aber ich seh schon, dass ich zwei verschiedene Dateien machen muss.

Lykurg