drum fragte ich ja nach dem letzen Code,
denn wenn ich ein
' ' : s1 := s1 + ' ';
in das CASE reinmach, dann bleibt das Leerzeichen erhalten.
nja, abgesehn, daß bei deiner Verschlüsselung die Berechnung nicht stimmte ... wie gesagt, du mußt auf den Wertebereich achten (also daß alles innerhalb der Buchstaben bleibt) und das Leerzeichen wird unverändert beibehalten.
kannst ja gern das Ergebnis deiner Funktion hiermit vergleichen
http://www.ivhp.de/files/caesar.htm
wenn das Selbe rauskommt, daß isses sozusagen richtig
Delphi-Quellcode:
PROCEDURE TForm1.FormCreate(Sender: TObject);
VAR s, s1, aus:
String;
sch, i,
ASCII: Integer;
BEGIN
sch := StrToInt(lbein.text);
s := edein.Text;
s1 := '
';
FOR i := 1
TO Length(s)
DO
CASE s[i]
OF
'
A'..'
Z' : s1 := s1 + s[i];
'
a'..'
z' : s1 := s1 + UpCase(s[i]);
'
ß' : s1 := s1 + '
SS';
'
ä', '
Ä' : s1 := s1 + '
AE';
'
ö', '
Ö' : s1 := s1 + '
OE';
'
ü', '
Ü' : s1 := s1 + '
UE';
'
' : s1 := s1 + '
';
END;
aus := '
';
FOR i := 1
to Length(s1)
DO
BEGIN
IF s1[i] <> '
'
THEN
BEGIN
ASCII := Ord(s1[i]) + sch;
//WHILE ASCII > Ord('Z') DO ASCII := ASCII - 26;
WHILE ASCII > Ord('
Z')
DO ASCII :=
ASCII - (Ord('
Z') - Ord('
A') + 1);
aus := aus + Chr(
ASCII);
END
ELSE
aus := aus + s1[i];
END;
edaus.Text := aus;
END;