Announcement

Collapse
No announcement yet.

BDS2006 MS-Acces-Memo als WideMemo

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • BDS2006 MS-Acces-Memo als WideMemo

    Hallo,
    kann mir bitte jemand sagen, warum das BDS2006 über den ADO-Treiber ein MS-Access Memofeld als Widememo-Datentyp erkennt und wie ich den Inhalt dieses 64 Bit Memofeldes in eine TMemo-Komponente importieren kann? Mit CreateBlobStrem und LoadFromStream bekomme ich nur das erste Zeichen des Memofeldes eingelesen, weil das zweite Zeichen auffrund der 64 Bit Structur eine \0 Terminierung ist. :-(

    Vielen Dank!

  • #2
    > kann mir bitte jemand sagen, warum das BDS2006 über den ADO-Treiber ein MS-Access Memofeld als Widememo-Datentyp erkennt

    Weil es korrekt ist. Access ist eine Unicode-Fähige Datenbank. Und eine Memofeld muß damit sinnvollerweise ein Widememo-Datentyp darstellen. Siehe auch meinen <a href="http://qc.borland.com/wc/qcmain.aspx?d=8596">QC</a> Meldung bei Borland)

    > wie ich den Inhalt dieses 64 Bit Memofeldes in eine

    Was sind 64-Bit Memofelder

    Comment


    • #3
      Hallo,

      vielen dank für die Antwort.
      Delphi 6 hat diese Art von Memofeldern aber immer als "normale" Memofelder angezeigt und dort war es auch kein Problem diese über einen Blobstream auszulesen und in einer TMemo Komponente einzutragen. Das geht nun nicht mehr so einfach :-(

      Standart Memofeld = 32 Bit Datentyp
      WideMemo = 64 Bit Datentyp

      Meine Frage wäre nun nochmals: Wie kann ich mit Delphi2006 den Inhalt eines solchen WideMemofeld ein einer TMemo-Komponente anzeigen

      Comment


      • #4
        > Das geht nun nicht mehr so einfach :-(

        Doch, indem du 'ne Memokomponente nimmst die Widestrings unterstützt :-) Oder dir nur klar machst was der unterschied zwischen WideMemo und Memo ist.

        > Standart Memofeld = 32 Bit Datentyp
        > WideMemo = 64 Bit Datentyp

        Das ist falsch verstanden. "Standart Memofeld" ist eine auf ein 8-Bit Ansi-String basierentes Feld. WideMemo ist ein auf ein 16-Bit Widestring basierentes Memofeld.

        Was haßt Du den bisher gemacht? Ich denke 2-3 Zeilen Codeänderung sollten genügen das du auch mit dem "alten" TMemo arbeite

        Comment


        • #5
          Danke für die Info...

          Bisher habe ich immer ganz einfach so in der Art das Memofeld ausgelesen:

          Stream_Memo := ADOQuery_Ergebnis.CreateBlobStream(ADOQuery_Ergebn is.FieldByName('Bemerkung'), bmRead);
          Memo_Bemerkung.Lines.LoadFromStream(Stream_Memo);

          Jetzt wird in dem Memofeld nur noch das erste Zeichen dargestellt, da aufgrund der 16Bit breite das zweite Zeichen '\0' also Stringende ist

          Comment


          • #6
            Entweder du nimmst eine Memo-Control das Unicode kann und damit auch eine Widestring-Stringlist als Items hat oder du lädst ein eine Unicode-Enabled-Stringliste und assignest es deinem "alten" Memo.

            Unicode-Enabled-Controls gibt es mit dem ElPack oder den TNTWare-Controls. Einfach mal googeln

            Comment

            Working...
            X