Autor Beitrag
Big_Boss
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20

XP home
Turbo Delphi, Delphi 2005 PE
BeitragVerfasst: 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:
ausblenden 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 user profile iconChristian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 25.12.2006 um 20:10
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20

XP home
Turbo Delphi, Delphi 2005 PE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 25.12.06 20:26 
user profile iconBig_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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20

XP home
Turbo Delphi, Delphi 2005 PE
BeitragVerfasst: Mo 25.12.06 20:56 
VIELEN DANK!!!!! Funktioniert prima.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mo 25.12.06 22:31 
user profile iconBig_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.