ROT47 Verschlüßelung
-
Hallo
Christian211 meint, das du deine Funktion so aufrufen kannst
AnsiString Text; ... rot13(Text.c_str());bis bald
akari
-
Hi das Thema Interessiert mich auch und wie kann ich wieder entschlüsseln ???
-
OH THX
werds gleich mal ausprobieren
-
2211 schrieb:
Hi das Thema Interessiert mich auch und wie kann ich wieder entschlüsseln ???
Der Witz bei ROT13 ist, das dieselbe Routine sowohl zum Ver- als auch Entschlüsseln benutzt werden kann. Denn 13 + 13 = 26, die Anzahl der lateinischen Buchstaben.
bis bald
akari
-
so der fehler mit dem char ist weg doch ich hab echt kein schimmer wie ich das in die memo ausgeben kann
ich krieg da laufend fehlermeldungen und dann weis ich noch nicht mal was dieses "%c" bedeuten soll
-
Hallo
das mit dem "%c" fällt eh weg, wenn du das printf gegen einen Ziel-AnsiString umtauscht.
Mal ein Tip: wechsle komplett das *char ** gegen AnsiString aus, dann wird auch schon mal der Aufruf wieder einfacher.
Dann erstellst du in der Funktion einen lokalen AnsiString, dem du die umgerechneten Zeichen anhängst, anstatt die mit printf auf der Konsile auszugeben. Den lokalen AnsiString gibts du dann zurück, nachdem du dann auch den Rückgabewert der Funktion angepasset hast.bis bald
akari
-
Ich komme hier nicht weiter kann mier jemand helfen ??
list->Add(rot13(edits[k]->Text.c_str()));
-
Hallo
Das ist kein Wunder, schau dir nochmal den Rückgabewert der Original-Funktion rot13 im ersten Post hier an, und schau was ->Add() als Parmeter erwartet.
Und wie du das so ändern kannst, das genau das funktioniert, steht genau einem Post über deinem in meinem.bis bald
akari
-
kann mir vieleicht jemand sagen wie ich das richtig anwende
char nach Ansi
AnsiString=char;bei
Ansi nach char
char=AnsiString.c_str();hab ich das so gemacht
rot13(Memo1->Text.c_str());
-
So sieht jetzt mein Rot 13 Code aus:
void rot13(AnsiString *string) { int len = string->Length(), x; for (x = 0; x <= len; x++) { if (((string[x] >= 65) && (string[x] <= 77)) || ((string[x] >= 97) && (string[x] <= 109))) { printf("%c", string[x]+13); } else if (((string[x] >= 78) && (string[x] <= 90)) || ((string[x] >= 110) && (string[x] <= 122))) { printf("%c", string[x]-13); } else printf("%c",string[x]); } }So sieht der Aufruf aus:
list->Add(rot13(edits[k]->Text));Das sind die Fehler:
[C++ Fehler] Unit2.cpp(43): E2034 Konvertierung von 'AnsiString' nach 'AnsiString *' nicht möglich
[C++ Fehler] Unit2.cpp(43): E2342 Keine Übereinstimmung des Typs beim Parameter 'string' ('AnsiString *' erwartet, 'AnsiString' erhalten)
[C++ Fehler] Unit2.cpp(43): E2342 Keine Übereinstimmung des Typs beim Parameter 'string' ('AnsiString *' erwartet, 'AnsiString' erhalten)
-
Hallo
ich gebs auf. Also für euch der fertige Code zum Kopieren...
AnsiString rot13(const AnsiString &Original) { AnsiString Ergebnis; for (int x = 1; x <= Original.Length(); x++) { if (((Original[x] >= 65) && (Original[x] <= 77)) || ((Original[x] >= 97) && (Original[x] <= 109))) { Ergebnis += char(Original[x]+13); } else if (((Original[x] >= 78) && (Original[x] <= 90)) || ((Original[x] >= 110) && (Original[x] <= 122))) { Ergebnis += char(Original[x]-13); } else Ergebnis += char(Original[x]); } return Ergebnis; } ... AnsiString Test = "Hallo 123 Meier"; Edit1->Text = rot13(Test); // Test wird kodiert und in Edit1 angezeigt Edit2->Text = rot13(Edit1->Text); // Inhalt von Edit1 wird decodiert und in Edit2 angezeigtbis bald
akari
-
Danke Vielmals funktioniert toll.
Aber dass ich auch etwas dabei gelernt habe. Wie funktioniert denn das Prinzip von rot13 nicht ganz gerafft könnte mier es jemand erklären dann versuche ich nälich auf eigne faust zu verscuhen zahlen einzubinden

-
Hallo
Einfach hier nachlesen. Das hättest du machen sollen bevor du versuchst ein Programm dafür zu schreiben!
bis bald
akari