Benutze mal einen Stream um den (offensichtlich) fehlerhaften RTF-Quelltext in ein Memo zu schreiben. Und schau mal nach, ob der verwendete Zeichsatz stimmt.
BTW, Welche Delphi-Version?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
RichEdit1.Clear;
RichEdit1.Font.Charset := RUSSIAN_CHARSET;
RichEdit1.Lines.Add('Çäðàâñòâóëòå!'); // Здравствулте!
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Stream: TStringStream;
begin
Stream := TStringStream.Create(EmptyStr);
try
RichEdit1.Lines.SaveToStream(Stream);
Memo1.Text := Stream.DataString;
finally
Stream.Free;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
Stream: TStringStream;
begin
Stream := TStringStream.Create(Memo1.Text);
try
RichEdit1.Lines.LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
Bei mir ist der RTF-Quelltext mit Delphi 6 (Update Pack 2,
RTL Update 3) insofern fehlerhaft, als dass der zweite Font (\f1) erst
nach dem Text selektiert wird. Nach Einfügen von \f1 nach \fs16 inklusive Zurückschreiben mit Button3 führt zum gewünschten Ergebnis
Ist zwar keine Lösung, aber erklärt das Problem.
Vielleicht kann man das Problem fixen, indem man die erste Zeile des RTF-Quelltextes fixt...
Gruss Nico