zlib



  • wenn ihrs einfacher und winabhängig haben wollt benutzt lieber tar32

    hier n beispiel:

    #include <windows.h>
    #include <assert.h>
    
    typedef int (__stdcall *TAR)(HWND hwnd,char *cmd,char *buff,int buflen);
    
    int main()
    {
    	HINSTANCE hLib=0;
    	TAR pTarFunc=0;
    
    #ifdef _DEBUG
    	hLib=LoadLibrary("tar/tar32d.dll");
    #else
             hLib=LoadLibrary("tar/tar32.dll");
    #endif
    	pTarFunc=(TAR)GetProcAddress(hLib,"Tar");
    
    	//komprimierung aller .h .cpp ohne kompression
    	pTarFunc(0,"-cvf foo.tar *.cpp *.h",0,0);
    	//komprimierung aller .h .cpp mit kompression
    //	pTarFunc(0,"-cvfz9 foo.tar *.cpp *.h",0,0);
    	//entpacken in fooextract
    //	pTarFunc(0,"-xvf foo.tar -o fooextrac/",0,0);
    return 0;
    }
    

    das ding heisst tar32.dll
    Copyright (C) 1999 Yoshioka Tsuneo URL: http://openlab.ring.gr.jp/tsuneo/tar32/

    soweit ich weiss isses freeware und open source und öffnet standardmäßig irgendein statusfenster beim komprimieren, das sich aber leicht ausschalten lässt weil ja der code beiliegt



  • netter link!! 😃

    nur leider hab ich keine japanische tastatur um angemessen antworten zu koennen.... 🤡

    aber ich find schon das deutsche gegenstueck...danke!!

    Günni



  • 1000 dank

    aber kann mir wer diese Zeile mal genauer erklären!

    BBO88aK(B TAR32.DLLBO(BWindowsBMQN(BTAR/GZ/BZ2/ZBEyN05=L(B/BE83+MQ%i%%V%i%j%W%m%0%i%`G9!#(B BE}9g%"!<%+%%P%W%m%8%'%/%HN(BAPIB;EMMB;EMMK=`5r77F$$$^9!#(B BBP1~7A<0O0J2<O0J2<NDLjjG$9!#(B

    😃

    lol
    Wir werden mal schauen was wir damit anfangen können! Leider soll unsere gegenstelle Betriebssystemunabhängig dekomprimieren können.

    wenn ihrs einfacher und winabhängig haben wollt benutzt lieber tar32

    Das mit dem winabhängig ist dann so ne frage! Mal schauen was unsere dekomprimierer dazu sagen :p

    trotzdem danke für den tip!
    sven



  • der verständlicherere link dazu! 😃

    http://www.openlab.jp/tsuneo/tar32/index-e.html



  • Guenter Mies schrieb:

    netter link!! 😃

    nur leider hab ich keine japanische tastatur um angemessen antworten zu koennen.... 🤡

    aber ich find schon das deutsche gegenstueck...danke!!

    Günni

    jep sorry war gestern schon spät

    ich kann euch auch noch meinen zlib code raussuchen... mal schaun



  • Das wäre cool wenn du das mal machen könntest!
    Du hast das doch auch realisiert um BMP#s zu koprimieren, oder?
    Das wäre sehr interessant! Wir sind soweit das wit simpele txt komprimieren und dekomprimieren!
    Tja wir hatten schon versucht BMP infos zu komprimieren doch da sehr wahrscheinlich in den BMP´s steuerinformationen vorhanden sind die einem /0 entsprechen, werden bei uns nur 3 oder 4 zeichen der BMP eingelesen!
    Wir hatten uns gedacht das wir diese maskieren um dieses zu umgehen!
    Wäre dennoch interessant zu wissen wie du das gemacht hast!

    thx a lot

    sven



  • ich glaub mir war der dateityp schnurz
    habs einfach binär eingelesen und an die komprimierungsfunktion verfüttert

    an den code komm ich erst heut abend wenn ich wieder zuhause bin



  • Das hort sich ja dennoch gut an!
    Also wenn du @home bist bitte denk an uns! 😃

    ///// NEUES PROBLEM MIT ZLIB ////////////////
    unsere einelese buffer ist 9000 zeichen groß, damit liest er 3332 Zeichen ein bei 3333 zeichen bricht er ab! Und die Ausgabedatei ist dann leer!
    Vergrößern wir unseren Buffer auf 10000 dann ist kann er die 3333 Zeichen lesen! Nun haben wir uns gedacht den Buffer in Schritten auf 50000 zu erhöhen.
    Und 6000 Zeichen einzuladen aber es funzt nicht!!!
    Und es wäre müsig die maximale Lesbaren Zeichen dafür heraus zu finden.
    Wir sind der Meinung dass es daran liegt dass die fread methode nur bis zu einem eof liest. Wir haben uns die Datei in einem Hexeditor angeschaut und erkannt, dass es immer bei HEX 00 endet egal ob noch zeichen folgen sollten! Dies ist laut ASCII tabelle == NULL
    ist in diesem Fall ein \0 gemeint oder ...

    int wert =0;
    File inFile;
    inFile = fopen("Dateiname","rb");
    char *puffer = new char [Dateigroesse +1];
    if (inFile != NULL )
    {
      wert = fread(puffer,1,Dateigroesse,inFile);
    }
    

    .. das NULL der If Abfrage?
    p.s. wir arbeiten auf pocketpc daher fread / fopen usw. (geht nicht anders 😞 )

    Sven



  • der rueckgabewert entspricht ja der groesse der gelesenen daten oder?
    probierts mal mit ner while schleife bis nix mehr kommt



  • haben wir schon gemacht!

    char *Puffer = new char[Dateigroesse];
    Puffer = "";
    char *Puffer2 = new char[2];
    *(Puffer2+1) = '\0';
    do{
    	wert = fread(Puffer2,sizeof(char),1, inZip);
             strcat(Puffer, Puffer2);
             j++;
    	} while(j<Dateigroesse);
    fclose (inZip);
    

    Wäre cool wenn du heut abend einfach mal deinen code postest dann können wir vielleicht sehen wo s bei uns scheitert!

    thx a lot



  • haben wir schon gemacht!

    char *Puffer = new char[Dateigroesse];
    Puffer = "";
    char *Puffer2 = new char[2];
    *(Puffer2+1) = '\0';
    do{
    	wert = fread(Puffer2,sizeof(char),1, inZip);
             strcat(Puffer, Puffer2);
             j++;
    	} while(j<Dateigroesse);
    fclose (inZip);
    

    Wäre cool wenn du heut abend einfach mal deinen code postest dann können wir vielleicht sehen wo s bei uns scheitert!

    thx a lot



  • boah sieht der code sche**** aus... is ja schon fast peinlich das zu posten
    aber ich weiss dass er damals einwandfrei funktioniert hat um einzelne dateien zu packen und zu entpacken

    int eCompress_CompressFile(CString FileName,CString Extension)
    {
    	LastError="";
    	CFile TheFile;
    	if(!TheFile.Open(FileName,CFile::modeRead|CFile::typeBinary))
    		return PutError("Datei konnte nicht geöffnet werden!"); 
    	char Buf[1000000];
    	int read=0;
    	gzFile zFile=gzopen(FileName+Extension,"wb9");
    
    	if(!zFile)
    		return PutError("Ausgabedatei konnte nicht erstellt werden!");
    
    	do
    	{
    		read=TheFile.Read(Buf,1000000);
    		if(!gzwrite(zFile,Buf,read))
    			PutError("Fehler beim Schreiben der komprimierten Daten!");
    
    	}while(read);
    
    	TheFile.Close();
    	gzclose(zFile);
    
    return eCompressionFINE;
    }
    int eCompress_DecompressFile(CString FileName,CString Extension)
    {
    	LastError="";
    	gzFile zFile=gzopen(FileName+Extension,"rb9");
    	if(!zFile)
    		return PutError("Eingabedatei konnte nicht geöffnet werden!");
    	char Buf[1000000];
    	int write=0;
    
    	CFile TheFile;
    	if(!TheFile.Open(FileName,CFile::modeWrite|CFile::typeBinary|CFile::modeCreate))
    		return PutError("Ausgabedatei konnte nicht erstellt werden!"); 
    
    	do
    	{
    		write=gzread(zFile,Buf,1000000);
    		TheFile.Write(Buf,write);
    	}while(write);
    
    	gzclose(zFile);
    	TheFile.Close();
    
    return eCompressionFINE;
    }
    


  • Und so s******e sieht der doch nicht aus!
    Hättest aber eben noch Kommentare dazu schreiben können! 😃
    Nein thx a lot!
    Werd mal schauen was wir damit machen können, aber nicht mehr heute!
    werd morgen posten ob es was geholfen hat!

    sven


Anmelden zum Antworten