Thema: Delphi XOR

Einzelnen Beitrag anzeigen

Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Delphi XOR

  Alt 25. Aug 2010, 09:51
Habe ein Problem
Wenn ich etwas codieren will codiert er nicht alles warum bitte um antwort
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s , passwort: String;
  step , d:integer;
  i: Integer;
begin
  d:=0;
  passwort:=Edit1.text;
  s:=Memo1.Text;
  for i:=1 to length(s) do
  begin
    step:=Ord(passwort[d]);
    if
    d<length(passwort) then d:=d+1;
    if
    d>length(passwort) then d:=1 ;
    s[i]:=char(step Xor Ord(s[i]));
  end;
  Memo1.Text:=s;
  end;
Du initialisiert d mit 0, was beim ersten Schleifendurchlauf einen Fehler verursacht: step := Ord( passwort[d] ) -> Ord( passwort[>0<] ),
da Strings mit dem Index 1 beginnen und bei Length(String) aufhören.

Edit:
Die folgenden Zeilen lassen sich nur mit einem Befehl kürzen:
Delphi-Quellcode:
    if
    d<length(passwort) then d:=d+1;
    if
    d>length(passwort) then d:=1 ;

-->

  d := (d + 1) mod Length(passwort); // jedoch müsstest du "passwort[d+1]" verwenden. dann würde auch die Initialisierung mit d=0 stimmen.
Verbesserungsvorschlag:

Delphi-Quellcode:
var
  i, pLen: Integer;
  s: String;
begin
  s := Memo1.Text;
  pLen := Length( Edit1.Text );
  for i := 1 to Length( s ) do
    s[i] := Chr( Ord( s[i] ) xor Ord( Edit1.Text[((i-1) mod pLen)+1] ) );
  Memo1.Text := s;
end;
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (25. Aug 2010 um 10:03 Uhr)
  Mit Zitat antworten Zitat