![]() |
Re: RTF in Firebird via StoredProc
...es ist ein TRichEdit...
|
Re: RTF in Firebird via StoredProc
Du könntest den Inhalt auch direkt in den Blob "streamen". (.Lines.SaveToStream)
|
Re: RTF in Firebird via StoredProc
... wie lautet denn da die korrekte Anweisung? Ich bekomme alle möglichen Fehlermeldungen (..habe aber auch noch nie mit Streams gearbeitet..) !
|
Re: RTF in Firebird via StoredProc
Zitat:
Zitat:
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. ![]() 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. |
Re: RTF in Firebird via StoredProc
Hi,
ich hoffe, es hilft dir weiter. Ich mache hier aus einem Stream einen String und zeige den Inhalt des RTF an:
Delphi-Quellcode:
[EDIT]
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; als function
Delphi-Quellcode:
Cu, Frank
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; |
Re: RTF in Firebird via StoredProc
...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! |
Re: RTF in Firebird via StoredProc
Zitat:
Delphi-Quellcode:
Frank
with prcSave do
begin ParamByname('FIRST_ID').AsInteger := ActId; ParamByname('FIRST_NAME').AsString := edFirstName.Text; ParamByName('FIRST_STORY').asString := GetRTFString(edStory); ...... ExecProc; end; |
Re: RTF in Firebird via StoredProc
....Ja super! Ich hatte Deinen Beitrag nicht gesehen, da ich selber gerade postete. Habe die Funktion probiert, und: ES KLAPPT! :hello: :bounce1: Klasse, Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz