Beim Verschlüsseln mit XOR entstehen aus einem Text binäre Daten, die man nicht verlustlos in einer StringList speichern kann.
Möglichkeit 1:
Auf StringList als Zwischenspeicher verzichten und stattdessen den String direkt speichern und laden.
Möglichkeit 2:
Des verschlüsselten String mit Base64 oder Base16 kodieren, damit keine undruckbaren Zeichen (inbesondere das Zeichen #0) in die Stringliste kommen.
Beim Entschlüsseln braucht man dann natürlich die Umkehrfunktion.
Base16 ist nichts anderes als die bekannte hexadezimale Codierung, bei dem 1 Byte mit 256 Zuständen in zwei Zeichen (0-F) umgewandelt wird.
http://www.delphipraxis.net/39740-he...aerstring.html