0x00 ist bei Textdateien anders als bei Bitmaps...komisch!!!!
-
Sorry, mir ist zu spaet aufgefallen, dass ich in MFC gepostet hab....
Aber leoschen ist ja nicht!
Ja, habe sie binär geoeffnet.
Ich denke, dass es etwas mit dem Unicode zu tun hat, da Unicode aufm PocketPC nur 1Byte gross ist und nicht wie normal 2.
Ich habe zwischenzeitlich den Text einmal in einen Unicode Text umgewandelt und diesen ohne Dateiendung auf den PocketPC transferiert, sodass keine Formatumwandlung waerend des Transports stattfinden konnte.
Diese Datei hab ich dann wiederrum durch den Algorithmus gejagt und siehe da: Auch hier kommt Schrott raus...aufgefuellt mit 0x00.Hmmmmmm.......
-
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 wiederguenni
-
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...