AccessViolation
-
Hallo zusammen,
ich lese eine Datei in ein char-Array ein. Der eingelesene Text ist "verschlüsselt" indem jedes Bit invertiert ist.
ich versuche die Verschlüsselung durch folgende Schleife rückgängig zu machen!
char cZeichen; for( ii = 0; ii < iBytesRead; ii++ ) { cZeichen = ~ *pBuffer; m_asInhalt += cZeichen; //m_as = AnsiString Objekt pBuffer++; } delete [] pBuffer;Das klappt auch ganz gut, bis die Schleife an das Ende ankommt. Hier wirft sie mit dann eine AccessViolation. Ich denke mir, weil ich im letzten Schritt mit
pBuffer++ an eine Stelle zeige, die der Pointer nicht kennt, oder?
Wenn nun das delete ausgeführt werden soll, passiert diese Fehler.
Kann mir jemand helfen, wie ich den invertierten Inhalt aus pBuffer in die AnsiString Variable "m_asInhalt" (aber dann unverschlüsselt!) bekomme??Vielen Dank für die Antworten
GRuß
-
Hallo,
Du schaltest ja den Pointer immer weiter und versuchst dann einen Speicherbereich zu löschen der dir nicht gehört. Entweder du nimmst für die Invertierung eine Kopie des Zeigers auf pBuffer oder (besser) du nutzt die Indizierung.
for( ii = 0; ii < iBytesRead; ii++ ) { m_asInhalt += ~ pBuffer[ii]; //m_as = AnsiString Objekt } delete [] pBuffer;
-
Schon mal danke Braunstein!
Das einzige was mich jetzt noch ein wenig stört, ich aber nicht weiß, ob es jetzt nur an dem Debuggen liegt ist, dass in den AnsiString die ASCII-Dezimalzahlen geschrieben werden. Aber in den String sollen ja die richtigen Zeichen rein!
Also das erst Zeichen ist ein "K" -> geschrieben wird eine 75 in den String usw.
Kannst du mir grade noch sagen, wie ich das zeichen statt der Ziffer in den String bekomm??Danke!
-
Hat sich erledigt! habs mit einer char-Variablen geregelt.
cZeichen = ~ pBuffer[ii]; m_asZErf2000_Inhalt += cZeichen;Trotzdem danke!