Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Cäsar Verschlüsselung Programmieren in der Schule OMG
Shadowlucker - Fr 12.03.10 19:44
Titel: Cäsar Verschlüsselung Programmieren in der Schule OMG
reset
uall@ogc - Fr 12.03.10 20:19
also zuerst solltest du von deinem Code die globalen Variablen entfernen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| var Form1: TForm1; implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var text2 : string; b: integer; text: string; zaehler: integer; begin
label2.Caption:= '';
for zaehler:=1 to Length(edit1.Text) do begin text:= edit1.Text; text2:= text; text2 := text2+ char(ord(text[zaehler])+6)
end; Label2.Caption := text2; end; |
dann brauchst du nich immer edit1.text auszulesen sondern sollte zugriff auf die GUI entfernen (dann kannst du den code später in eine funktion auslagern)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| var Form1: TForm1; implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var text2 : string; b: integer; text: string; zaehler: integer; begin text := edit1.Text;
text2 := ''; for zaehler:=1 to Length(text) do begin text2 := text2 + char(ord(text[zaehler])+6); end;
Label2.Caption := text2; end; |
so und um nur Buchstaben anzuzeigen spaltest das ganze nochmal auf (ist für dich leichter)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| procedure TForm1.Button1Click(Sender: TObject); var text2 : string; b: integer; text: string; zaehler: integer; asciiwert: Byte; begin text := edit1.Text;
text2 := ''; for zaehler:=1 to Length(text) do begin asciiwert := ord(text[zaehler]);
asciiwert := asciiwert + 6; text2 := text2 + char(asciiwert); end;
Label2.Caption := text2; end; |
hier die Tabelle:
http://www.torsten-horn.de/techdocs/ascii.htm
Shadowlucker - Fr 12.03.10 20:36
reset
uall@ogc - Fr 12.03.10 20:39
Ja den Code dazu hab ich dir auch net gegeben. Ein wenig musst schon selbst machen :)
Die Stellen wo dein Code reinkommt (z.B. mit if-Abfragen) hab ich aber im letzten Post angegeben.
Shadowlucker - Fr 12.03.10 20:41
reset
Jakob_Ullmann - Fr 12.03.10 20:59
Shadowlucker hat folgendes geschrieben : |
mhh ich habe mal den code mir mal angeschaut und getetet scheint alles zu funktionieren, soll ich jetzt einfach mit If Fragen machen?
ach ja noch etwas > asciiwert: Byte; was bedeutet dieser befehl? bringt mir nichts, wenn ich nur Copy Paste mache...
Moderiert von Christian S.: Vollständiges Zitat des vorhergehenden Beitrags entfernt |
asciiwert ist einfach der Name der Variablen. Sie ist eine Ganzzahl. Dabei heißt Byte, dass dafür 1 Byte, also 8 Bit, Arbeitsspeicher reserviert werden, es kann also die Werte 0 bis 255 annehmen.
Integer hat glaube ich seinen Bereich mehrmals geändert, und ich kann dir jetzt nicht sagen, wie viel Byte ein Integer hat. Dürfte aber herauszufinden sein. Jedenfalls ist Integer größer als Byte.
Nebenbei gibt es noch WORD (2 Bytes) und DWORD (double word, 4 Bytes). Weitere Integer-Typen (u. a. Cardinal) findest du in der Delphi-Hilfe, wenn du einfach mal "Integer" als Suchbegriff eingibst.
Auf jeden Fall ist die 1-Byte-Begrenzung von daher sinnvoll, weil ein ASCII-Code auch nur von 0 bis 255 gehen kann. Was ASCII ist, weißt du ja sicher.
Shadowlucker: Programmieren ist reine Übungssache. Nach einiger Zeit bekommt man dann ein Gefühl für die Sprache und die Programme schreiben sich fast von selbst.
Shadowlucker - Sa 13.03.10 18:08
reset
elundril - Sa 13.03.10 18:13
Shadowlucker hat folgendes geschrieben : |
naja programmieren ist nicht und wird nie mein Ding sein ;D |
warum tust du es dann?
lg elundril
Shadowlucker - Sa 13.03.10 20:21
elundril hat folgendes geschrieben : |
Shadowlucker hat folgendes geschrieben : | naja programmieren ist nicht und wird nie mein Ding sein ;D |
warum tust du es dann?
lg elundril |
ich wusste nicht, dass es so schwer sein wird....
Puck war viel einfacher. Damals wo ich einen anderen Lehrer hatte, gab er uns den Quellcode vor also in "Sätze" und nicht sowas wie erstelle ein Proogramm, dass die Verschlüsselung hat. Ich finde, dass es so viel schwerer ist. Naja als LK schon iwie eine Fehlwahl...
elundril - Sa 13.03.10 20:23
aso. naja, vielleicht freundest du dich noch mit Informatik an. Wenn nicht, kannst du ja schon mal ne Studienrichtung für dich persönlich ausschließen. :D
Shadowlucker - Sa 13.03.10 20:37
reset
F34r0fTh3D4rk - Mi 17.03.10 12:37
Ich mache mir etwas Sorgen bei diesen beiden Zeilen (ich denke der zweite Kommentar impliziert genau was ich meine):
Delphi-Quelltext
1: 2: 3: 4: 5:
| asciiwert := asciiwert + 6; text2 := text2 + char(asciiwert); |
Werden Werte, die größer sind als 255 von
char() korrekt behandelt?
(*)
Ich gehe mal davon aus, dass die komplette ASCII-Tabelle als Alphabet für die Verschlüsselung verwendet werden soll.
Sollen es nur Buchstaben und/oder Zahlen sein, wird das Ganze etwas komplizierter.
Falls
(*) mit einem "ja" zu beantworten ist, sollte man folgendes tun:
Delphi-Quelltext
1:
| asciiwert := (asciiwert + 6) mod 256; |
Siehe auch:
MODULO
Dies sorgt dafür, dass
asciiwert im Bereich
0..255 bleibt. Die ersten 32 Zeichen werden vermutlich eh nicht sinnvoll dargestellt, da es sich hierbei um
STEUERZEICHEN handelt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!