ich experimentiere gerade mit Abfragen von dBase-Tabellen. Klappt auch soweit ganz gut, nur hab' ich ein Problem bei Umlauten. Mir ist bekannt, dass dBase im alten DOS-Format speichert (glaube cp850) und Lazarus UTF8 verwendet. Die Tabellen sind lesbar und auch die Abfrage klappt....
...solange eben kein Umlaut abgefragt wird. Habe aktuell folgenden Code:
Code: Alles auswählen
if not ControlsDisabled then DisableControls;
FilterOptions:=[foCaseInsensitive];
//Suche nach Buchstaben
Filter:=Format('NNAME="%s*"',[DBStr]);
Filtered:=True;
if ControlsDisabled then EnableControls;
Die Variable 'DBStr' enthält den Text aus einer Combobox, der mit ComboBox.Text der Funktion übergeben wird. Das DBGrid aktualisiert bei jeder Änderung der Eingabe, da die Funktion über das OnChange Ereignis gesteuert wird. Interessanterweise wird auch in der Combobox schon der (vorläufig) richtige Name aus der Datenbank gefiltert und angezeigt (Windows) und auch das DBGrid reduziert sich mit der Auswahl auf die noch möglichen Alterativen, außer bei einem Umlaut, dann zeigt nur noch der Combobox.Text den kompletten Namen, während das DBGrid leer dargestellt wird.
Bisherige Versuche mit der Unit 'LConvEncoding', die auch die Umwandlung von UTF8 zu CP850 oder CP437 unterstützt funktionieren leider nicht. Also, entweder nutzt dBase eine andere Codepage oder irgendwas klappt mit der Umwandlung nicht. Ich glaube an Letzteres, denn wenn ich die Datenbankdatei mit einem Texteditor öffne sehe ich eine andere Kodierung/andere Zeichen als im Debugger. Kennt jemand da eine Lösung?