Wie Verschiebechiffre (auch als Caesar-Verschlüsselung bekannt) umsetzen?
-
AnsiString test = mem_ver_text->Text char einbuchstabe = test[1]; //einbuchstabe ist dann halt der erste Buchstabe des Inhalts deines Memo's
Ja dann muss aber char einbuchstabe en feld sein oder?
mfg
schally
-
Siehe oben...
jezz versteh ich nich worauf du hinaus willst. Array?? Du hast bereits das Stringarray (test).
mach - nur aus Spaß und um es zu verstehen - mal folgendes:
AnsiString test = mem_ver_text->Text; for (int i = 0; i < test.length(); i++) { ListBox1->Items->Add(test[i]); }
-
Da hast du wohl AnsiString und string durcheinander geworfen. Korrekt sehe das so aus. Aber das hatten wir doch alles schon einmal.
AnsiString test = mem_ver_text->Text; for (int i = 1; i <= test.Length(); i++) { // etc.
@schally
char ist kein Einbuchstabenfeld sondern ein einzelner Buchstabe.
-
ja aber ich verstehe es nicht kann mir den keiner en bsp machen wo aus dem was aus ner memo komp in eine variable geschrieben wird und ich auf jeden buchstaben zugrteifen kann!
mfg
schally
-
braunstein schrieb:
Da hast du wohl AnsiString und string durcheinander geworfen. Korrekt sehe das so aus. Aber das hatten wir doch alles schon einmal.
Sorry, du hast natürlich recht! Entschuldigung
-
schally schrieb:
Funktioniert nicht !
aber ich komm auch net drauf warum!mfg
schallywat ne Aussage
Poste mal bitte das, was du jetzt geschrieben hast :)!
-
@schally
Wir haben dir genau dieses Beispiel doch schon ein paar Mal gegeben.AnsiString test = mem_ver_text->Text; //schreibt den Inhalt vom Memo in die Variable test for (int i = 1; i <= test.Length(); i++) //eine Schleife von 1 bis zur Länge des Strings { char ch = test[i]; //Schreiben des Buchstabens Nr. i in die Variable ch }
-
Braunstein schrieb:
AnsiString test = mem_ver_text->Text; //schreibt den Inhalt vom Memo in die Variable test for (int i = 1; i <= test.Length(); i++) //eine Schleife von 1 bis zur Länge des Strings { char ch = test[i]; //Schreiben des Buchstabens Nr. i in die Variable ch /*aber muss dann nicht [ch] en Feld sein da ich mehrere Buchstaben Reinschrieben will ? */ }
mfg
schally
-
Ich denk du willst jedes mal nur einen Buchstaben haben
...
ch wird bei jedem Durchlauf der Schleife überschrieben.
AnsiString test = mem_ver_text->Text; //schreibt den Inhalt vom Memo in die Variable test for (int i = 1; i <= test.Length(); i++) //eine Schleife von 1 bis zur Länge des Strings { char ch = test[i]; //Schreiben des Buchstabens Nr. i in die Variable ch // Hier kann jetzt deine Routine zur Abarbeitung des Buchstaben rein... }
-
Wenn das nicht das ist was du brauchst, dann solltest du uns erklären was du willst.
Du hast gefragt.
1.us dem was aus ner memo komp in eine variable geschrieben wird
steht in der ersten Zeile
2.und ich auf jeden buchstaben zugrteifen kann
Das macht die Schleife und die Zeile darin.
Aus diesem Grundgerüst läßt sich prima ein Verschiebechiffre bauen. Du brauchst doch nur noch eine zweite AnsiString-Variable die den verschobenen Text aufnimmt.
-
RandomAccess85 schrieb:
Ich denk du willst jedes mal nur einen Buchstaben haben
...
ch wird bei jedem Durchlauf der Schleife überschrieben.
AnsiString test = mem_ver_text->Text; //schreibt den Inhalt vom Memo in die Variable test for (int i = 1; i <= test.Length(); i++) //eine Schleife von 1 bis zur Länge des Strings { char ch = test[i]; //Schreiben des Buchstabens Nr. i in die Variable ch // Hier kann jetzt deine Routine zur Abarbeitung des Buchstaben rein... }
nee ich will alle buchstaben auf einmal haben
weil ich ja auch jeden buchstaben einzeln zugreifen muss!
mfg
schally
-
In test sind doch alle Buchstaben drin.
Weißt du wie eine for-schleife funktioniert?
-
ja weis ich !
for(startbedigung;abbruchbedinung;erhöhung/verkleinnern bis abbruchbedingung erreicht)!!!
aber wie kann ich in einem AnsiString auf einzelne Buchstaben zugreifen?
char buchstabenfeld[1000];//Für jeden Einzelnen Buchstaben for(int i=0;i<test.length();i++ ) { buchstabenfeld[i]=test[i].c_str(); }
so?
-
Dann lass die Buchstaben im Memo drin und verarbeite sie dort einzeln:
for (int i = 0; i < Memo1->Lines->Count; i++) { for (int a = 1; a <= Memo1->Lines->Strings[i].Length(); a++) { // Verarbeitung von Memo1->Lines->Strings[i].SubString(a,1); } }
Das is unschön, aber du hast jederzeit alle Buchstaben und kannst einzeln darauf zugreifen.
Aber deine Aussage ist schon irgendwie widersprüchlich insich.
Du willst ALLE Buchstaben haben, WEIL du auf jeden EINZELN zugreifen willst
-
schally schrieb:
aber wie kann ich in einem AnsiString auf einzelne Buchstaben zugreifen?
char buchstabenfeld[1000];//Für jeden Einzelnen Buchstaben for(int i=0;i<test.length();i++ ) { buchstabenfeld[i]=test[i].c_str(); }
so?
mit test[i] greifst du auf jeden einzelnen buchstaben zu ... was vor dem = steht ist nur die Variable in die du den Buchstaben "zwischenspeicherst"...
-
So wäre das richtig.
char buchstabenfeld[1000];//Für jeden Einzelnen Buchstaben for(int i=1;i<=test.Length();i++ ) { buchstabenfeld[i-1] = test[i]; } buchstabenfeld[test.Length()] = '\0'; //Nullterminierung nicht vergessen
Wozu willst du aber deine Buchstaben erst in ein char-Array packen, wenn du über die AnsiStringvariable direkt darauf zu greifen kannst?
-
RandomAccess85 schrieb:
Dann lass die Buchstaben im Memo drin und verarbeite sie dort einzeln:
for (int i = 0; i < Memo1->Lines->Count; i++) { for (int a = 1; a <= Memo1->Lines->Strings[i].Length(); a++) { // Verarbeitung von Memo1->Lines->Strings[i].SubString(a,1); } }
Das is unschön, aber du hast jederzeit alle Buchstaben und kannst einzeln darauf zugreifen.
Aber deine Aussage ist schon irgendwie widersprüchlich insich.
Du willst ALLE Buchstaben haben, WEIL du auf jeden EINZELN zugreifen willstSo das wollte ich doch haben RandomAccessS85
!!!
nun kann ich mal schauen wie ich die verschlüsselung vornehme!mfg
schally
-
Is aber genau das gleiche wie wir die dir ganze zeit beschrieben haben, nur das bei der anderen Variante der Buchstabe in einer Variable gespeichert wird und von dort aus verarbeitet werden kann!
-
Nun kommt das nächste Problem
ich kann ja dies so schreiben://Beginn des Verschlüsselungsalgorthmus for (int i = 0; i < mem_ver_text->Lines->Count; i++) { for (int a = 1; a <=mem_ver_text->Lines->Strings[i].Length(); a++) { //Hier nun der Verschlüsselungs Algorithmus if(mem_ver_text->Lines->Strings[i]/*Oder kann ich auch hier schon schrieben mem_ver_text->Lines->Strings[i].ToInt()*/=='A') { buch_zahl=mem_ver_text->Lines->Strings[i].ToInt()+kennwort; //Kennwort ist eine Zahl im Intger Wert } } }
weil er sagt mir immer das 'A'kein Intgerwer ist!obwohl ich es umwandle!
mfg
schally
-
Will mich hier ja nicht in die Problemlösung einmischen, aber Du solltest Dich mal dringend mit den Grundlagen von C++ vertraut machen.
Wo wandelst Du denn A um?