Entwickler-Ecke
Sonstiges (Delphi) - Cäsar Code entschlüsseln
marvin521993 - Do 25.01.07 18:00
Titel: Cäsar Code entschlüsseln
hi,
meine frage ist wie ich ein verschlüsselten text in einem memo in einem anderen memo ausgeben kann!!!
kann mir da jemand helfen?
Jann1k - Do 25.01.07 18:07
Du liest von jeder Zeile in Memo1 jedes Zeichen ein, verschlüsseltst/entschlüsselst es und fügst es in Memo2 wieder ein.
marvin521993 - Do 25.01.07 18:22
jaja dis is mir schon klar meine frage is eher die wie ich ihm das beibringen kann
DarkLord05 - Do 25.01.07 18:44
Funktion 1: Ord()
Funktion 2: Chr()
Damit kannst du zeichen umwandeln in ASCII (sind zahlen), dieses machst du einfach, zählst 13 zu den zahlen und gehst zum nächsten Buchstaben. Zurück geht genauso ... nur halt nicht 13 dazu, sondern -13. Fertig
marvin521993 - Fr 26.01.07 15:12
kann mir da jemand ein quelltext geben?
danke
elundril - Fr 26.01.07 15:16
nur wenn du versprichst das du dich damit beschäftigst! nicht das wir deine aufgabe machen!!
lg el
marvin521993 - Fr 26.01.07 15:19
ja dis würd ich sowieso machen sonst würds mir ja eh nichts bringen
danke:-)
Marc. - Fr 26.01.07 15:19
Jetzt hat mir elundril meinen Text vorweggenommen ... :roll:
Du lernst nicht aus fertigem Quelltext! Besser ist es, wenn du dir das Zeug selbst aneigenest, wobei wir die höchstens ein paar Hilfestellungen geben. ;)
//edit: wenn du aber darauf bestehst, dir fertigen Quelltext anzuschauen, kann ich dir auch ausnahmsweiße meinen geben :)
marvin521993 - Fr 26.01.07 15:22
ich hab da echt keine ahnung wie ich da anfangen sollte
und was ich dem dann alles genau sagen muss
Marc. - Fr 26.01.07 15:25
Das ist meine Funktion:
ich bin mal essen - danach erläutere ich sie dir mal ;)
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:
| function VS(Text: string; i: integer): string; const cletter: array[1..26] of Char = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); var x, z: integer; begin Result := ''; text := uppercase(Text);
for x := 1 to length(Text) do begin if not (Text[x] in ['A'..'Z']) then result := result + Text[x] else for z := 0 to 26 do if (Text[x] = cletter[z]) then if ((Z + i) > 26) then Result := Result + cletter[(z + i) - 26] else Result := Result + cletter[z + i] end; result := lowercase(result); end; |
Gausi - Fr 26.01.07 15:27
So ersetzt man alle A's in einem Memo durch ein B und zeigt das im zweiten Memo an:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); var i: integer; str: String; begin str := Memo1.Text; for i := 0 to length(str) - 1 do begin if str[i] = 'A' then str[i] := 'B'; end; Memo2.Text := str; end; |
So mal als Einstieg in das Thema.
elundril - Fr 26.01.07 15:27
also mit einer For-Schleife die von dem anfang bis zum ende läuft kannst du jedes Zeichen auslesen.
Delphi-Quelltext
1: 2: 3:
| for Index:=iAnfang to iEnde do begin end; |
mit einer Rechteckigen klammer am ende von einen string bekommst du das zeichen an der position vom string. Also:
Delphi-Quelltext
1: 2:
| cZeichen:=sMyString[index]; |
dabei muss man sich in erinnerung rufen das man mit
den text von Memo in einem string bekommt.
und das ganze kann man mit
Delphi-Quelltext
1:
| sAusgabestring:=sAusgabestring+cZeichen; |
wieder zusammensetzen.
so jetzt weißt du alles was du brauchst. viel spass beim Basteln!!
lg el
Marc. - Fr 26.01.07 15:39
Gausi hat folgendes geschrieben: |
So ersetzt man alle A's in einem Memo durch ein B und zeigt das im zweiten Memo an: [...]
Delphi-Quelltext 1: 2: 3: 4:
| str: String; begin str := Memo1.Text; for i := 0 to length(str) - 1 do | |
Ein String beginnt immer bei 1 und nicht bei 0 oder irre ich mich da? :roll:
elundril - Fr 26.01.07 15:41
stimmt! aber eigentlich egal da der compiler keine Exeption auswirft. der übergeht das einfach!!
lg el
Marc. - Fr 26.01.07 15:42
Ja, aber das letzte Zeichen wird dann missachtet! ;)
elundril - Fr 26.01.07 15:44
stimmt glaub ich auch nicht da die obere grenze gleich bleibt.
lg el
marvin521993 - Fr 26.01.07 15:59
irgendwo muss ich doch jetz bei der formel von gausi ein lowercase einführen nur an welchter stelle?
elundril - Sa 27.01.07 12:38
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); var i: integer; str: String; begin str := lowercase(Memo1.Text); for i := 0 to length(str) - 1 do begin if str[i] = 'A' then str[i] := 'B'; end; Memo2.Text := str; end; |
Delete - Sa 27.01.07 13:39
Marc. hat folgendes geschrieben: |
| Ein String beginnt immer bei 1 und nicht bei 0 oder irre ich mich da? :roll: |
tja, nicht immer. null terminierte strings beginnen bei 0
Gausi - Sa 27.01.07 13:58
Ja, die normalen Strings, die man so bei Delphi findet, beginnen bei 1, d.h. das erste Zeichen eines Strings kann man mit meinString[1] ansprechen.
Die nullterminierten Strings findet man afaik eher in der C-Welt, oder wenn man mit der Windows-Api arbeitet. Die Dinger heißen dann PChar.
Insofern war der Einwand zu meinem Code berechtigt. :oops:
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!