You have to set the border-style of your for to bsNone.

Also, there are several ways to encode text. An efficient and easy method is to XOR each character in a string with a value. This is hard to reverse unless you have the proper key.
Here's some code. It's not mine... found it somewhere but don't remember where

const
C1 = 52845;
C2 = 22719;

function Encrypt(const S: String; Key: Word): String;
var
I: byte;
begin
Result[0] := S[0];
for I := 1 to Length(S) do begin
Result[I] := char(byte(S[I]) xor (Key shr );
Key := (byte(Result[I]) + Key) * C1 + C2;
end;
end;

function Decrypt(const S: String; Key: Word): String;
var
I: byte;
begin
Result[0] := S[0];
for I := 1 to Length(S) do begin
Result[I] := char(byte(S[I]) xor (Key shr );
Key := (byte(S[I]) + Key) * C1 + C2;
end;
end;