@braingrenade:
wenn Du das so machst, bekommst Du was Falsches.
Du darfst mit der Schleife erst bei Index 1 anfangen, denn im Index 0 steht die Länge des Strings.
Diese Möglichkeit dürfte weiter helfen (hab se nicht getestet):
Delphi-Quellcode:
procedure umwandeln(var satz:string);
var zeichen:char; i:byte;
begin
for i:=1 to length(satz) do
case satz[i] of
'a'..'y','A'..'Y': satz[i]:=chr(ord(satz[i])+1);
'z': satz[i]:='a';
'Z': satz[i]:='A';
end;
end;
Man könnte jetzt noch die Umlaute mit einbauen, Ziffern, usw.
Das ließe sich dann eleganter über einen eigenen Typ machen.
Bsp:
type tZeichen=('a'..'z','A'..'Z','ä','ö','ü','Ä','Ö','Ü','ß');
Dann reicht ein einfaches inc(zeichen), um von 'z' nach 'A' zu schieben.
Man könnte auch nur kleine ODER große Zeichen verwenden und arbeitet beim Vergleich mit UpperCase oder LowerCase.