Zitat:
Woran könnte das liegen?
Guter Ansatz bei deinem Test. Jetzt mache doch mal Nägel mit Köpfen und wage dich an die richtige Stelle des Problemes. Nimm deinen nicht funktioneirenden String, speichere diesen in eine Datei, weise ihn ein TMemo zu, lade aus dem Memo den kaputten String, speichce diesen in eine andere Datei, öffne beide Dateien mit einem HEX Editor (hast doch einen als gut ausgerüsteter Programmierer, oder ? ) und vergleiche mal beide Dateien miteinandner. WIR werden diesen Schritt nicht für DICH machen, und wenn nur einmal und bei ähnlichen Problemen in der Zukunft stehste wiederum da.
Ein TMemo nutzt intern TStrings. TStrings ist eine Liste aus Strings, einfach ausgedrück ein Array of Pointer (Strings). Also kann ein TMemo mehrere Zeilen darstellen und wenn man einen einzigen langen String dem TMemo zuweist werden die Zeichen #10 -> Line Feed und #13 -> Carrige Return im String ausgewertet. Findet TMemo bei SetText diese Zeichen so zerlegt es diesen String in 2 Teile -> ergo ein Zeilenumbruch. Das doofe daran ist das das Zeichen #10 und oder #13 einen Zeiulenumbruch ergeben. Also wenn im String nur #10 vorkommt so wirkt das wie ein Zeilenumbruch. Fragst du mit TMemo.GetText diesen ganzen String wieder ab, so baut TMemo diesen aus den einzelnen Zeilen wieder zusammen. TMemo fügt dann also selber einen Zeilenumbruch ein, und der besteht dann aus #10 und #13. Du hast also nicht mehr den originalen String.
Am besten probierst du es einfach mal aus. OHNE die RCx Units und OHNE irgendwelche Kryptographie. Baue einfach mal Strings der Form S := #10#10#13#0#13#13#10; und weise das TMemo.Lines.Text zu. Dann fragst du TMemo.Lines.Text ab und vergleichst das mit dem Original.
So. Meine vorherigen Postings haben alles erklärt was es zu erklären gab. Auch verschiedne Vorschläge was du machen könntest sind besprochen worden. Ich erwarte jetzt von dir das du mal selber versuchst dich reinzuarbeiten und bin schon auf deine Rückmeldung wie du dein Problem gelösst hast gespannt
Gruß Hagen