0x00 ist bei Textdateien anders als bei Bitmaps...komisch!!!!



  • hmmmmm....
    ich bin verwirrt!!

    ich kriege es nicht mehr hin, dass meine textdateien ein 0x00 enthalten

    vergessen wir mal die 0x00 in den textdateien!

    weiss wer wo mein code fehlerhaft sein koennte, da er bei 0x00 falsch einliest?

    void CTeilerDlg::OnButton4() 
    {
    	FILE *inDatei;
    	inDatei = fopen("\\text.txt", "rb");
    
    	int Dateigroesse = 0, wert = 0;
    	fseek (inDatei,0,SEEK_END);
    	Dateigroesse = ftell (inDatei);
    	fseek (inDatei,0,SEEK_SET);
    	char *Puffer = new char[Dateigroesse];
    
    	///////////////////////////////ersetzt durch zeichenweises lesen//////////////////////
    /*	if(inDatei != NULL)
    	{
    		wert = fread(Puffer, 1,Dateigroesse,inDatei);
    	}
    	fclose (inDatei);
    */
    
    	char *Puffer2 = new char[2];
    	*(Puffer2+1) = '\0';
    
    	int j=1;
    
    	do
    	{
    		wert = fread(Puffer2,sizeof(char),1, inDatei);
    
    		strcat(Puffer, Puffer2);
    		j++;
    	}
    	while(j<=Dateigroesse);
    	fclose (inDatei);
    	/////////////////////////////////////////////////////////////////////////////////////
    
    	Byte *original= (unsigned char*)Puffer;
    	Byte *zip = new Byte[100000]; 
    	uLong zipLen= 100000, origLen= Dateigroesse;
    
    	zipLen= test_large_deflate( zip, zipLen, original, origLen);
    	delete Puffer;
    	delete original;
    ////////////////
    	FILE *ZipDatei;
    	ZipDatei = fopen("gezippte.txt", "wb");
    	fwrite(zip, 1, zipLen, ZipDatei);
    	fclose (ZipDatei);
    ////////////////////
    
    //////////////////////
    	FILE *gezippteDateiLesen;
    	gezippteDateiLesen = fopen("\\gezippte.txt", "rb");
    
    	int neueDateigroesse = 0, neuwert = 0;
    	fseek (gezippteDateiLesen,0,SEEK_END);
    	neueDateigroesse = ftell (gezippteDateiLesen);
    	fseek (gezippteDateiLesen,0,SEEK_SET);
    	char *Buffer = new char[neueDateigroesse];
    
    	///////////////////////////////ersetzt durch zeichenweises lesen//////////////////////
    	if(gezippteDateiLesen != NULL)
    	{
    		neuwert = fread(Buffer, 1,neueDateigroesse,gezippteDateiLesen);
    	}
    	fclose (gezippteDateiLesen);
    
    /*	char *Puffer3 = new char[2];
    	*(Puffer3+1) = '\0';
    
    	int m=1;
    
    	do
    	{
    		neuwert = fread(Puffer3,sizeof(char),1, gezippteDateiLesen);
    
    		strcat(Buffer, Puffer3);
    		m++;
    	}
    	while(m<=neueDateigroesse);
    	fclose (gezippteDateiLesen);
    */	//////////////////////////////////////////////////////////////////////////////////////
    
    	Byte *irgendwas= (unsigned char*)Buffer;
    	Byte *neu = new Byte[100000];
    	uLong neuLen= 100000, irgendwasLen= neueDateigroesse;
    ///////////////////////
    
    	neuLen= test_large_inflate(irgendwas, irgendwasLen, neu, neuLen);
    
    	FILE *EntzipDatei;
    	EntzipDatei = fopen("entzippte.txt", "wb");
    	fwrite(neu, 1, neuLen, EntzipDatei);
    	fclose (EntzipDatei);
    
    	m_neu = neu;
    	m_string = zip;
    	UpdateData(false);
    }
    

    gruss
    Guenni



  • FERTIG!!!

    ich kann zwar immer noch nicht richtig bitmapdateien zippen und entzippen aber ich kann MEINE BITMAPS zippen und entzippen

    ich weiss dass in meinen bitmaps nie die 0x55 als grafikinfo vorkommt und somit hab ich die 0x00 einfach vor dem zippen in 0x55 umgewandelt und nach dem enzippen wieder zurueckgewandelt

    wenn jemand eine bessere loesung weiss die auf alle bitmaps anzuwenden ist wuerde mich das sehr freuen...

    gruss
    Guenni



  • Vielleicht solltest du bei binären Daten einfach nicht mit Stringfunktionen arbeiten?



  • Wieso nicht? string akzeptriert auch \0 als Zeichen und nutzt es nicht als Zeilenende, oder? 🙂
    C-String-Funktionen sind allerdings nicht angebracht.

    MfG Eisflamme



  • Mis2com schrieb:

    Wieso nicht? string akzeptriert auch \0 als Zeichen und nutzt es nicht als Zeilenende, oder? 🙂
    C-String-Funktionen sind allerdings nicht angebracht.

    Was habe ich anderes gesagt als du jetzt grad? Hast du die Regel erst denken, dann posten wieder vergessen oder wie siehts aus?

    -junix



  • Mir erschien es so, als wenn du mit Stringfunktionen auch Funktionen der Klasse string gemeint hättest.
    Bitte nicht so agressiv...



  • und nu?
    helf mal bitte mehr als einen satz.... 🙂

    feierabend
    morgen frueh wieder

    guenni



  • Du willst zwei Sätze? Nimm std::string.



  • Jo, string ist ein schöner Hammer, aber das Problem hier ist kein Nagel. Es handelt sich um eine Binärdatei, also einen Haufen Bytes, und keine Zeichenkette.



  • das dürfte eigentlich keine probleme geben,ein haufen bytes kann man problemlos in einen haufen chars umwandeln...


Anmelden zum Antworten