Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Chiffre-Problem (https://www.delphipraxis.net/165370-chiffre-problem.html)

Marcel Hans 27. Dez 2011 00:08

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.

himitsu 27. Dez 2011 00:14

AW: Chiffre-Problem
 
Zitat:

Zitat von Marcel Hans (Beitrag 1143221)
Wechsel in beiden Richtungen:
t-d

(Also wenn normal 'dauert', in der Chiffre 'tauert'). Mein zurzeitiges Programm gibt aber 'dauerd' raus.

tauerd :zwinker:

Zitat:

Zitat von Marcel Hans (Beitrag 1143221)
Ich bitte um Hilfe!

Eine Bitte oder eine Forderung?


Code:
eingabe := StringReplace(eingabe ,'d','t',[rfReplaceAll]);
eingabe := StringReplace(eingabe ,'t','d',[rfReplaceAll]);
Und jetzt rate mal, was rauskommt, wenn man ein d reingibt? :angle2:



Da wirst du wohl selber Zeichen für Zeichen durchgehn müssen.

Sir Rufo 27. Dez 2011 00:16

AW: Chiffre-Problem
 
Zitat:

Zitat von himitsu (Beitrag 1143222)
tauerd :zwinker:

falsch, wie der TE angegeben hat kommt dauerd heraus, den Grund hast du ebenfalls genannt ;)

EDIT: ok, vergiss es, du hast doch recht (das sollte nach der Beschreibung herauskommen) :)

himitsu 27. Dez 2011 00:18

AW: Chiffre-Problem
 
Zitat:

Zitat von Sir Rufo (Beitrag 1143223)
falsch

Falsch, richtig sollte tauerd rauskommen, also laut seiner Definition. :zwinker:

[edit]
:lol:

Marcel Hans 27. Dez 2011 00:20

AW: Chiffre-Problem
 
Zitat:

Eine Bitte oder eine Forderung?
Natürlich eine Bitte :wink:

Zitat:

Da wirst du wohl selber Zeichen für Zeichen durchgehn müssen.
Gibt es kein anderer Weg? :(

Sir Rufo 27. Dez 2011 00:22

AW: Chiffre-Problem
 
Zitat:

Zitat von Marcel Hans (Beitrag 1143226)
Gibt es kein anderer Weg? :(

doch, aber die führen nicht zum Ziel ;)

himitsu 27. Dez 2011 00:24

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.

Marcel Hans 27. Dez 2011 00:28

AW: Chiffre-Problem
 
Zitat:

Zitat von himitsu (Beitrag 1143229)
Alternativ könnte man auch eine fertige Funktion nehmen, welche dieses macht, aber Delphi bringt von Haus aus sowas nicht mit.

Hmm, also gibt es solche Funktion nicht oder muss man sie nachsuchen?

Sir Rufo 27. Dez 2011 00:33

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:
function StrReplacePatterns( const AStr : string; Patterns : TStrings ) : string;
Patterns müsste folgenden Inhalt haben
Code:
t=d
d=t
hallo=nein

Luckie 27. Dez 2011 00:37

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:
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;
Ist in fünf Minuten selber geschrieben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 Uhr.
Seite 1 von 2  1 2      

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