AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Caeser Verschlüsselung

Ein Thema von SirMaurice · begonnen am 26. Mär 2019 · letzter Beitrag vom 26. Mär 2019
Antwort Antwort
SirMaurice

Registriert seit: 7. Dez 2018
Ort: Berlin
16 Beiträge
 
Delphi 5 Enterprise
 
#1

Caeser Verschlüsselung

  Alt 26. Mär 2019, 15:26
Hallo, ich bin's mal wieder.

Ich muss ein Programm schreiben welches die Zeichen eines Strings um 'key' Stellen verschiebt. Also wenn der 'key' ein B ist wird aus einem A ein B. Soweit klappt das auch, also für einzelne Zeichen. Da kommt auch mein Problem. Ich verstehe nicht ganz, wie das Ganze für einen kompletten String gehen soll bzw. wie ich die nun umgewandelten Zeichen zu einem String zusammen schließe.

Mein Code sieht im MOment so aus:

Code:
//-------- GetText (public) --------------------------------------------
function TCaeser.GetText : string;
var
i : integer;
begin
  for i:=1 to length(text) do begin
  //##############################
  text:= chr(ord(text[i]) + key);
  end;
  result:=text;
end;
LG Maurice
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Caeser Verschlüsselung

  Alt 26. Mär 2019, 15:28
Hallo,
und wo ist da jetzt Dein Problem?
Außer dem fehlenden [i].

text[i]:= chr(ord(text[i]) + key);

Und natürlich der Tatsache, dass nach der "Verschlüsselung" der Originaltext text auch weg ist.
Besser wäre eine lokale String-Variable.
Heiko

Geändert von hoika (26. Mär 2019 um 15:44 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.443 Beiträge
 
Delphi 7 Professional
 
#3

AW: Caeser Verschlüsselung

  Alt 26. Mär 2019, 15:36
Delphi-Quellcode:
function TCaeser.GetText : string;
var
i : integer;
begin
  for i := 1 to length(text) do begin
    // Diese Zuweisung ist falsch. Text wir damit durch das erste veränderte Zeichen überschrieben.
    text := chr(ord(text[i]) + key);
  end;
  result := text;
end;
Delphi-Quellcode:
function TCaeser.GetText : string;
var
i : integer;
begin
  for i := 1 to length(text) do begin
    // eventuell so
    text[i] := chr(ord(text[i]) + key);
  end;
  result := text;
end;
Delphi-Quellcode:
function TCaeser.GetText : string;
var
i : integer;
begin
  Result := '';
  for i := 1 to length(text) do begin
    Result := Result + chr(ord(text[i]) + key);
  end;
end;
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: Caeser Verschlüsselung

  Alt 26. Mär 2019, 15:42
OffTopic
Zitat:
Ich muss ein Programm schreiben welches die Zeichen eines Strings um 'key' Stellen verschiebt.
Psychologisch gesehen, gehst du falsch an die Sache ran.

Sage dir selber, dass du ein solches Programm schreiben darfst und nicht musst. Dann geht vieles leichter.
  Mit Zitat antworten Zitat
SirMaurice

Registriert seit: 7. Dez 2018
Ort: Berlin
16 Beiträge
 
Delphi 5 Enterprise
 
#5

AW: Caeser Verschlüsselung

  Alt 26. Mär 2019, 16:30
Zitat:
Hallo,
und wo ist da jetzt Dein Problem?
Das [i] hatte ich vergessen, danke dafür schonmal.
Das Problem ist, dass wenn ich einen "Key:= ord(Z) - 65" habe, also die Verschiebung 25 Stellen beträgt und dies mit der Lösung aus der anderen Antwort berechne ein Zeichen "[" rauskommt, es sollte jedoch ein "B" sein.
Ich müsste also jedes mal ein neues Alphabet hinten dranhängen, wenn "ord(text[i]) + key" größer als "ord([)" , also 91, wird.

Das könnte man theoretisch mit einer if-Anweisung umsetzen, ich weiß nun nur nicht, wie ich das zu einer vernünftigen Lösung mit der Form "Result:=" verarbeite.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

AW: Caeser Verschlüsselung

  Alt 26. Mär 2019, 16:36
[QUOTE=SirMaurice;1428802]
Zitat:
Das Problem ist, dass wenn ich einen "Key:= ord(Z) - 65" habe, also die Verschiebung 25 Stellen beträgt und dies mit der Lösung aus der anderen Antwort berechne ein Zeichen "[" rauskommt, es sollte jedoch ein "B" sein.
Wenn ich zum Testen Caption := Chr(Ord('Z') - 25) ausführen lasse, erhalte ich ein A. Weder ein B noch ein [.
Der Fehler liegt also woanders. Und außerdem. Warum -65? Um von ASCII Z (90) auf Ascii A zu kommen, rechnet man -25.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz