![]() |
Chiffre-Problem
Hi!
ich will ein Verschlüssungsprogramm schreiben. Ich hab es schon angefangen. Ich habe folgende Chiffre: Wechsel in beiden Richtungen: t-d b-p k-g t-d s-z w - v i - y (Also wenn normal 'dauert', in der Chiffre 'tauerd'). Mein zurzeitiges Programm gibt aber 'dauerd' raus. Ich bitte um Hilfe!
Code:
procedure TForm1.Button2Click(Sender: TObject);
var eingabe:string; begin eingabe:= memoanfang.lines.GetText; eingabe := StringReplace(eingabe ,'d','t',[rfReplaceAll]); eingabe := StringReplace(eingabe ,'g','k',[rfReplaceAll]); eingabe:= StringReplace(eingabe ,'b','p',[rfReplaceAll]); eingabe := StringReplace(eingabe ,'p','b',[rfReplaceAll]); eingabe := StringReplace(eingabe ,'v','w',[rfReplaceAll]); eingabe := StringReplace(eingabe ,'y','i',[rfReplaceAll]); eingabe := StringReplace(eingabe ,'z','s',[rfReplaceAll]); eingabe := StringReplace(eingabe ,'s','z',[rfReplaceAll]); eingabe := StringReplace(eingabe ,'t','d',[rfReplaceAll]); eingabe := StringReplace(eingabe ,'k','g',[rfReplaceAll]); eingabe := StringReplace(eingabe ,'w','v',[rfReplaceAll]); eingabe := StringReplace(eingabe ,'i','y',[rfReplaceAll]); eingabe := StringReplace(eingabe ,'ę','yn',[rfReplaceAll]); memoergebnis.lines.add(eingabe); end; end. |
AW: Chiffre-Problem
Zitat:
Zitat:
Code:
Und jetzt rate mal, was rauskommt, wenn man ein d reingibt? :angle2:
eingabe := StringReplace(eingabe ,'d','t',[rfReplaceAll]);
eingabe := StringReplace(eingabe ,'t','d',[rfReplaceAll]); Da wirst du wohl selber Zeichen für Zeichen durchgehn müssen. |
AW: Chiffre-Problem
Zitat:
EDIT: ok, vergiss es, du hast doch recht (das sollte nach der Beschreibung herauskommen) :) |
AW: Chiffre-Problem
Zitat:
[edit] :lol: |
AW: Chiffre-Problem
Zitat:
Zitat:
|
AW: Chiffre-Problem
Zitat:
|
AW: Chiffre-Problem
Nein, wie du siehst, funktioniert es ja nicht, wenn man die Ersetzungen "nacheinander" durchführt.
Sie müssen "gleichzeitig" sein, so daß immer nur eine Übersetzung je Zeichen ausgeführt wird und sich nachfolgende entgegengesetzte Ersetzungen nicht gegenseitig aufheben. Alternativ könnte man auch eine fertige Funktion nehmen, welche dieses macht, aber Delphi bringt von Haus aus sowas nicht mit. |
AW: Chiffre-Problem
Zitat:
|
AW: Chiffre-Problem
Also bevor ich nach einer speziellen nicht sonderlich aufwendigen StringErsetzungsroutine suchen würde, programmiere ich mir so etwas schnell selber (da hat man auch was eigenes - Holleri-DuDödelDi)
Delphi-Quellcode:
Patterns müsste folgenden Inhalt haben
function StrReplacePatterns( const AStr : string; Patterns : TStrings ) : string;
Code:
t=d
d=t hallo=nein |
AW: Chiffre-Problem
Delphi hat keine fertige, eingebaute Funktion dafür. Hat himitsu doch geschrieben. Was aber nicht heißt, dass irgend jemand so was schon mal geschrieben und im Internet veröffentlicht hat.
Hier mal ein Denkanstoß:
Delphi-Quellcode:
Ist in fünf Minuten selber geschrieben.
function ChiffreString(Klartext: AnsiString): AnsiString;
var s: AnsiString; i: Integer; OrdinalValue: Integer; begin s := KlarText; for i := 1 to length(s) do begin // wenn s[i] gleich dem Buchstaben X dann weise s[i] Buchstaben Y zu end; Result := s; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:24 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