Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Wie schaffe ich eine Stringmischung ohne Zufall

  Alt 10. Jun 2018, 13:10
Delphi-Quellcode:
function MixStringEnc(Input1, Input2: String): String;
var
  i: Integer;
begin
  Result := '';
  for i := 1 to Length(Input1) do
  begin
    Result := Result + Input1[i];
    if Length(Input2) >= i then Result := Result + Input2[i];
  end;
  Result := Result + Char($255);
  for i := i to Length(Input2) do
    Result := Result + Input2[i];
end;

procedure MixStringDec(Input: String; var Output1, Output2: String);
var
  i: Integer;
  Split: Boolean;
begin
  Split := False;
  Output1 := '';
  Output2 := '';
  i := 1;
  repeat
    if Input[i] = Char($255) then Split := True;
    if ((not Split)and(Input[i]<>Char($255))) then Output1 := Output1 + Input[i];
    if ((length(Input) >= i+1)and(Input[i+1]<>Char($255))) then Output2 := Output2 + Input[i+1];
    Inc(i,2);
  until i >= Length(Input);
end;
Hier ist eine Variante die Du auch wieder zurückverwandeln kannst, bei Anzeige vom kodierten musst Du das Char($255) rausfiltern oder tausche das Char($255) mit was auch immer Du magst aus, aber bedenke das es ohne diesen einen speziellen Trenner keine korrekte Rückverwandlung möglich ist!

So sieht es aus wenn man es Anwendet:
Delphi-Quellcode:
 Memo1.Lines.Add('');
 Memo1.Lines.Add(''+MixStringEnc('Hans','Meier'));
 MixStringDec(MixStringEnc('Hans','Meier'), tmp1, tmp2);
 Memo1.Lines.Add(''+tmp1+' <-> '+tmp2);
 Memo1.Lines.Add('');
 Memo1.Lines.Add(''+MixStringEnc('Meier','Hans'));
 MixStringDec(MixStringEnc('Meier','Hans'), tmp1, tmp2);
 Memo1.Lines.Add(''+tmp1+' <-> '+tmp2);
Zitat:
HMaeniseɕr
Hans <-> Meier

MHeainesrɕ
Meier <-> Hans
Ps: Gern geschehn
Gruß vom KodeZwerg

Geändert von KodeZwerg (10. Jun 2018 um 13:16 Uhr)
  Mit Zitat antworten Zitat