Announcement

Collapse
No announcement yet.

BDE und UniCode

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

  • BDE und UniCode

    Hallo,

    ich habe folgendes Problem. Ich möchte über die BDE aus einer MS Access Datenbank UniCode auslesen.

    var
    ws: WideString;
    ...
    ws:=Fields.FieldByName('TEXT').AsString;

    "AsString" liefert immer einen AnsiString zurück, und "AsWideString" gibt es anscheinent nicht. Wie kann ich also Unicode aus einer Tabelle bekommen? Und Später auch wieder schreiben.

  • #2
    Probier mal es mit AsVariant
    <pre>
    try
    myVariant := Fields.FieldByName('TEXT').AsVariant;
    ws := myVariant;
    finally
    ws := '';
    end;
    </pre>
    Ein Try..Except ist nötig, da bei einem Null-Wert im Feld eine Exception kommt. Alternativ könntest Du zuvor auf NULL abprüfen.

    Aber wieso nimmst Du BDE. ADO ist doch pflegeleichter bezüglich Access-Zugriff, da es meißt schon passend installiert ist und die BDE alles andere als Zukunftsträchtig ist

    Comment


    • #3
      Als Variant habe ich es auch schon Probiert, funktioniert auch nicht. Ich bekomme ebenfalls nur Fragezeichen an den entsprechenden Stellen zurück.
      Die ADO nehme ich nicht, da ich evtl. auch auf MySQL zugreifen muß. Ich würde da dann die selben Strukturen anlegen, dann brauche ich nur noch Den Treiber umzuschalten.
      Trotzdem danke für den Tipp

      Comment


      • #4
        Es sollte mit AsVariant gehen, außer deine Delphi-Version hat hier noch einen Bug (ich habe D6).

        Willst Du mehrere DB's untestützen, so solltest Du jeweils die native-Schnittstelle nehemn (MS-SQL -> ADO, MySQL -> libmysql.dll) und dein Programm auf TDataset-Basis entwickeln (es gibt genügend Komponenten für MySQL und Delphi, die TDataset-Nachfolger-Komponenten haben. Das Stichwort für unterstützung mehrere Datenbanken ist das Bridge-Pattern

        Comment


        • #5
          Hmm... Also ich hab Delphi7 und wenn ich mir das ganze als Variant zurück geben lasse, konvertiert er jedes Sonderzeichen trotstem als "?"

          Comment


          • #6
            Wie läst Du dir denn die Sonderzeichen anzeigen

            Comment


            • #7
              Zuerst habe ich eine selbst geschriebene Komponente erweitert, es gab allerdings dabei einige sachen, die ich dann noch implementieren müßte. Zur Zeit verwende ich das ElPack, das von LMD runtergeladen werden kann. Dieses hattest du mir in einem anderen Threat empfohlen. Ich muß nur nachsehen, ob ich die Komponente wirklich verwenden kann. Soweit ich weiss hat sie kein OnMouseEnter und OnMouseLeave Event. Eventuel muß ich die Komponente dann erweitern.

              Ach, da du dich wohl auch schon längere Zeit mit dem Thema Multilanguage rumschlägst... Ich habe hier ein Arial Unicode Zeichensatz. Das verdamte ding hat allerdings 22MB. weisst du, obs da noch kleinere Varianten gibt? Und wenns nur 5MB weniger wären wärs auch schon gut. Sollte allerdings schon Arial sein. Also ich denke das ich z.b. keine Chinesischen und Arabischen Zeichen brauchen werde (wenn die da drin sind)

              Comment


              • #8
                Wenn Du 2000/XP/2003 hast bzw. auf dem Client vorhanden ist, so kannst Du dir MS Arial Unicode sparen (Diesen Font darst Du auch nicht mit deinem Programm verteilen, da er nur mit MS Office verteilt werden darf).

                Unter NT-Systemen (Weiß jedoch nicht ob das auch für NT direkt gilt, kannst Du das System über die Systemeinstellungen, Regions und Sprachoptionen so einstellen, das jede Beliebige Sprache installiert wird. Dabei werden einige MB von den Installations-CD's auf den Computer kopiert (Erweiterte Fonts, ...). Über Font-Link werden dann z.B. Tahoma oder Arial auch die Zeichen für die gewünschten Fonts untergeschoben.

                So wird z.B. Tahoma die Fonts MSGOTHIC.TTC,MS UI Gothic, gulim.ttc,gulim, SimSun.TTC,SimSun, mingliu.ttc,PMingLiU untergeschoben damit auch Arabisch, Chinesich, ... von Tahoma direkt unterstützt wird. (Siehe Registry HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontLink

                Comment

                Working...
                X