AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

JvRichEdit in MSSQL-DB speichern und laden

Ein Thema von Captnemo · begonnen am 10. Sep 2014 · letzter Beitrag vom 10. Sep 2014
Antwort Antwort
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#1

JvRichEdit in MSSQL-DB speichern und laden

  Alt 10. Sep 2014, 12:51
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.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: JvRichEdit in MSSQL-DB speichern und laden

  Alt 10. Sep 2014, 13:13
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
}
das ist was im RTF in echt steht, d.h. er erkennt bei Dir die Formatierung nicht und stellt den Text "Plain" dar.

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

Geändert von arnof (10. Sep 2014 um 13:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#3

AW: JvRichEdit in MSSQL-DB speichern und laden

  Alt 10. Sep 2014, 13:18
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:
procedure Tfrm_termin.btn3Click(Sender: TObject);
begin
  termin.Arbeiten:=GetRichText(edt_arbeiten);
  edt_arbeiten.Clear;
  SetRichText(edt_arbeiten, termin.Arbeiten);
end;
bleibt der Inhalt wunderbar formatiert erhalten.

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?
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#4

AW: JvRichEdit in MSSQL-DB speichern und laden

  Alt 10. Sep 2014, 14:26
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.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz