Autor |
Beitrag |
toppaa
      
Beiträge: 35
Windows XP Professional
|
Verfasst: Sa 27.12.08 00:21
hi,
ich hoffe ,dass ich hier richtig bin.
Habe mich seit ein paar Monaten mit Delphi "ein wenig" beschäftigt (taschenrechner,Umrechnungen,einfache Funktionen...)
Nun wollte ich mal sowas machen mit Cäsar Verschlüsselung machen aber ich habe keine Ahnung wie das Funktioniert. Ich weis zwar wie Cäsar funktioniert,aber keine Ahnung wie ich das programmieren soll kann mir wer da helfen oder Tipps geben am besten wäre ein Quellcode mit erklärung einfaches Bsp.
Danke schonmal im vorraus
Mfg Toppaa
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Sa 27.12.08 00:28
Wie weit bist du denn schon, bzw. wo genau kommst du nicht weiter?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
toppaa 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: Sa 27.12.08 00:35
emm ja das problem is ich weis gar nicht wo ich da anfangen soll denn ich weis ja nich wie ich das programmieren soll dass er z.b mache den buchstaben a zu d unsoweiter
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.12.08 00:54
Den Asciiwert eines Buchstabens bekommst du mit Ord, dann kannst du normal damit rechnen. Mit Chr wandelst du die Zahl wieder in einen Buchstaben um. Delphi-Quelltext 1:
| Chr(Ord(Buchstabe) + 2) |
Auf die einzelnen Buchstaben eines Strings kannst du wie auf ein Array zugreifen: Delphi-Quelltext 1: 2: 3:
| DeinString[1] DeinString[2] ... |
Tipp: Im Forum gibt es zu dem Thema bereits Beiträge, die auch entsprechenden Code enthalten.
|
|
toppaa 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: Sa 27.12.08 01:28
kannst du mir nicht einfach mal ein quellcode reinschreiben
bei der es ein edit feld und ein button gibt
einfacher code mit einer verschiebung von 1
danke schonmal im vorraus
ps: wenns geht noch kleine erklärung neben drannn
entschuldigt bitte meine "forderungston" aber ich muss das bald drauf haben sonst hab ich problem in der schule
mfg toppaa
Moderiert von Narses: überflüssige Leerzeilen entfernt
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 27.12.08 01:34
Moin und  im Forum!
toppaa hat folgendes geschrieben : | ich muss das bald drauf haben sonst hab ich problem in der schule  |
Das "Problem" scheinst du schon zu haben (in Form einer Nachprüfung, schätze ich mal), sonst würdest du ja nicht hier aufgelaufen sein.
Hast du denn schonmal in die Suche geschaut? CAESAR, VERSCHLÜSSELUNG Da sollte sich schon was finden.
Ansonsten: zeig uns doch mal deine Code(-Versuche), auf "Schulprobleme" hin wird´s hier normalerweise (zu Recht!) schwer, Code abzugreifen...
Damit kein Missverständnis aufkommt: wir helfen gerne, aber nicht ohne deinen Einsatz!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
Zuletzt bearbeitet von Narses am Sa 27.12.08 01:41, insgesamt 1-mal bearbeitet
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 27.12.08 01:40
Theoretisch JA, praktisch liefert dieser Link leider keine Ergebnisse. VERSCHLÜSSLUNG oder CAESAR scheint was leeres zu liefern. SUBSTITUTION könnte aber ggf. als Suchbegriff helfen.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 27.12.08 01:42
Moin!
BenBE hat folgendes geschrieben : | Theoretisch JA, praktisch liefert dieser Link leider keine Ergebnisse. |
Stimmt allerdings...  Wenn man manuell nach den Begriffen sucht, klappts.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.12.08 01:47
|
|
toppaa 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: Sa 27.12.08 01:52
also so sehen mal meine versuche aus
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); var a,c:integer; begin for c := 1 to length(edit1.text) do; a:=ord(edit1.text[c]); a:=a+3; edit1.text:=chr(a) end;
end. |
a=der Text
c=glieder
es gibt 1 edit und 1 button
mfg toppaa
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.12.08 02:01
Woran erinnert mich der Fehler mit der for-Schleife?
Ach ja: www.delphi-forum.de/viewtopic.php?t=70517
Wenn du etwas weiter unten in dem Thread schaust, dann siehst du auch die Korrekturen.
Die beiden Fehler: toppaa hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Button1Click(Sender: TObject); var a,c:integer; begin for c := 1 to length(edit1.text) do; a:=ord(edit1.text[c]); a:=a+3; edit1.text:=chr(a) | |
Die Schleife soll ja als Inhalt die nächsten Zeilen haben, da fehlt ein begin..end darum. Delphi-Quelltext 1: 2: 3: 4:
| for c := 1 to length(edit1.text) do begin ... end; |
Zudem wird der ergebende Buchstabe jeweils als einziges in das Edit geschrieben. Der gehört aber wieder in Edit1.Text[c], also an die Stelle des einzelnen Buchstabens, also Edit1.Text[c] := ....
|
|
toppaa 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: Sa 27.12.08 12:17
ok danke erst mal ich hab jetzt zum laufen bekommen mit 2 edits halt sieht meiner meinung nach besser aus
aber ich habe ein problem wenn ich jetzt ganze wörter eingebe wird glaube ich immer nur der letze davon verschlüsselt
wo ist der fehler?
im moment sieht der quellcode so aus :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var a,c:integer; begin for c := 1 to length(edit1.text) do begin a:= ord(edit1.text[c]); a:= a+3; edit2.text:= chr(a); end;
end;
end. |
Danke nochmal für eure Hilfe
Mfg Toppaa
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.12.08 13:26
|
|
toppaa 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: Sa 27.12.08 13:33
emmmmmmm ja ich verstehe was du sagst.
aber ich weis nicht wie ich das mit deinem bsp. verstehen soll
ich will ja dem programm sagen dass er jeden buchstaben im edit um 3 verschieben soll nur leider verstehe ich auch wirklich nicht dein bsp
vllt. bin auch bissjen doof oder so kannst mir vllt. noch ein einfacheres oder genauers bsp geben das mir auf die sprünge hilf ?
danke für dein engagement jaenicke in diesem thread
danke auch an die anderen
mfg toppaa
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.12.08 13:43
Du solltest dir mal überlegen was der Quelltext eigentlich macht, das Verschieben funktioniert ja schon richtig, nur dass nur der letzte Buchstabe im Edit2 steht am Ende.
Der Grund ist, dass du jedesmal sagst edit2.text := chr(a);, Edit2.Text ist der gesamte Inhalt des Edits, und da legst du jetzt Chr(a) rein. Das ist der aktuelle Buchstabe.
Beispiel: In Edit1 wurde eingegeben "auto".
Beim ersten Schleifendurchlauf wird aus dem a ein d. Dieses d kommt jetzt in Edit2.Text hinein.
Beim zweiten Durchlauf wird aus dem u ein x. Jetzt soll aber dx in Edit2.Text, stattdessen legst du nur x hinein. Das d geht verloren.
Deshalb musst du den alten Inhalt auch wieder einfügen: Delphi-Quelltext 1: 2:
| Edit2.Text := Edit2.Text + 'Neu'; d x | Und so kommt dann d + x, also dx in Edit2.Text.
|
|
toppaa 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: Sa 27.12.08 17:25
dankeschön habs hinnbekommen.  
hat mir sehr geholfen.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.12.08 18:35
Per PN zu fragen ist nicht so gut, weil spätere Leser des Threads davon nicht profitieren können. Und es geht ja in einem Forum nicht nur darum aktuell Antworten zu bieten sondern auch darum, dass diese später von anderen gefunden werden können.
Und btw. hätte ich auch früher geantwortet, ich habe die Seite nicht neu geladen sondern nur die letzten 10, so dass ich die PN schlicht nicht gesehen habe.
toppaa (per PN) hat folgendes geschrieben: | hi,
ich habe nun das programm soweit fertig gestellt mit einem button für verschlüsselung und einem für die entschlüsselung
nun wenn ich jetzt z.b a zum verschlüsseln eingebe bleibt das a im edit feld stehen und geht ja nicht weg umgekehrt genauso.
wenn ich jetzt aber den befehl noch einfüge mit edit1.text:=' ';
dann wird aufeinmal nicht mehr richtig entschlüsselt b.z.w verschlüsselt.
was ist falsch ???
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: 28: 29:
| procedure TForm1.Button1Click(Sender: TObject); var a,c:integer; begin for c := 1 to length(edit1.text) do begin a:= ord(edit1.text[c]); a:=a+1; edit2.text:=edit2.Text+chr(a); edit1.text:=' '; end;
end;
procedure TForm1.Button2Click(Sender: TObject); var a,c:integer; begin for c := 1 to length(edit2.text) do begin a:=ord(edit2.text[c]); a:=a-1; edit1.Text:=edit1.text+chr(a); edit2.Text:=' ' end;
end;
end. | |
Der Fehler ist, dass du das Löschen innerhalb der Schleife, also bereits nach dem ersten Buchstaben machst. Und deshalb ist der Rest des eingegebenen Textes dann bereits gelöscht.
Du musst die Zeile also nur hinter das darauf folgende end; schreiben. Übrigens musst du da auch kein Leerzeichen nehmen, du kannst auch das Editfeld ganz leeren: Edit2.Text := '';
Eine richtige Einrückung hilft auch dabei zu erkennen was in einer Schleife steht und wie alles zusammenhängt: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); var a, c: Integer; begin for c := 1 to Length(Edit1.Text) do begin a := Ord(Edit1.Text[c]); a := a + 1; Edit2.Text := Edit2.Text + Chr(a); end; Edit1.Text := ''; end; |
|
|
toppaa 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: Sa 27.12.08 18:58
ok es funktioniert danke nochmals finde das hier ein sehr tolles forum
mfg toppaa
|
|
toppaa 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: Sa 27.12.08 19:01
neustes problem
wenn ich z.b auto jetzt eingebe dann kommen in dem solche kasten weiste was ich meine??
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: 28: 29:
| procedure TForm1.Button1Click(Sender: TObject); var a,c:integer; begin for c := 1 to length(edit1.text) do begin a:= ord(edit1.text[c]); a:=a+1; edit2.text:=edit2.Text+chr(a); edit1.text:=' '; end; edit1.text:='';
end;
procedure TForm1.Button2Click(Sender: TObject); var a,c:integer; begin for c := 1 to length(edit2.text) do begin a:=ord(edit2.text[c]); a:=a-1; edit1.Text:=edit1.text+chr(a);
end; edit2.Text:='';
end;
end. |
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.12.08 19:12
|
|