Autor Beitrag
toppaa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.
ausblenden Delphi-Quelltext
1:
Chr(Ord(Buchstabe) + 2)					


Auf die einzelnen Buchstaben eines Strings kannst du wie auf ein Array zugreifen:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: 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 :D


mfg toppaa

Moderiert von user profile iconNarses: überflüssige Leerzeilen entfernt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 27.12.08 01:34 
Moin und :welcome: im Forum!

user profile icontoppaa hat folgendes geschrieben Zum zitierten Posting springen:
ich muss das bald drauf haben sonst hab ich problem in der schule :D
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? Suche in: Delphi-Forum, Delphi-Library 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... 8)

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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 27.12.08 01:40 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Hast du denn schonmal in die Suche geschaut? Suche in: Delphi-Forum, Delphi-Library CAESAR VERSCHLÜSSELUNG Da sollte sich schon was finden.


Theoretisch JA, praktisch liefert dieser Link leider keine Ergebnisse. Suche in der Entwickler-Ecke VERSCHLÜSSLUNG oder Suche in der Entwickler-Ecke CAESAR scheint was leeres zu liefern. Suche in der Entwickler-Ecke 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 27.12.08 01:42 
Moin!

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Theoretisch JA, praktisch liefert dieser Link leider keine Ergebnisse.
Stimmt allerdings... :gruebel: Wenn man manuell nach den Begriffen sucht, klappts. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.12.08 01:47 
user profile icontoppaa hat folgendes geschrieben Zum zitierten Posting springen:
kannst du mir nicht einfach mal ein quellcode reinschreiben
Nein, davon lernst du nichts, und da es vermutlich um eine Note für eine Aufgabe aus der Schule geht wäre es Beihilfe zum Betrug, wenn ich das mache und du das dann als deine Arbeit abgibst. :nixweiss:

user profile icontoppaa hat folgendes geschrieben Zum zitierten Posting springen:
bei der es ein edit feld und ein button gibt
einfacher code mit einer verschiebung von 1
Ich habe schon alles geschrieben, was du dafür brauchst. Das musst du nur noch zusammensetzen und in einer for-Schleife alle Buchstaben durchgehen.

An der Stelle weise ich mal noch auf den Crashkurs hier hin, falls dir z.B. Schleifen nicht klar sind:
crashkurs.christian-stelzmann.de

user profile icontoppaa hat folgendes geschrieben Zum zitierten Posting springen:
aber ich muss das bald drauf haben sonst hab ich problem in der schule
Wenn du nicht selbst etwas dafür tust, dann ist das ja auch gut so.
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Sa 27.12.08 01:52 
also so sehen mal meine versuche aus

ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.12.08 02:01 
Woran erinnert mich der Fehler mit der for-Schleife? :gruebel:
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:
user profile icontoppaa hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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.
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: 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 :D
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 :

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.12.08 13:26 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Zudem wird der ergebende Buchstabe jeweils als einziges in das Edit geschrieben.
;-)
Du überschreibst ja mit dem einen Buchstaben jeweils den gesamten Inhalt des Edits. Du musst aber den alten Inhalt auch wieder einfügen, sonst bleibt immer nur der letzte Buchstabe drin und die anderen werden wieder überschrieben.
ausblenden Delphi-Quelltext
1:
Edit2.Text := Edit2.Text + 'Neu';					
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
Edit2.Text := Edit2.Text + 'Neu';
                   d         x
Und so kommt dann d + x, also dx in Edit2.Text.
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Sa 27.12.08 17:25 
dankeschön habs hinnbekommen.:):):)

hat mir sehr geholfen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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. :D

user profile icontoppaa (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 ???

ausblenden 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Sa 27.12.08 18:58 
ok es funktioniert danke nochmals finde das hier ein sehr tolles forum
mfg toppaa
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: 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??
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.12.08 19:12 
user profile icontoppaa hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
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;
Da löschst du noch innerhalb der Schleife. Die Schleife geht aber bis Length(Edit1.Text), und das war 4. Die Buchstaben existieren aber gar nicht mehr, und deshalb gibt es Probleme, wenn du auf etwas zugreifst was du gerade überschrieben hast. ;-)

Die Zeichencodes, die du dann bekommst, sind nämlich dann nicht unbedingt von Buchstaben sondern von nicht anzeigbaren Steuerzeichen u.ä.