Hilfe bei C++ "Verschlüsselungen"

OK, ich lade Sie nochmal im Fprum hoch ;)
Allerdings leigt mein Fehler hierin:
"datei.binary = new char[datei.bLength];"
Das geht einfach nicht, die Größe von datei.binary ist immer noch 4:/
Ich habs auch mal so geschrieben:
"char* test = new char[10];"
Danach ist der char* test auch 4 und nicht 1o wie angegeben...sonst funktioniert ja alles...
Jemand ne Idee? ;)

Hier nochmal die Dateien:
https://www.mediafire.com/file/iwbd34vbth8qjfa/cwriter.rar
(Weiss leider nicht wie man die Forum hochlädt, kannste aber gerne erklären dann kommen die sofort ins Forum ;))
 

cwriter

Erfahrenes Mitglied
Das geht einfach nicht, die Größe von datei.binary ist immer noch 4:/
Festgestellt mit sizeof()? Klar ist das noch 4 Bytes. sizeof() sagt, wie gross die Variable ist. Ein char* ist ein Pointer, und ein Pointer ist auf 32bit 4 Bytes gross (du kannst damit 4GB adressieren). Aber es dürfte klar sein, dass ein String, der mehr als 4 Zeichen hat, mehr als 4 Bytes Speicher braucht. Die Klasse kann nicht dynamisch wachsen, also speicherst du nur den Ort, wo der String gespeichert wird (auf dem Heap) in diesem Pointer. Die Grösse ist unbekannt, es sei denn, du speicherst sie mit (ob auf dem Heap als Präfix oder in der Klasse selbst, ist egal).
Stell es dir so vor: Wenn du nach dem Weg zum Bahnhof fragst, kann dir jemand nicht einfach den Bahnhof vor die Nase stellen. Also sagt er dir nur, wo der Bahnhof ist. Du weisst so auch nicht, wie gross der Bahnhof ist, oder? Der andere müsste es dir sagen, und dazu muss er die Grösse selbst kennen.

Weiss leider nicht wie man die Forum hochlädt, kannste aber gerne erklären dann kommen die sofort ins Forum ;))
Hast du neben "Antwort erstellen" keinen Button "Datei hochladen"? (Es gibt gewisse Einschränkungen für neue Nutzer, aber ich dachte, dass das keine davon ist. @sheel: Bitte ergebenst um Erleuchtung (oder, falls du solche Einschränkungen lösen kannst: Ich denke nicht, dass hier eine grosse Virenschleudergefahr besteht :)))

Gruss
cwriter
 
Hmm ok vielen Dank ür die Erklärung.
Hast du denn eine Idee was ich verändern müsste? Laso wenn ich das richtig verstanden habe kann ich ja dazu gar kein char* verwenden. Dann muss ich praktisch Vectoren verwenden, aber dann kann ich ja "quelle.read()" nicht mehr verwenden. (Habe es eben probiert). Ich wüsste nicht was ich dann machen sollte, denke aber das meine Idee mit der verschlüsselung doch sicher möglich ist.

PS: Weil ich so hochintelligent bin habe ich den Button schlichtweg einfach nicht gesehen xD
Jetzt aber richtig xd: (Die header Datei kann ich irgendwie nicht hochladen? Darum lade ich sie jetzt in einer txt hoch, ist ja nicht soo viel ;))
 

Anhänge

  • Verschl.cpp
    3,6 KB · Aufrufe: 1
  • Datei.cpp
    4 KB · Aufrufe: 1
  • Datei.txt
    395 Bytes · Aufrufe: 1
Hmm ok danke erstmal. jetzt habe ich aber folgendes Problem: Der Text steht nach dem ver- und entschlüsseln wieder in der richtigen Form, jedoch werden nur die ersten 4 Buchstaben verschlüsselt- die restlichen stehen auch in der verschlüsselten Variante normal da. HAst du mal wieder eine Lösung parat? ;)

PS: Da ich damit allerdsings schon Bilder, exe Dateien etc verschlüsseln kann, werde ich den Thread nun endlich als "Gelöst" makieren, da das ja das eigentliche Ziel war. Wenn ich jedoch bald wieder Fragen zu dem Thema haben, poste ich Sie hier rein.

Danke an BratKartoffel und cwriter für die Geduld und die guten Erklärungen ;)

LG
 
Zuletzt bearbeitet:

cwriter

Erfahrenes Mitglied
jedoch werden nur die ersten 4 Buchstaben verschlüsselt- die restlichen stehen auch in der verschlüsselten Variante normal da. HAst du mal wieder eine Lösung parat? ;)
Hast du in bSchreiben denn das sizeof(binary) auch durch bLength ersetzt?
Ansonsten: Immer gerne den aktuellen Code anhängen (da ich ja nicht weiss, was du alles geändert hast).

Gruss
cwriter
 
Soo, habe jetzt 2x sizeof() durch bLength ersetzt und es funktioniert alles so wie es soll ;)
(Hänge die verbesserte Datei unten dran, Kommentare sind gesetzt wo ich es ersetzt habe).
 

Anhänge

  • Datei.cpp
    4 KB · Aufrufe: 0