Lazarus 3.2 (2024.02.28.)
Letöltés

  • Oldal:
  • 1

TÉMA:

Válasz: RTF szöveg tárolása adatbázisban 2013 márc. 16 11:55 #1234

  • szeti
  • szeti profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 39
  • Köszönetek: 1
Igen, a megoldás tökéletes és úgy látszik nem a fórumokban kellett volna keresgélnem, hanem ahol kell. Köszönöm a segítséget.

Válasz: RTF szöveg tárolása adatbázisban 2013 márc. 16 07:27 #1233

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
Szerintem e helyett:
RichMemeo1.Lines.SaveToStream(st);
próbáld ezt:
RichMemo1.SaveRichText(st);
wiki.freepascal.org/RichMemo#SaveRichText
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

RTF szöveg tárolása adatbázisban 2013 márc. 15 13:04 #1232

  • szeti
  • szeti profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 39
  • Köszönetek: 1
Üdv Mindenkinek!

Egy RichMemo komponensből szeretnék Firebird adatbázisba menteni. Ezt az alábbi kóddal sikerült megoldani, azonban a formázások nem kerülnek mentésre. File-ba mentve sikerül a formázásokat is tárolni és a visszatöltés alkalmával helyesen jelenik meg a szöveg, adatbázisból visszatöltve azonban csupán egyszerű szövegként tudom visszatölteni a dokumentumokat. Az adatbázisban egy BLOB SUB_TYPE 0 SEGMENT SIZE 80 mezőt használok a tárolásra, a Lazarus-ban pedig Zeos komponenseket. Számos helyen keresgéltem már a neten, de megoldásra nem bukkantam. Valakinek lenne valami jó ötlete?
procedure TForm1.BitBtn6Click(Sender: TObject);
var st: TMemoryStream;
begin
  if (not DataModule1.ZC1.InTransaction) then DataModule1.ZC1.StartTransaction;
  st:=TMemoryStream.Create;
  RichMemeo1.Lines.SaveToStream(st);
  st.Position:=0;
  DataModule1.ZQBlob.Close;
  DataModule1.ZQBlob.SQL.Clear;
  DataModule1.ZQBlob.SQL.Add('INSERT INTO tabla2 (iktato,panasz) VALUES (:p0,:p1)');
  DataModule1.ZQBlob.Parambyname('p0').AsInteger:=DataModule1.ZQTabla1.FieldByName('iktato').AsInteger;
  DataModule1.ZQBlob.Parambyname('p1').LoadFromStream(st, ftBlob);
  DataModule1.ZQBlob.ExecSQL;
  if DataModule1.ZC1.InTransaction then begin DataModule1.ZC1.Commit; ShowMessage('Tárolás megtörtént'); end;
  DataModule1.ZQBlob.Close;
  st.Free;
end;

  • Oldal:
  • 1