AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Chiffre-Problem

Ein Thema von Marcel Hans · begonnen am 27. Dez 2011 · letzter Beitrag vom 27. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2      
Marcel Hans

Registriert seit: 3. Nov 2011
4 Beiträge
 
#1

Chiffre-Problem

  Alt 27. Dez 2011, 00:08
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.

Geändert von Marcel Hans (27. Dez 2011 um 00:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#2

AW: Chiffre-Problem

  Alt 27. Dez 2011, 00:14
Wechsel in beiden Richtungen:
t-d

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

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?



Da wirst du wohl selber Zeichen für Zeichen durchgehn müssen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Chiffre-Problem

  Alt 27. Dez 2011, 00:16
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)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#4

AW: Chiffre-Problem

  Alt 27. Dez 2011, 00:18
Falsch, richtig sollte tauerd rauskommen, also laut seiner Definition.

[edit]
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Marcel Hans

Registriert seit: 3. Nov 2011
4 Beiträge
 
#5

AW: Chiffre-Problem

  Alt 27. Dez 2011, 00:20
Zitat:
Eine Bitte oder eine Forderung?
Natürlich eine Bitte

Zitat:
Da wirst du wohl selber Zeichen für Zeichen durchgehn müssen.
Gibt es kein anderer Weg?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Chiffre-Problem

  Alt 27. Dez 2011, 00:22
Gibt es kein anderer Weg?
doch, aber die führen nicht zum Ziel
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#7

AW: Chiffre-Problem

  Alt 27. Dez 2011, 00:24
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Marcel Hans

Registriert seit: 3. Nov 2011
4 Beiträge
 
#8

AW: Chiffre-Problem

  Alt 27. Dez 2011, 00:28
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?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Chiffre-Problem

  Alt 27. Dez 2011, 00:33
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)
function StrReplacePatterns( const AStr : string; Patterns : TStrings ) : string; Patterns müsste folgenden Inhalt haben
Code:
t=d
d=t
hallo=nein
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (27. Dez 2011 um 00:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Chiffre-Problem

  Alt 27. Dez 2011, 00:37
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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