Thema: Delphi Buchstabenshifter

Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

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

Re: Buchstabenshifter

  Alt 15. Okt 2005, 21:45
dann will ich auchmal vorschlagen...
Delphi-Quellcode:
S:=Edit1.Text;
for i:=1 to Length(S) do
  if S[i]='Athen S[i]:='Z'
  else if S[i]='athen S[i]:='z'
  else S[i]:=Chr(Ord(S[i])-1);
ohne Umlaute leider...

Edit:
Achso, muss es überhaupt Case-Sensitiv sein?

wenn nicht:

Delphi-Quellcode:
S:=LowerCase(Edit1.Text);
for i:=1 to Length(S) do
  if S[i]='athen S[i]:='z'
  else S[i]:=Chr(Ord(S[i])-1);
Und Noch ein Edit...Nicht hoch sondern runter Shiften!!!

Und noch eine Version mit Umlauten...

Delphi-Quellcode:
const
  Chars: String = ('ab...yzäöü');

begin
//Nicht Case-Sensitiv
  for i:=1 to Length(S) do
    Case Pos(S[i],Chars) of
      1..27: S[i]:=Chars[Pos(S[i],Chars)+1];
      28: S[i]:=Chars[1];
    end;

//Case-Sensitiv mit allen möglichen Zeichen
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;


begin
  for i:=1 to Length(S) do
    begin
    L:=LowerCase(S[i])=S[i];
    Case PosInChars(S[i]) of
      1..27: S[i]:=GetChar(PosInChars(S[i])+1,L);
      28: GetChar(1,L)
    end;
  end;
end;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat