Hallo,
Da mich das jetzt doch brennend interessiert hat, hab ich jetzt meine Version nochmals überarbeitet und einige Kleingkeiten, die in diesem Thread angesprochen wurden beseitigt.
Delphi-Quellcode:
function Verschluessle(Text: String) : String;
var
Key: array[1..3] of String = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz', '0123456789');
{ ... }
function Verschluessle(Text: String) : String;
var i, j, k: Integer;
begin
Result := ''; //Ergebniss zurücksetzen
for i := 1 to length(Text) do //Jeden Buchstaben des Textes durchgehen
begin
for j := 1 to 3 do //Jeden Schlüssel durchgehen
begin
for k := 1 to length(Key[j]) do
begin
if Text[i] = Key[j][k] then
begin
if not (k+1 > length(Key[j])) then //Überprüfen ob man schon ebim letzten Buchstaben ist
Result := Result + Key[j][k+1]
else
Result := Result + Key[j][1];
end;
end;
end;
if Text[i] = ' ' then //If Bedingung weglassen wenn man keine Leerstellen will.
Result := Result + ' ';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Text := Verschluessle(Memo1.Lines.Text); //Möglicher aufruf der Funktion
end;
Gelöst hab ich das mit dem z zu A, Z zu 1, das ich 3 unterschiedliche Schlüssel nehme, bzw. für jede Gruppe ein eigenen.
Und wenn man am Ende vom der "Schlüsselgruppe" ankommt wird man einfacher wieder nach vorne gesetzt. (Stichwort: If-Abfrage)
[Edit1] Hups kleiner Denkfehler drin. Das mit den Leerstellen muss ich doch jetzt nocheinmal testen ..
[Edit2] So nun bleiben die Leerstellen erhalten
...
MFG
Maximus