RichEdit-Zeilen mit Formatierung in Datenbank schreiben



  • Hallo,
    ich habe ein RichEdit-Feld und möchte die einzelnen Zeilen "mit" der Formatierung zeilenweise in eine Datenbank schreiben. Wie kann ich das Problem lösen?

    Wenn ich Zeile für Zeile aus dem RichEdit auslese und mit INSERT in die DB schreibe, dann geht leider die Formatierung (Fett/kursiv/unterstrichen)verloren.

    Gruss MacMuess.



  • Ich glaube das das so nicht möglich ist. Was du machen könntest ist, das du dir für die Formatierung werte festlegst und diese den entsprechenden Zeilen hinzufügst

    Bsp.:
    fetter Text = 1
    kursiver Text = 2
    usw.

    in der Tabelle könnte es dann ja ungefähr so aussehn

    Zeile         | Formatierung
    --------------|-------------
    fetter Text   |            1
    kursiver Text |            2
    


  • Hat RichText nicht ne SaveToStream Funktion (hab grad keine VCL-Doku da)?

    -junix



  • du möchtest den Font in elementare Typen konvertieren?
    Das macht man zum Beispiel so:

    struct TGlobalFont
    {
       int Color;
       int Height;
       int Size;
       char Name[100];
       WORD Style;
    };
    
    //-------------------------------------------------------------------------------
    TGlobalFont GlobalStyle::GetFontStyle(String Name, int Height,int Size,int Color,bool Bold, bool Italic,bool Underline, bool StrikeOut)
    {
    WORD TheStyle=0;
    if(Bold)
       TheStyle|=1;
    if(Italic)
       TheStyle|=2;
    if(Underline)
       TheStyle|=4;
    if(StrikeOut)
       TheStyle|=8;
    TGlobalFont temp;
    temp.Color=Color;
    temp.Height=Height;
    temp.Size=Size;
    strcpy(temp.Name,Name.c_str());
    temp.Style= TheStyle;
    return temp;
    }
    //-------------------------------------------------------------------------------
    TGlobalFont GlobalStyle::GetFontStyle(TFont* AFont)
    {
    WORD TheStyle=0;
    if(AFont->Style.Contains(fsBold))
       TheStyle|=1;
    if(AFont->Style.Contains(fsItalic))
       TheStyle|=2;
    if(AFont->Style.Contains(fsUnderline))
       TheStyle|=4;
    if(AFont->Style.Contains(fsStrikeOut))
       TheStyle|=8;
    TGlobalFont temp;
    temp.Color=AFont->Color;
    temp.Height=AFont->Height;
    strcpy(temp.Name,AFont->Name.c_str());
    temp.Style= TheStyle;
    return temp;
    }
    


  • Habs grad mal ausprobiert (hab unterdessn nen BCB gefunden (o: )
    ich würd den Richedit-Inhalt in einen MemoryStream speichern und den dann hald noch so verarbeiten, wie du dir das vorstellst. (Wenn ich mich richtig erinnere, entspricht ja ein Zeilenumbruch im RTF einem Zeilenumbruch im Text oder?) Das Schöne an dieser Variante wäre dann die Tatsache, dass du die Texte wieder als RTF und damit portabler als mit eignem Format speichern würdest...

    -junix



  • Hast Du ein Beispiel für einen MemoryStream? Den habe ich noch nie verwendet und wenns Hilfe gibt, muss man die nutzen, oder 😉 ?

    Gruss MacMuess.



  • MacMuess schrieb:

    und wenns Hilfe gibt, muss man die nutzen, oder 😉 ?

    Morgen!

    Genu so seh ich das auch! Darum solltest du auch mal in der BCB-Hilfe nach TMemoryStream gucken 😉



  • Hallo,

    die Lösung scheint wirklich TMemoryStream zu sein. Ich schreibe den Inhalt der RichEdit-Komponente mit SaveToStream() in den Stream und dann gehts es erstmal nicht weiter!
    Ich kann den Inhalt des Streams mit LoadFromStream() auch in eine TListBox schreiben und man sieht dann prima die Steuerzeichen.

    Wie kann ich den nun die Daten aus dem Stream direkt in die Datenbank schreiben? Nicht über TListBox, sondern über mStream->Read()?
    Ich kriege einfach keine Strings erzeugt aus dem TMemoryStream!

    Gibt es Beispiele?

    Gruss MacMuess



  • mit Assign in nen Blob Feld afaik


Anmelden zum Antworten