AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [Solved]Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?
Thema durchsuchen
Ansicht
Themen-Optionen

[Solved]Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?

Ein Thema von DeddyH · begonnen am 20. Sep 2015 · letzter Beitrag vom 21. Sep 2015
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#1

[Solved]Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?

  Alt 20. Sep 2015, 12:57
Datenbank: Firebird • Version: 2.5 • Zugriff über: Datasnap
Es ist mir ein wenig peinlich, aber ich kriege es nicht gebacken: ich habe hier eine Firebird-Tabelle, die in einem BLOB-Feld RichText enthält. Die Datenbank importiere ich per Datasnap auf ein Android-Smartphone, das klappt auch gut. Da ich aber auf dem Gerät mit RichText wenig anfangen kann, würde ich den BLOB-Inhalt eben gern im Klartext haben. Wie gehe ich da nun vor, wenn ich diese Arbeit vom Datasnap-Server erledigen lassen möchte? Die Originaldaten sollen auf dem PC natürlich RichText bleiben, also dachte ich in Richtung berechnetes Feld, nur wie?
Ich bin für jeden Tipp dankbar, Performance ist übrigens eher zweitrangig, da es sich um eher geringe Datenmengen handelt und der Import selbst auch nur sporadisch ausgeführt werden wird, da darf das ruhig ein paar Sekunden dauern.

P.S.: Nicht, dass das falsch verstanden wird: es geht mir nicht um RichEdit und dessen PlainText-Property, sondern darum, dass mir der Server per REST ein (in der Tabelle nicht existierendes) Feld mit dem Klartext übermittelt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (20. Sep 2015 um 18:25 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?

  Alt 20. Sep 2015, 14:13
Und was spricht dagegen, den von Dir beschriebenen Weg über das RichEdit zu gehen?

Musste vor Jahren mal "on the fly" aus Datenbankdaten Grafiken generieren, die dann per Webserver an die anfordernden Browser geliefert wurden. Die TeeChart-Komponente war dazu hervorragend geeignet.

Also wurde zur Laufzeit in der ISAPI-DLL ein Formular erstellt, das TeeChart mit Daten befüllt, die entstandene Grafik als JPeg per Stream ausgeliefert, Formular freigegeben.

Funktionierte über Jahre hinweg problemlos, auch dort galt: Die Grafiken wurden ab und an mal benötigt, auf Tempo kam es nicht an.

Würde bei Deiner Aufgabenstellung auch so in der Art vorgehen und erst wenns nicht funktioniert nach 'nem komplizierteren Weg suchen.

Das TeeChart verweigerte ohne Formular seine Arbeit, wenn das RichEdit ohne Formular auskommt, müsste das doch eigentlich relativ einfach zu implementieren sein.

MS schlägt für C# diesen Weg vor: https://msdn.microsoft.com/de-de/library/cc488002.aspx

Ansonsten mit 'ner Word-Fernsteuerung im Hintergrund? Escheint mir dann aber deutlich aufwändiger.

Haben die eventuell eine Ideenvorlage für Dich? http://stackoverflow.com/questions/3...rt-rtf-to-text

ungetestet würd' ich das so in der Art versuchen:
Delphi-Quellcode:
function RTFToText(s : String) : String;
var
          re : TRichEdit;
begin
  re := TRichEdit.Create(Nil);
  re.WordWrap := false;
  re.Lines.Text := s;
  re.PlainText := true;
  Result := re.Text;
  re.Free;
end;
Aufruf: AusgabevariabelAttributOderWieAuchImmer := RTFToText(Blobfeld.AsString);
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?

  Alt 20. Sep 2015, 14:19
Danke, aber wie ich im Postscriptum schon schrieb, geht es nicht um die Konvertierung (wenn man ein RichEdit mit CreateParented(HWND_MESSAGE) erzeugt, kommt man auch ohne Formular aus), sondern darum, dass es mir nicht gelingt, ein berechnetes Feld mit dem Klartext liefern zu lassen. Das kann eigentlich nur eine simple Property des Datasets sein, die ich übersehe, aber das nervt ungemein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.025 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?

  Alt 20. Sep 2015, 14:24
sondern darum, dass es mir nicht gelingt, ein berechnetes Feld mit dem Klartext liefern zu lassen. Das kann eigentlich nur eine simple Property des Datasets sein, die ich übersehe
Wo liegt denn nun genau das Problem? Bekommst du kein berechnetes Feld in das DataSet oder kannst du dessen Inhalt nicht setzen?

Zeig doch mal, was du schon hast.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?

  Alt 20. Sep 2015, 14:53
Ich habe in meinem Datasnap-Server dem entsprechenden Dataset mit dem Feldeditor ein Feld hinzugefügt (Name PlainText, BlobType ftMemo, FieldKind fkInternalCalc). Im OnCalcFields des Dataset steht momentan dieser Code:
Delphi-Quellcode:
procedure TServerMethods1.TexteTableCalcFields(DataSet: TDataSet);
var
  RE: TRichEdit;
  Stream, PlainStream: TStream;
begin
  RE := TRichEdit.CreateParented(HWND_MESSAGE);
  try
    Stream := DataSet.CreateBlobStream(DataSet.FieldByName('Text'),
      TBlobStreamMode.bmRead);
    try
      Stream.Seek(0, TSeekOrigin.soBeginning);
      RE.PlainText := false;
      RE.Lines.LoadFromStream(Stream);
      RE.PlainText := true;
      PlainStream := TStringStream.Create;
      try
        RE.Lines.SaveToStream(PlainStream);
        PlainStream.Seek(0, TSeekOrigin.soBeginning);
        (DataSet.FieldByName('PlainText') as TBlobField)
          .LoadFromStream(PlainStream);
      finally
        PlainStream.Free;
      end;
    finally
      Stream.Free;
    end;
  finally
    RE.Free;
  end;
end;
Damit ernte ich bei der Ausführung "Datenmenge weder im Editier- noch im Einfügemodus". Füge ich ein Dataset.Edit ein, enthält es keine Daten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?

  Alt 20. Sep 2015, 15:39
Irgendwie schwebt mir im Kopf herum, dass ein TBlobField nicht berechnet werden kann.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?

  Alt 20. Sep 2015, 15:57
Das wär aber ausgesprochen blöd, dann müsste ich mir was anderes überlegen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#8

AW: Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?

  Alt 20. Sep 2015, 16:22
Wie wäre es mit einem TStringField?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?

  Alt 20. Sep 2015, 16:34
Damit geht es, nach kurzer Recherche sind das maximal 8000 Zeichen, das sollte aber genügen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Datasnap: RTF-Text "on the fly" in PlainText konvertieren, wie?

  Alt 20. Sep 2015, 17:08
Ein Textblobfeld sollte sich, wenn es kleiner 32KB ist als Textfeld ansprechen lassen.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01: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