![]() |
JvRichEdit in MSSQL-DB speichern und laden
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:
Und hier die entsprechenden Funktion und Procedure
SetRichText(edt_arbeiten, termin.Arbeiten); //Richedit -> Klasse
termin.Arbeiten:=GetRichText(edt_arbeiten); //Klasse -> Richedit
Delphi-Quellcode:
Als DB-Feld habe ich ein varchar(MAX).
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; 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:
Irgendwie hab ich mich verrannt und find den Fehler nicht.
{\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 } |
AW: JvRichEdit in MSSQL-DB speichern und laden
Code:
das ist was im RTF in echt steht, d.h. er erkennt bei Dir die Formatierung nicht und stellt den Text "Plain" dar.
{\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 } Blöde Fragen, warum machst Du nicht einfach: RichEdit.Lines.Text:=s; Über einen Stream gehe ich nur, wenn ich den echten Text haben möchte (ohne RTF-Formatierung) und dort mit Plaintext True und False spiele |
AW: JvRichEdit in MSSQL-DB speichern und laden
Ja, is klar ;-)
Nur warum steht es jetzt so da drin, und nicht mehr formatiert? Ich hab mittlerweile rausbekommen, dass es wohl durch das speichern in der DB passiert. Wenn ich nämlich das hier mache:
Delphi-Quellcode:
bleibt der Inhalt wunderbar formatiert erhalten.
procedure Tfrm_termin.btn3Click(Sender: TObject);
begin termin.Arbeiten:=GetRichText(edt_arbeiten); edt_arbeiten.Clear; SetRichText(edt_arbeiten, termin.Arbeiten); end; Bleibt die Frage, was beim Speichern in einem varchar(MAX) verloren geht und warum? Bzw. warum das RichEdit beim laden nicht mehr, dass es sich um RTF handelt? |
AW: JvRichEdit in MSSQL-DB speichern und laden
Das Thema hat sich erledigt.
So wie ich es oben gemacht habe, funktioniert es einwandfrei. (So wie arnof es vorgeschlagen hat bestimmt auch) Mein Fehler hat sich eingeschlichen, während ich so rumprobiert habe. An irgendeiner Stelle hatte ich versehentlich nochmal den Richtext falsch zugewiesen. Nachdem ich diese Stelle gefunden hatte, lief es. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz