AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie schaffe ich eine Stringmischung ohne Zufall
Thema durchsuchen
Ansicht
Themen-Optionen

Wie schaffe ich eine Stringmischung ohne Zufall

Ein Thema von LingNeu · begonnen am 10. Jun 2018 · letzter Beitrag vom 11. Jun 2018
Antwort Antwort
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#1

Wie schaffe ich eine Stringmischung ohne Zufall

  Alt 10. Jun 2018, 12:04
Hallo Delphifreunde,
probiere schon eine zeitlang an folgendem Problem.
Möchte zwei Strings mischen:
z.B
String1 := 'Meier'; //der längere String gibt die Ergebnislänge vor
String2 := 'Hans';
LString1 := length(String1);
LString2 := length(String2);


Ergebnis1 := 'MHeainesr';
Ergebnis2 := 'HMaeniser';
Ich weiß einfach nicht, wie ich da anfangen kann.
Wahrscheinlich mit einer for schleife.
Könnte mir jemand bitte einen Hinweis geben. Danke!
ciao
Lingneu
Wenn man denkt, dann denkt man nur, das man denkt!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Wie schaffe ich eine Stringmischung ohne Zufall

  Alt 10. Jun 2018, 12:11
Was sollte denn rauskommen wenn Input String1 := 'Meier' und String2 := 'Hans' ist ? Gebe da mal ein Beispiel.
function DoJob(Input1, Input2: String): String So wird ja irgendwie Deine Funktion beginnen, also was soll hinten rauskommen?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Wie schaffe ich eine Stringmischung ohne Zufall

  Alt 10. Jun 2018, 12:22
hi Kodezwerg,
es sollen zwei Ergebnisse rauskommen

Ergebnis1 := 'MHeainesr';
Ergebnis2 := 'HMaeniser';

also, Der Name Meier wird gemischt mit Hans
als 1.Buchstabe M (von M eier),
als 2.Buchstabe H (von H ans)
als 3.Buchstabe e (von M e ier)
als 4.Buchstabe a (von H a ns)
als 5.Buchstabe i (von Me i er)
als 6.Buchstabe n (von Ha n s)
als 7.Buchstabe e (von Mei e r)
als 8.Buchstabe s (von Han s)
als 9.Buchstabe r (von Meie r)
Ergebnis: MHeainesr
Das Gleiche sollte dann mit Hans geschehen, er wird gemischt mit Meier
Gruß Lingneu
Wenn man denkt, dann denkt man nur, das man denkt!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Wie schaffe ich eine Stringmischung ohne Zufall

  Alt 10. Jun 2018, 12:25
Delphi-Quellcode:
function StringMix(Input1, Input2: String): String;
var
  i: Integer;
begin
  for i := 1 to Length(Input1) do
  begin
    Result := Result + Input1[i];
    if Length(Input2) >= i then Result := Result + Input2[i];
  end;
  for i := i to Length(Input2) do
    Result := Result + Input2[i];
end;
Teste das mal, QnD aber sollte das machen was Du möchtest.

edit
Ps: Eine Rückumwandlung ist ausgeschlossen falls das Deine nächste Frage dazu werden sollte.
Gruß vom KodeZwerg

Geändert von KodeZwerg (10. Jun 2018 um 12:41 Uhr)
  Mit Zitat antworten Zitat
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Wie schaffe ich eine Stringmischung ohne Zufall

  Alt 10. Jun 2018, 12:56
Vielen Dank!!!
Wie es aussieht, passt dies wunderbar.
Ich teste noch etwas, dann melde ich mich nochmals.
ciao
LingNeu
Wenn man denkt, dann denkt man nur, das man denkt!
  Mit Zitat antworten Zitat
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
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Wie schaffe ich eine Stringmischung ohne Zufall

  Alt 11. Jun 2018, 11:56
hallo KodeZwerg

danke nochmals für Deinen Einsatz.
Deine Routine funktioniert bestens.
Da habe ich jetzt wieder mal was gelernt!
Deine anderen Routinen kann ich evtl. auch mal verwerten!

Beste Grüße
LingNeu
Wenn man denkt, dann denkt man nur, das man denkt!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Wie schaffe ich eine Stringmischung ohne Zufall

  Alt 11. Jun 2018, 12:22
Gern geschehen und mach wie Du magst, es sind Deine Routinen, ich half nur ein wenig Deine Gedanken in Code zu verfrachten
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz