Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Datentyp für Property (RTF) (https://www.delphipraxis.net/197277-datentyp-fuer-property-rtf.html)

haentschman 26. Jul 2018 07:19

Datentyp für Property (RTF)
 
Hallöle...:P

Mein Frage fällt unter "again what learned" :stupid: Die Tante gibt nur unter "Speichern von RTF in DB" nur Lösungen mit Standard DB Werkzeugen (TField) aus.

Ich möchte gern eine Datenbank Tabelle in ein Objekt laden/speichern. Soweit so gut. Mir machen die RTF Felder Sorgen. :? In der DB liegen die RTF Felder als varbinary(max) vor. (Inhalt: 0x7B5C727466315C616E73695C6465666630...) In der Oberfläche sollen die Daten in einem Standard z.B. RTF Memo angezeigt werden. Dazwischen soll, später, die Klasse liegen als Ersatz für TDataSet.

Frage:
Mir geht um das Ablegen des Streams in die Klasse. :gruebel: Welche Dateitypen kommen für die Properties in Frage? Oder direkt der Stream als Property? Wie lädt das Standard RTF Control den Inhalt? Wandelt das Control den "Stringwert" selbst um?

In der Doku wird als Datentyp RawByteString "empfohlen" ist das richtig? :gruebel: Andere Variante: https://www.delphipraxis.net/185991-...speichern.html

Danke für Infos.

Hobbycoder 26. Jul 2018 08:31

AW: Datentyp für Property (RTF)
 
Ich habe bisher in einer Klasse immer TMemoryStream verwerndet. Bisher nie Probleme damit gehabt. Das RTF läd ja direkt aus dem Stream, so war das für mich das einfachste.

Neutral General 26. Jul 2018 08:36

AW: Datentyp für Property (RTF)
 
Ein String sollte schon passen. RTF ist kein binäres Format:

Zitat:

Zitat von Wikipedia
{\rtf1
Guten Tag!
\line
{\i Dies} ist \b{\i ein
\i0 formatierter \b0Text}.
\par
\i0 Das \b0Ende.
}


mjustin 26. Jul 2018 08:48

AW: Datentyp für Property (RTF)
 
Zitat:

Zitat von Neutral General (Beitrag 1408725)
Ein String sollte schon passen. RTF ist kein binäres Format:

Zitat:

Zitat von Wikipedia
{\rtf1
Guten Tag!
\line
{\i Dies} ist \b{\i ein
\i0 formatierter \b0Text}.
\par
\i0 Das \b0Ende.
}


Können auf das RTF Keyword "\bin" nicht auch beliebige Binärdaten folgen, z.B. für Bilder?

Uwe Raabe 26. Jul 2018 08:53

AW: Datentyp für Property (RTF)
 
Wenn du nicht sicher bist, was in den Daten wirklich vorkommt, kannst du immer noch auf TBytes ausweichen. Da gibt es keine impliziten Umwandlungen oder ähnliche Manipulationen. Über TBytesStream lässt sich das auch von jedem bzw. in jedes andere Format umwandeln.

Schokohase 26. Jul 2018 08:54

AW: Datentyp für Property (RTF)
 
Statt eines Streams würde ich einfach
Delphi-Quellcode:
TBytes
nehmen. Bei einem
Delphi-Quellcode:
TStream
hat ja wesentlich mehr als einfach nur die Daten, sondern auch noch Positionsangaben und selbst bei einem rein lesenden Zugriff, kann dieser Status verändert werden.

(da war der Uwe schneller)

Ob der Inhalt jetzt RTF ist oder nicht würde für mich (hier) keine Rolle spielen, denn der Datenbank-Typ ist ein varbinary und da passt
Delphi-Quellcode:
TBytes
wie die Faust aufs Auge.

haentschman 26. Jul 2018 09:56

AW: Datentyp für Property (RTF)
 
Danke 8-)

Ich probiere die verschieden Varianten aus. Am Ende hätte die Property so, daß, ohne Umwandlung, das RTF Control die Daten anzeigen kann. Das ist mit dem TBytesStream möglich.

:P

Rolf Frei 26. Jul 2018 14:53

AW: Datentyp für Property (RTF)
 
Zitat:

Zitat von mjustin (Beitrag 1408728)
Können auf das RTF Keyword "\bin" nicht auch beliebige Binärdaten folgen, z.B. für Bilder?

Nein die sind ebenso als "Text" abgelegt. Hier ein Beispiel:

Code:
{\rtf1\ansi\ansicpg1252\deff0\deflang2055{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sa200\sl240\slmult1\lang7\f0\fs22{\pict\wmetafile8\picw1693\pich1693\picwgoal960\pichgoal960 
0100090000034a18000000002118000000000400000003010800050000000b0200000000050000
000c0240004000030000001e000400000007010400040000000701040021180000410b2000cc00
400040000000000040004000000000002800000040000000400000000100180000000000003000
0000000000000000000000000000000000c66321bd5a18b55210945218847b63cedecea5bdad5a
4a398c3918c65229ce5221c65229a54a29d69c84ffe7debdb5a5cebdb5ffffffb5b5d67b8cbd84
usw...
oder mit einem eingebeteten Objekt:
Code:
{\rtf1\ansi\ansicpg1252\deff0\deflang2055{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang7\f0\fs22{\object\objemb{\*\objclass Paint.Picture}\objw2835\objh2835{\*\objdata
01050000
02000000
07000000
50427275736800
00000000
00000000
a0a30100
424d8ea30100000000003600000028000000bd000000bd000000010018000000000058a3010000
000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
usw...
Ein String passt da problemlos.

TigerLilly 26. Jul 2018 16:06

AW: Datentyp für Property (RTF)
 
Aus der Doku:

Code:
Picture Data
\binN
The picture is in binary format. The numeric parameter N is the number of bytes that follow. Unlike all other controls, this control word takes a 32-bit parameter.
Bilder können, müssen aber nicht als Text abgebildet sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 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