Wie Verschiebechiffre (auch als Caesar-Verschlüsselung bekannt) umsetzen?
-
nein, ich meinte
mem_ver_text->Lines->Strings[i][a]
-
aso sorry, lol!
@schally: siehste wieder nen Beispiel dafür das es immer mehrere Wege zur Lösung gibt
!!
-
schally schrieb:
[cpp]
//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
}
}
}
[/cpp]Wie kommst Du darauf, daß in mem_ver_text->Lines->Strings[i] (also der i-ten Zeile) eine Integerzahl steht? Das ist doch eher unwahrscheinlich! Was Du meinst, ist in etwa folgendes:
for (int i = 0; i < mem_ver_text->Lines->Count; i++) for (int a = 1; a <=mem_ver_text->Lines->Strings[i].Length(); a++) { // Zeichen holen, ASCII-Wert bestimmen und verschlüsseln: buch_zahl = (int)mem_ver_text->Lines->Strings[i][a] + kennwort; // und hier noch mögliche Überläufe abfangen ... }
PS: Da war ich wieder mal etwas zu langsam
-
Die Grundlagen habe ich drauf(wir Programmieren seit etwa 2Monaten mit dem Builder vorher DEVC++(Konsole))
aber wir bekommen halt net alles gezeigt das is en riesen nachteil weil wir auch noch assembler,java,php und html machen und c++ is bei uns nach diesen Projekt erledigt!Ich war der meinung man könnte .ToInt() -Fkt auch hier benutzen!
aber die Hilfe vom Borland is auch net grad die beste müsst ihr zugeben!
C.Sonder schrieb:
Wie kommst Du darauf, daß in mem_ver_text->Lines->Strings[i] (also der i-ten Zeile) eine Integerzahl steht? Das ist doch eher unwahrscheinlich! Was Du meinst, ist in etwa folgendes:
Weil ich ja mit der FKT ToInt() Arbeitete dachte ich er würde sie nun in ein Intger Wert Umwandeln.
mfg
schally
-
Nein, müssen wir nicht. Ich finde die Hilfe eigentlich ganz gut.
Du willst auf die einzelnen Buchstaben eines Strings zugreifen. Die sind nunmal vom Typ char. Wenn du in die Hilfe zu ToInt schaust wirst du feststellen, dass sie versucht den Inhalt eines Strings in eine Int-Zahl umzuwandeln. Du brauchst für dein Chiffre aber den ASCII-Wert deines Buchstabens. Das sind nunmal völlig verschiedene Dinge.
Mit mem_ver_text->Lines->Strings[i][a]
greifst du auf den Buchstaben Nummer a zu. Der ist vom Typ char. Den kannst du nun wie Christian es gezeigt hat in einen Int casten. Das ist aber eigentlich nicht nötig, da char implizit in int umgewandelt wird.
Alsochar buchstabe = mem_ver_text->Lines->Strings[i][a]; // Buchstabe zur Verinfachung zwischenspeichern buch_zahl = (int)buchstabe + kennwort; // in int Umwandeln und kennwort dazu addieren (Was ist kennwort eigentlich bei dir?) //buch_zahl weiterverarbeiten
-
Muss mich nochmal melden.
Die Borlandhilfe ist, wenn man sie einmal verstanden hat, absolute Klasse.
Lines->Strings[] gibt einen String wieder. Wieso willst Du das in einen Integer umwandeln? Buchstaben als Zahlen? Und wenn Du das in eine Zahl umgewandelt hättest, wieso vergleichst Du das Ganze wieder auf einen String ('A')?
Ich verstehe den Sachverhalt irgendwie nicht so ganz.Grüsse
//Edit: ich sollte meine Tasten tieferlegen, dann kann ich wenigstens schneller posten
-
wieso vergleichst Du das Ganze wieder auf einen String ('A')?
'A' ist kein String, sondern ein char
@Schally
In der Schule macht ihr C++, PHP, Java, Html und Assembler??? Ich würde sagen, da hat sich euer Lehrer ziemlich verzettelt. Das bringt die Schüler doch mehr durcheinander, als daß es sie voran bringt. Besser wäre es wohl, eine Sprache richtig zu lernen und die anderen hinterher kurz mal anzusprechen, damit man sieht, was es sonst noch so alles gibt.
Wie dem auch sei, berichte uns doch lieber mal von Deinem Fortschritt! Bist Du inzwischen mit dem Programm weitergekommen?
-
Ja weil normal Programmieren wir in Java oder PHP aber da ich mit C++ nur bzw wir alles nur 10Schulstunden gehabt haben is es halt net so einfach!
Aber ich muss sagen ihr helft mir sehr!
Danke!!!So nun hiermal ein Anfang des Verschlüsselung Algorthmus
if(mem_ver_text->Text.IsEmpty()==true) { ShowMessage("Nichts zum Verschlüsseln da!"); } else { lbl_size->Caption=mem_ver_text->Text.Length();//Zum Ausgeben der Länge des Textes ShowMessage("Bitte geben Sie jetzt den Key ein!"); Tfrm_key *key_ein= new Tfrm_key(this);//Zeiger auf Key Eingabe Fenster key_ein->ShowModal();//Zum Aufrufen des Key Eingabe Fensters int buch_zahl;//Zum verschl.Buchstaben errechnen //Beginn des Verschlüsselungsalgorthmus char buchstabe;//um einzeln Buchszaben zu Speichern for (int i=0;i<mem_ver_text->Lines->Count;i++) { for (int j=1;j<=mem_ver_text->Lines->Strings[i].Length();j++) { //Hier nun der Verschlüsselungs Algorithmus // Zeichen holen, ASCII-Wert bestimmen und verschlüsseln: buchstabe = mem_ver_text->Lines->Strings[i][j]; //Buchstabe zur Verinfachung zwischenspeichern buch_zahl = (int)buchstabe+kennwort; // in int Umwandeln und kennwort dazu addieren } } Memo1->Lines->Text=IntToStr(buch_zahl); /*Zu Testzwecken soll es in einem Extra Memo Feld anzeigen*/ //->Hier gibt er mir nur die Zahl,anstatt denn Buchstaben, aus aber ich Caste //doch richtig mit der Funktion oder? }
Kennwort ist aus dem Extra Eingabe Formular das ich gemacht habe!
Hier mal der Codevoid __fastcall Tfrm_key::btn_takeClick(TObject *Sender) { if(edt_key_ein->Text.IsEmpty()==true) { ShowMessage("Geben Sie was ein!"); } else { frm_main->kennwort=edt_key_ein->Text.ToInt(); Close(); } }
-
schally schrieb:
aber die Hilfe vom Borland is auch net grad die beste müsst ihr zugeben!
Die Hilfe von Borland ist genial. (siehe auch: http://www.junix.ch/bcb/help/hilfe.html ) Bedingt allerdings, dass man die Konzepte der Sprache verstanden hat (was bestimmt nicht nach 10 Schulstunden der Fall ist) Womit wr im übrigen wieder bei dem sind was schon andere vorher gesagt haben: Die Grundlagen hast du definitv nicht drauf. Grundlagen bedeutet nicht irgendwas tippen zu können, das hoffentlich läuft...
-
jo ok ich mein in anderen Sprachen is es besser!
aber wenn man halt nur 10Schul Stunden gezeigt bekommen hat und neben her eine Datenbank,PIC -Projekt(Thermometer) bauen und betreuen muss kann man halt net alles könne!
mfg
schally
-
Hi,
*ironie an*
was ist den das für eine Schule,
hört sich für mich eher wie eine
unbezahlte Praktikumsstelle an
*ironie aus*
Grüsse
-
for (int i=0;i<mem_ver_text->Lines->Count;i++) { for (int j=1;j<=mem_ver_text->Lines->Strings[i].Length();j++) { //Hier nun der Verschlüsselungs Algorithmus // Zeichen holen, ASCII-Wert bestimmen und verschlüsseln: buchstabe = mem_ver_text->Lines->Strings[i][j]; //Buchstabe zur Verinfachung zwischenspeichern buch_zahl = (int)buchstabe+kennwort; // in int Umwandeln und kennwort dazu addieren } } Memo1->Lines->Text=IntToStr(buch_zahl);
Hmm, jetzt hast Du den kompletten Text verschlüsselt (mehr oder weniger, es fehlt immer noch die Überlaufabfrage!!!), läßt die verschlüsselten Zeichen im Speicher verfliegen und fügst zuallerletzt den IntegerWert des letzten Zeichens in ein Memo ...
Versuch's mal ungefähr so:Memo1->Lines->Text += (char)buch_zahl;
Und das machst Du nach JEDEM einzelnen verschlüsselten Buchstaben!
-
Nö HBFI ....
aber nun zu meinem Problem zurück ich benutze die Richtige Methode
IntToStr(int_wert)-->Mein Beispiel :IntToStr(buch_zahl);!aber warum gibt er mir nichts aus!
int buch_zahl;//Zum versch.Buchstaben errechnen //Beginn des Verschlüsselungsalgorthmus char buchstabe; String Buchstabe; for (int i=0;i<mem_ver_text->Lines->Count;i++) { for (int j=1;j<=mem_ver_text->Lines->Strings[i].Length();j++) { //Hier nun der Verschlüsselungs Algorithmus // Zeichen holen, ASCII-Wert bestimmen und verschlüsseln: buchstabe = mem_ver_text->Lines->Strings[i][j];//Buchstabe zur Verinfachung zwischenspeichern buch_zahl = (int)buchstabe+kennwort; // in int Umwandeln und kennwort dazu addieren } } Memo1->Lines->Text=Memo1->Lines->Text+(char)buch_zahl;//Buchstabe anzeigen
Nachtrag So Problem gelöst!!!!
mfg
schally
-
Christian Sonder schrieb:
for (int i=0;i<mem_ver_text->Lines->Count;i++) { for (int j=1;j<=mem_ver_text->Lines->Strings[i].Length();j++) { //Hier nun der Verschlüsselungs Algorithmus // Zeichen holen, ASCII-Wert bestimmen und verschlüsseln: buchstabe = mem_ver_text->Lines->Strings[i][j]; //Buchstabe zur Verinfachung zwischenspeichern buch_zahl = (int)buchstabe+kennwort; // in int Umwandeln und kennwort dazu addieren } } Memo1->Lines->Text=IntToStr(buch_zahl);
Hmm, jetzt hast Du den kompletten Text verschlüsselt (mehr oder weniger, es fehlt immer noch die Überlaufabfrage!!!), läßt die verschlüsselten Zeichen im Speicher verfliegen und fügst zuallerletzt den IntegerWert des letzten Zeichens in ein Memo ...
Versuch's mal ungefähr so:Memo1->Lines->Text += (char)buch_zahl;
Und das machst Du nach JEDEM einzelnen verschlüsselten Buchstaben!
Ich wollte jetzt jeden einzelnen Buchstaben durhc gehn und speichern und später in einen Strng schreiben!
-
sorry für den folgenden Beitrag:
Also dafür dass du die Grundlagen beherrschst hat das doch ziemlich lange gedauert
mfg, Micha!
Aso ... Die Borland - Hilfe is super wenn man damit umgehen kann
!
-
jo wir wissen es jetzt alle oder will noch jemand was sagen!
aber wenn du soviel zu machen hast wie ich hier inder schule (auch gleichzeitug ausbildung) dann könntet ihr auch neben her net noch ne andere sprache lernen !Ich dachte Communitys sind da um zu Helfen und nimmer auf einem rumzuhacken der sich gerade in diese sprache einarbeitet!
Weil dieses Projekt zählt 50% meiner Note in der Proggrammierung(stehe auf 1,5 deswegen brauche ich ne gute Note)also sry wenn ich manchmal so angepisst wirke bzw rüber komme is net meine absicht ,müsst ihr verstehn sry!
aber ich muss hier noch 128Rechner betreuen und im mom stellen wir gerade auf neues Linux um da hab ich net so viel Zeit um an diesem Teil zu arbeiten!@Micha
verstehste es jetzt?Thx für eure hilfe
ich werde bestimmt nochmal was fragen;-)
mfg
schally
-
hallo,
ich hab doch sorry gesagt
! Und nebenbei bemerkt hakt keiner auf dir rum, dafür haben wir dir - glaub ich - viel zu sehr geholfen! Und wenn ich dir sage dass ich teilweise 12 - 14 Stunden auf Arbeit verbringe und auch teilweise den ganzen Tag lang nix anderes mache als mich mit Qu(ä)lcode auseinander zusetzen, kann man das mit deinen "strapatzen" sicherlich mindestens gleich setzen
!
mfg, Micha!
-
ja klar aber net wenn du im letzten ausbildungsjahr bist und du alleine mit eine der im ersten jahr azubi ist alles machen musst weil die herrschaften oben nichts anders zu tun haben ausser kaffee zutrinken!
Ja ich sagte ja ihr habt mir sehr geholfen!Das habe ich ja auch nie bestrieten!
Deswegen sag ich nochmalfor all!
mfg
schally
-
Das wird langsam zum Offtopic
! Ich hab ja nix gegen deine Ausbildung gesagt. Ich hoffe nur, dass wenn du dir jetzt für die den Arsch aufreist, die dir wenigstens ne Festanstellung gewähren! Naja, wie dem auch sei, kann mal bitte einer den Thread schließen?
mfg, Micha
[edit] Rechtschreibfehler
[/edit]
-
So nun mal en Update es geht vorwärts;)
Hier mal en Bild
Klickso nun muss ich mir noch was einfallen lassen wie aus dem ganzen memo feld in einzelne Variablen schrieb um sie dann verschlüsseln zu können.
Nee noch net Schliessen!
Bin ja noch nicht fertig ;)!
Mfg und DankeSchally