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;