Ups, auch noch vergessen den Index zu tauschen.
Delphi-Quellcode:
if d<length(passwort) then d:=d+1;
if d>length(passwort) then d:=1 ;
s[i]:=char(Ord(s[i]) Xor Ord(passwort[d]));
So wie du
d initialisierst, mußt du erst nach den IFs auf dieses zugreifen, da sonst der Index nicht stimmt.
Ich empfehle die darum, in den Projektoptionen mal die Index- und die Bereichsprüfung zu aktivieren.
Stattdessen kannst du auch den Tipp von Aphton nehmen und die IFs weglassen:
s[i] := char(Ord(s[i]) Xor Ord(passwort[(i - 1) mod Length(passwort) + 1]));
.
Wie gesagt:
Schau mal im Debuger, was wirklich in S drinsteht.
Das Memo behandelt #10 und #13 anders ... aus #10 (LF) wird #13#10 (CRLF), aus #13 (CR) wird #13#10 (CRLF), aus #10#13 (LF+CR) wird #13#10#13#10 (CRLF+CRLF) und nur #13#10 (CRLF) bleibt #13#10
(CRLF).
Und bei #0 wird abgebrochen ... Stichwort PChar