Hallo,
ich möchte einen RichText in einer
DB speichern und auch wieder laden.
Als Control nehme ich ein JvRichEdit und als
DB MSSQL über
ADO.
Die eigentlichen Daten befinden sich in einer Klasse, die das speichern und laden aus der
DB übernimmt.
Die Übertragung an die Klasse mache ich so:
Delphi-Quellcode:
SetRichText(edt_arbeiten, termin.Arbeiten); //Richedit -> Klasse
termin.Arbeiten:=GetRichText(edt_arbeiten); //Klasse -> Richedit
Und hier die entsprechenden Funktion und Procedure
Delphi-Quellcode:
function GetRichText(RichEdit: TJvRichEdit): string;
var
Stream: TMemoryStream;
sl: TStringList;
begin
Stream:=TMemoryStream.Create;
sl:=TStringList.Create;
RichEdit.Lines.SaveToStream(Stream);
Stream.Position:=0;
sl.LoadFromStream(Stream);
Result:=sl.Text;
Stream.Free;
sl.Free;
end;
procedure SetRichText(RichEdit: TJvRichEdit; s: string);
var
Stream: TMemoryStream;
sl: TStringList;
begin
Stream:=TMemoryStream.Create;
sl:=TStringList.Create;
sl.Text:=s;
sl.SaveToStream(Stream);
Stream.Position:=0;
RichEdit.Lines.LoadFromStream(Stream);
Stream.Free;
sl.Free;
end;
Als
DB-Feld habe ich ein varchar(MAX).
Wenn ich jetzt in mein RichEdit ein bischen "blablabla" mit ein paar Formatierungsangeben schreibe,
diese dann speichere und wieder lade, dann steht im RichEdit das hier drin:
Code:
{\rtf1\
ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Tahoma;}}
{\colortbl ;\red0\green0\blue255;\red255\green255\blue0;}
\viewkind4\uc1\pard\cf1\highlight2\b\f0\fs16 blablabla\cf0\highlight0\b0\par
}
Irgendwie hab ich mich verrannt und find den Fehler nicht.