Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Format eines DBRichEdit(Textes) speichern und laden (https://www.delphipraxis.net/183843-format-eines-dbrichedit-textes-speichern-und-laden.html)

beanbear6 9. Feb 2015 04:23

Datenbank: Paradox • Version: 7 • Zugriff über: BDE

Format eines DBRichEdit(Textes) speichern und laden
 
Hi zusammen,
ich hab ein DBRichEdit mit einem (Paradox-Feldtyp F) formatierten Memo verbunden.
Im Quellcode schreibe ich folgendes:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with DBRichEdit1.SelAttributes do
  If Style = [fsBold] then Style := [] else Style := [fsBold];
end;
Der markierte Text wird auch in fett dann gezeigt. Nur nach dem Speichern und wieder Laden des Textes in das DBRichEdit ist der Text wieder nicht formatiert. Kann mir jemand helfen und mir sagen, was ich falsch mache oder wie ich sowas lösen kannn?
Ich danke Euch für jeden Tip..
beanbear6

baumina 9. Feb 2015 07:07

AW: Format eines DBRichEdit(Textes) speichern und laden
 
Wahrscheinlich wirst du RTF nur in einem BLOB-Feld speichern können.

Perlsau 9. Feb 2015 07:10

AW: Format eines DBRichEdit(Textes) speichern und laden
 
Zwar habe ich nie mit Paradox oder der BDE gearbeitet, doch kann ich dir sagen, daß man RichEdit-Inhalte am besten in einem binären Feld speichert. Das bedeutet, man wählt kein Feld, das Text aufnimmt, sondern – in der Sprache modernerer Datenbanken – ein binäres Blobfeld. Dann ist nämlich garantiert, daß der Stream der DBRichEdit-Komponente unverändert im Blobfeld ankommt und ebenso unverändert daraus wieder gelesen werden kann. Bei Datenbank-Textfeldern (Memo, VarChar) besteht dagegen die Gefahr, daß Steuerzeichen, die ja im RichText vorkommen, falsch interpretiert werden.

p80286 9. Feb 2015 10:45

AW: Format eines DBRichEdit(Textes) speichern und laden
 
Naja die RTF-Rohdaten sollte man durchaus ineinem Varchar/Char/Text/Memo-Feld speichern können:
Code:
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1031{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}....
Da wird nicht gezaubert und es ist mit dem ordinären Notepad lesbar. man muß sich nur durch die verschiedenen Begrifflichkeiten durchfinden, um zu erreichen was man will. Irgendwo sollte jede RichText-Komponente auch den Zugriff auf den "SourceCode" ermöglichen, und der kann ganz problemlos als Text gespeichert werden.

Gruß
K-H

mkinzler 9. Feb 2015 10:47

AW: Format eines DBRichEdit(Textes) speichern und laden
 
Es ist nur die Frage, was der DBRichText in die Tabelle ablegt. Es scheint so, ob nur der reine Text gespeichert wird.

Perlsau 9. Feb 2015 12:11

AW: Format eines DBRichEdit(Textes) speichern und laden
 
Zitat:

Zitat von p80286 (Beitrag 1289282)
Naja die RTF-Rohdaten sollte man durchaus ineinem Varchar/Char/Text/Memo-Feld speichern können:
Code:
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1031{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}....
Da wird nicht gezaubert und es ist mit dem ordinären Notepad lesbar. man muß sich nur durch die verschiedenen Begrifflichkeiten durchfinden, um zu erreichen was man will. Irgendwo sollte jede RichText-Komponente auch den Zugriff auf den "SourceCode" ermöglichen, und der kann ganz problemlos als Text gespeichert werden.

Grundsätzlich ist das nicht falsch oder klingt zumindest logisch nachvollziehbar. Dennoch habe ich die Erfahrung gemacht, daß RTF-Inhalte – insbesondere ab Delphi 2009, wo ja die Unicode-Unterstützung begann – in Textfeldern – auch z.B. bei Firebird's Blobfeld im Textmodus – nicht immer korrekt gespeichert werden, in Binärfeldern dagegen schon, und zwar ausnahmslos. Ich kann dir auch nicht genau sagen, weshalb das so ist, aber ich kann dir versichern, daß es so ist.

Zudem mache vermutlich nicht nur ich von der Möglichkeit Gebrauch, in RichEdit-Komponenten auch Grafiken zu speichern, was die Wahl eines Binärfeldes als zwingend erscheinen läßt. Bei Memo-Komponenten wie TDBMemo z.B. genügt ein Textfeld, da gibts keine Formatierungen und man kann da auch keine Bilder einbinden.

Wenn du mal die Forensuche bemühst, wirst du etlichen Usern begegnen, die große Schwierigkeiten dabei hatten, RTF-Inhalte in Textfeldern zu speichern, diese Probleme aber nicht mehr auftraten, nachdem sie ein Binärfeld gewählt hatten. Deshalb ist das immer auch mein erster Ratschlag bei diesem speziellen Problem.


Zitat:

Zitat von mkinzler (Beitrag 1289283)
Es ist nur die Frage, was der DBRichText in die Tabelle ablegt. Es scheint so, ob nur der reine Text gespeichert wird.

Scheint mir auch so ... Allerdings habe ich schon lange nicht mehr probiert, RTF-Inhalte in Textfeldern zu speichern :P

beanbear6 9. Feb 2015 13:11

AW: Format eines DBRichEdit(Textes) speichern und laden
 
Hallo zusammen,
gleich mal vielen Dank für Eure Mühe. Wie aber versteh ich das mit dem Blob-Feld? Is dan für z.B. Paradox ein OLE-Feld? Ich hab da leider viel zu wenig Erfahrung damit. Ich weis schon, dass man das Ganze auch als .rtf als Datei ablegen könnte, aber ich brauch das unbedingt in einer Datenbank. Bitte helft mir mit diesem Blobfeld...
Vielen Dank an alle!!

Perlsau 9. Feb 2015 14:03

AW: Format eines DBRichEdit(Textes) speichern und laden
 
Welche Blob-Typen gibt es denn überhaupt in Paradox? Soweit ich eben kurz recherchieren konnte, gibt es z.B. die Typen Blob Memo und Blob Graphic. Ich würde dir empfehlen, mit diesen Feldern zu experimentieren, um herauszufinden, welches den Inhalt deiner TDBRichEdit-Komponente korrekt speichert.

Womit bearbeitest du eigentlich deine Tabellen-Strukturen in deiner Paradox-Datenbank; welchen Datenbank-Manager setzt du ein?

Hier im Forum ist auch einiges zu diesem Thema zu finden:

ATS3788 9. Feb 2015 15:58

AW: Format eines DBRichEdit(Textes) speichern und laden
 
Hatte vor kurzen ein ähnliches Problem Perlsau:thumb: hatte
mir geholfen Binär Blob ist
die Antwort.

himitsu 9. Feb 2015 19:55

AW: Format eines DBRichEdit(Textes) speichern und laden
 
Binär muß nicht unbedingt sein, denn die Prüfung geht nur auf Delphi-Referenz durchsuchenTField.IsBlob, welches auch gut und gern ein TEXT sein könnte.

TStringField oder PlainText=True -> Text
TBlobField/TMemoField und PlainText=False -> RichText


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.
Seite 1 von 2  1 2      

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