So
nach ein bisschen rumprobieren habe ich hier die ultimative funktion!!!
naja, ok, so toll ist sie nun auch wieder nicht, aber die funktiuniert und ist nicht allzu kompliziert....
Delphi-Quellcode:
function ShiftChars(Value: String; ShiftDir: ShortInt = 1; Chars: String = 'abcdefghijklmnopqrstuvwxyzäöü'): String;
function GetChar(ID: Integer; Lower: Boolean):Char;
begin
if Lower
then Result:=LowerCase(Chars[ID])[1]
else Result:=UpperCase(Chars[ID])[1];
end;
function PosInChars(Val: Char):Integer;
begin
Result:=Pos(LowerCase(Val),LowerCase(Chars));
end;
function PosOrTrunc(Val: Integer): Integer;
begin
if Val>0
then Result:=Val
else Result:=0;
end;
var i: Integer;
L: Boolean;
SprungID, ZielID: Integer;
begin
SprungID:=PosOrTrunc(ShiftDir*Length(Chars)-1)+1;
ZielID:=PosOrTrunc(ShiftDir*(-1)*Length(Chars)-1)+1;
for i:=1 to Length(Value) do
begin
L:=LowerCase(Value[i])=Value[i];
if PosInChars(Value[i])=SprungID then
Value[i]:=GetChar(ZielID,L)
else if PosInChars(Value[i])>0 then
Value[i]:=GetChar(PosInChars(Value[i])+ShiftDir,L);
end;
Result
für dein Beispiel wäre der Aufruf wie folgt:
Edit2.Text:=ShiftChars(Edit1.Text,-1);
Edit:
Naja, eben doch nicht ultimativ, eher fehlerhaft...aber jetzt