![]() |
Wie schaffe ich eine Stringmischung ohne Zufall
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 |
AW: Wie schaffe ich eine Stringmischung ohne Zufall
Was sollte denn rauskommen wenn Input String1 := 'Meier' und String2 := 'Hans' ist ? Gebe da mal ein Beispiel.
Delphi-Quellcode:
So wird ja irgendwie Deine Funktion beginnen, also was soll hinten rauskommen?
function DoJob(Input1, Input2: String): String
|
AW: Wie schaffe ich eine Stringmischung ohne Zufall
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 |
AW: Wie schaffe ich eine Stringmischung ohne Zufall
Delphi-Quellcode:
Teste das mal, QnD aber sollte das machen was Du möchtest.
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; edit Ps: Eine Rückumwandlung ist ausgeschlossen falls das Deine nächste Frage dazu werden sollte. |
AW: Wie schaffe ich eine Stringmischung ohne Zufall
Vielen Dank!!!
Wie es aussieht, passt dies wunderbar. Ich teste noch etwas, dann melde ich mich nochmals. ciao LingNeu |
AW: Wie schaffe ich eine Stringmischung ohne Zufall
Delphi-Quellcode:
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!
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; 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:
|
AW: Wie schaffe ich eine Stringmischung ohne Zufall
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 |
AW: Wie schaffe ich eine Stringmischung ohne Zufall
Gern geschehen und mach wie Du magst, es sind Deine Routinen, ich half nur ein wenig Deine Gedanken in Code zu verfrachten :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz