Autor |
Beitrag |
Big_Boss
      
Beiträge: 20
XP home
Turbo Delphi, Delphi 2005 PE
|
Verfasst: Mo 25.12.06 20:05
Hallo,
Ich möchte mal ein ganz leichtes Text-verschlüsslungs-Programm machen, welches alle "A" mit "B" ersetz "B"-->"C"...
aber wenn ich alle "A" durch "B"ersetze, wird im nächsten Schritt schon wieder das "B" durch "C" ersetz.
Hier mein Code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| ... s:=form3.Edit2.Text; S:=stringreplace(s,'A','B',[rfIgnoreCase]); S:=stringreplace(s,'B','C',[rfIgnoreCase]); ... form3.edit3.text:=s; ... |
soll ich es vllt nicht mir stringreplace machen oder gibt es da einen Trick?
MfG Big_Boss Moderiert von Christian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 25.12.2006 um 20:10
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 25.12.06 20:10
Du musst die Ersetzung in einem Schritt machen, indem Du den String Zeichenweise durchgehst und dann z.B. Neu := Chr(Ord(Alt) + 1); rechnest und dieses Zeichen an die aktuelle Stelle im String schreibst ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Jakob Schöttl
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: Mo 25.12.06 20:12
Früher, als noch Buchstabenweiße (nicht Byteweise) verschlüsselt wurde, wurde (bin mir nicht mehr 100 % sicher, obs nicht anders herum war) der Klartext nur mit kleinen buchstaben und der Geheimtext nur mit großen buchstaben dargestellt. Du könntest also alle kleinen 'a' im Klartext durch große 'B' im Geheimtext ersetzen...
|
|
Big_Boss 
      
Beiträge: 20
XP home
Turbo Delphi, Delphi 2005 PE
|
Verfasst: Mo 25.12.06 20:21
Danke für die schnelle antwort.
Das mit den groß und klein leutet mir ein, aber das ist dann ganz schön schwer zu lesen.
" Neu := Chr(Ord(Alt) + 1);"
Neu ist der String oder, was ist aber Alt?
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 25.12.06 20:26
Big_Boss hat folgendes geschrieben: | Danke für die schnelle antwort.
Das mit den groß und klein leutet mir ein, aber das ist dann ganz schön schwer zu lesen.
" Neu := Chr(Ord(Alt) + 1);"
Neu ist der String oder, was ist aber Alt? |
Sagen wir, du hast in A ( var A: String;) deinen Text, den Du verschlüsseln willst. Ferner nehmen wir an, Du hast in X ( var X: Integer;) eine Zählvariable, mit der Du durch den String gehst ...
Alt ( var Alt: Char;) und Neu ( var Neu: Char;) sind nun zwei Variablen, die wie folgt zugewiesen werden:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| For X := 1 To Length(A) do Begin Alt := A[X]; Neu := Chr(Ord(Alt) + 1); A[X] := Neu; end; |
You see?
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Big_Boss 
      
Beiträge: 20
XP home
Turbo Delphi, Delphi 2005 PE
|
Verfasst: Mo 25.12.06 20:56
VIELEN DANK!!!!! Funktioniert prima.
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Mo 25.12.06 22:31
Big_Boss hat folgendes geschrieben: | S:=stringreplace(s,'A','B',[rfIgnoreCase]);
S:=stringreplace(s,'B','C',[rfIgnoreCase]); |
Kleine Bemerkung: Wenn du keine zyklische "Ersetzungskette" hast musst du einfach die richtige Reihenfolge wählen, dann gibt's keine Probleme. Aber punkto Effizienz ist klar, dass die StringReplace-Methode sowieso keine gute Idee ist.
|
|
|