AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi RTF in Firebird via StoredProc
Thema durchsuchen
Ansicht
Themen-Optionen

RTF in Firebird via StoredProc

Ein Thema von Billa · begonnen am 26. Jul 2006 · letzter Beitrag vom 26. Jul 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Billa
Billa

Registriert seit: 11. Aug 2003
237 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: RTF in Firebird via StoredProc

  Alt 26. Jul 2006, 09:00
...es ist ein TRichEdit...
Gruß Billa

Nur weil ich paranoid bin, heißt das nicht, daß die da draussen nicht hinter mir her sind....
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: RTF in Firebird via StoredProc

  Alt 26. Jul 2006, 09:05
Du könntest den Inhalt auch direkt in den Blob "streamen". (.Lines.SaveToStream)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Billa
Billa

Registriert seit: 11. Aug 2003
237 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

Re: RTF in Firebird via StoredProc

  Alt 26. Jul 2006, 09:11
... wie lautet denn da die korrekte Anweisung? Ich bekomme alle möglichen Fehlermeldungen (..habe aber auch noch nie mit Streams gearbeitet..) !
Gruß Billa

Nur weil ich paranoid bin, heißt das nicht, daß die da draussen nicht hinter mir her sind....
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14

Re: RTF in Firebird via StoredProc

  Alt 26. Jul 2006, 09:38
Zitat von Billa:
...sorry, habe ich vergessen: ja der Feldtyp von FIRST_STORY ist Blob Subtype Text!
Also ist es ein Text.

Zitat von Billa:
ParamByName('FIRST_STORY').asString := ( edStory.Lines.GetText );
......
ExecProc;
end;

...liegt das Problem.
Und der wird mit AsString im Programm verarbeitet. Für dieses ist es also ein String. Fazit : nix formatiert !

Da die Zeit drängt : suche auf Lemmys Seiten nach seinem kurzen Blob-Tuto und lese das durch. Blob Subtype Text dürfte so nicht gehen.

www.delphi-tutorials.de

Prinzipiell gibt es allerdings 2 Möglichkeiten : Du hast vor, eine quasi Binärdatei in die DB zu friemeln. Wie man sieht, geht das nicht ganz so einfach und hat weitere Nachteile. Die andere Möglichkeit ist : speichere lediglich den Pfad der Datei in der DB. Die direkte Speicherung in DB empfiehlt sich dann, wenn Binärdaten eine Grundlage für das Programm sind und zwingend benötigt werden. Z.B. Immobilienmakler. Der braucht zu jedem Haus ein paar Bilder, Baupläne usw. Die Zahlen : Baujahr, qm usw. sind da eher irrelevant. Hätte ich ein solches Programm zu schreiben, dann wären auch die Bilder usw. zentral in der DB.

Bei mir siehts aber z.B. so aus : Zahlen, Strings usw. sind das wichtigste. Einige Lieferanten geben nun in unregelmäßigen Abständen auch CDs raus mit Bildern, Druckvorlagen usw. zu diversen Artikeln. Schaufele ich diese in die DB, dann wird die wohl aufgebläht. Je nach Auflösung brauchen ein paar Bilder schon soviel Speicherplatz wie alle anderen Daten zusammen. Um jetzt die tägliche Datensicherung nicht wegen ein paar jährlich erneuerter Bilder zu verlangsamen und CDs mit immer den gleichen Sachen zu füllen macht es da eher Sinn, Bilder etc. NICHT in die DB zu nehmen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: RTF in Firebird via StoredProc

  Alt 26. Jul 2006, 09:47
Hi,

ich hoffe, es hilft dir weiter. Ich mache hier aus einem Stream einen String und zeige den Inhalt des RTF an:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
  AStream: TMemoryStream;
  tmp: String;
begin
  AStream := TMemoryStream.Create;
  try
    RichEdit1.Lines.SaveToStream(AStream);
    AStream.Position := 0;
    SetLength(tmp, AStream.Size);
     AStream.Read(tmp[1], AStream.Size);
    // jetzt ist Alles im String tmp!
    MessageDlg(tmp, mtWarning, [mbOK], 0);
  finally
    AStream.Free;
  end;
end;
[EDIT]
als function
Delphi-Quellcode:
function GetRTFString(ARichEdit: TRichEdit): string;
Var
  AStream: TMemoryStream;
begin
  Result := '';
  AStream := TMemoryStream.Create;
  try
    ARichEdit.Lines.SaveToStream(AStream);
    AStream.Position := 0;
    if AStream.Size > 0 then
    begin
      SetLength(Result, AStream.Size);
      AStream.ReadBuffer(Result[1], AStream.Size);
    end;
  finally
    AStream.Free;
  end;
end;
Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Billa
Billa

Registriert seit: 11. Aug 2003
237 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#16

Re: RTF in Firebird via StoredProc

  Alt 26. Jul 2006, 09:53
...leider ist in dem Fall gerade der Text MIT den Formatierungen so wichtig...wg. Dokumentation.

Das Design habe ich nicht gemacht, es hat sich wohl auch in den letzten 8 oder 9 Jahren so entwickelt. Die Datenbank ist mehrfach migriert worden (ursprünglich mal DBase) und zu allem Überfluß ist so gut wie nix dokumentiert. Weil mehrere Programme auf die DB zugreifen, kann ich nicht einfach die DB-Struktur ändern.....

Das Tutorial war nicht so hilfreich. Das waren mehr allgemeine Hinweise.

Es werden in den RTF-Feldern nicht nur Dateien eingelesen, sondern auch ergänzt. Deshalb kommt ein Verweis auf die Quelldateien nicht in Frage.

Ich werde mal den Umweg über eine Zwischenspeicherung gehen. (File oder Stream)..

Schade, ich hatte die Hoffnung, daß es für so einen Fall so eine Art "Kochrezept" gibt....
trotzdem allen einen herzlichen Dank!
Gruß Billa

Nur weil ich paranoid bin, heißt das nicht, daß die da draussen nicht hinter mir her sind....
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: RTF in Firebird via StoredProc

  Alt 26. Jul 2006, 10:00
Zitat von Billa:
Schade, ich hatte die Hoffnung, daß es für so einen Fall so eine Art "Kochrezept" gibt....
trotzdem allen einen herzlichen Dank!
Wenn du die Function aus meinem Beitrag nimmst, brauchst du doch nur noch deinen Code ändern:
Delphi-Quellcode:
with prcSave do
begin
  ParamByname('FIRST_ID').AsInteger := ActId;
  ParamByname('FIRST_NAME').AsString := edFirstName.Text;
  ParamByName('FIRST_STORY').asString := GetRTFString(edStory);
  ......
  ExecProc;
end;
Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Billa
Billa

Registriert seit: 11. Aug 2003
237 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#18

Re: RTF in Firebird via StoredProc

  Alt 26. Jul 2006, 10:08
....Ja super! Ich hatte Deinen Beitrag nicht gesehen, da ich selber gerade postete. Habe die Funktion probiert, und: ES KLAPPT! Klasse, Danke!
Gruß Billa

Nur weil ich paranoid bin, heißt das nicht, daß die da draussen nicht hinter mir her sind....
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 04:41 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