Thema: Delphi Buchstabenshifter

Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#9

Re: Buchstabenshifter

  Alt 15. Okt 2005, 22:22
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
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat