Hi wieder einmal!
Ich habe jetzt folgendes Problem. Mit meinem Editor möchte ich auch Linux bzw. Mac Dateien bearbeiten können, deshalb habe ich als Zeilenumbruch #$A bzw. #$D. Danach weise ich SynEdit.Text (bzw. SynEdit.Lines.Text) einen String zu, angezeigt wird dieser String richtig, wenn ich mir aber im Debugger den Wert von SynEdit.Text anschaue, dann fehlt das letzte Zeichen. Dadurch, dass man auch mehrere Dateien gleichzeitig bearbeiten kann, muss ich immer wieder umschalten; so schreibe ich dann SynEdit.Text hinaus in einen anderen String, wenn man auf eine andere Datei geht, wenn man wieder diese auswählt, dann wird er wieder hineingeschrieben. Angezeigt wird dann also ein Zeichen weniger, beim Auslesen sind es dann zwei Zeichen weniger usw. Ich habe auch schon probiert, das ganze in einem temporären TStrings-Objekt zu machen und dieses dann mit SynEdit.Lines.Assign(list) zu kopieren, wo aber genau der gleiche Fehler herauskommt. In der list steht aber (temporär) der richtige Wert.
Mein Code, den ich verwende:
Delphi-Quellcode:
SynEdit.Lines.LineBreak := #$A;
SynEdit.Text := einstring;
Im Anhang noch ein anderes Projekt, um das Problem zu veranschaulichen. Hier fällt auch auf, dass beim allerersten Auslesen von SynEdit.Text (noch das was zur Designtime hineingeschrieben wurde) schon ein Zeichen fehlt. So gesehen tritt der Fehler also beim Auslesen auf, nicht beim zuweisen.
Irgenwie habe ich fast das Gefühl, das ist ein Fehler im SynEdit. Für diesen Fall wäre ich auch für ein Workaround sehr dankbar (oder wo im Source von SynEdit ich das abändern muss...).
Read U (hopefully) soon, Gerhard
PS: Ich verwende SynEdit 1.2 auf Delphi 2005 Personal