zlib.h einbinden, wenn vorhanden

Alles rund um die Programmierung mit Qt
Antworten
Lykurg
Beiträge: 30
Registriert: 9. August 2004 17:30

zlib.h einbinden, wenn vorhanden

Beitrag 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
pm_Snake
Beiträge: 86
Registriert: 7. September 2004 11:33

Beitrag 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.
Lykurg
Beiträge: 30
Registriert: 9. August 2004 17:30

Beitrag 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
Antworten