Delphi-Quellcode:
rc4init(memo1.Text);
text:=memo2.Text;
textneu:=rc4encdec(text);
memo2.Text:=textneu;
Wie schon himitsu bereit erwähnt hat, wird ein String, das #0 enthält, nicht ganz angezeit (0 wird als Nullterminierung interpretiert)
Kannst gern ausprobieren, falls du es nicht glaubst / verstehst:
Delphi-Quellcode:
var x:String;
x := 'Test'#0'Dies wird nicht gezeigt';
Ich würd das Problem einfach so lösen, dass ich mir das ganze als Hex anzeigen lasse:
Delphi-Quellcode:
function StrToHex(Str: String): String;
var
i: Integer;
begin
for i := 1 to Length( Str ) do
begin
Result := Format( '%s $%x', [Result, ORD( Str[i] ) ] );
if i mod 16 = 0 then
Result := Result + #13#10;
end;
end;
oder, fall ich mal unbedingt den Text nicht durch das Kopfrechnen (Umrechnen von Hex auf Dez. und
Ascii Characterdarstellung) erschätzen will, mach ich folgendes -> ich filter einfach alles, was nicht anzeigbar ist:
Delphi-Quellcode:
function FilterBadChars(Str: String; const FilterChar: Char = '.'): String;
var
i: Integer;
begin
Result := Str;
for i := 1 to Length(Str) do
if ORD(Str[i]) in [0..32, 130..255] then
Result[i] := FilterChar;
end;
MfG