Seite 1 von 1

ADS OEM/ANSI

Verfasst: Fr, 29. Jul 2016 11:48
von Wolfgang Ciriack
Hallo,
habe jetzt ein Problem festgestellt.
Mein Programm arbeitet noch aus historischen Gründen im OEM Format, Datenbanken sind alle im OEM FOXCDX Format.
Habe im Programm bei Benutzung des ADS folgende Einstellungen:

Code: Alles auswählen

         DbeSetDefault( "ADSDBE" )
         DbeInfo( COMPONENT_DATA, ADSDBE_LOCK_MODE, ADSDBE_COMPATIBLE_LOCKING )
         DbeInfo( COMPONENT_DATA , ADSDBE_TBL_MODE, ADSDBE_CDX )
         DbeInfo( COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_CDX )
         DbeInfo( COMPONENT_DATA, DBFDBE_ANSI, .F.)
Stelle ich mein Programm von FOXCDX auf ADSDBE um, werden mir plötzlich in Browses alte Datensätze Umlaute etc. falsch (in ANSI) angezeigt. Gebe ich neue Datensätze ein, werden die Umlaute korrekt angezeigt. Das Euro-Zeichen (defiiert als chr(213)) wird immer in "_" umgewandelt. Ich dachte, durch DBFDBE_ANSI = .F. wird das OEM Format korrekt unterstützt ?
Oder gibt es irgendwelche Einstellungen, die ich vergessen habe ?

Re: ADS OEM/ANSI

Verfasst: Fr, 29. Jul 2016 14:26
von Jan
Was hast Du denn dem ADS beim Import der dbf gesagt, ws für ein Zeichenformat das ist? Da mußt Du das ja auch immer noch einmal angeben.

Jan

Re: ADS OEM/ANSI

Verfasst: Fr, 29. Jul 2016 14:59
von Wolfgang Ciriack
Ich habe nichts importiert.

Re: ADS OEM/ANSI

Verfasst: Fr, 29. Jul 2016 15:12
von Tom
Nach dem Aufbau der Connection zum ADS:

Code: Alles auswählen

oSession:SetProperty(ADSDBE_OEM_LANG)
Achtung. Deine neuen Datensätze sind in den Tabelle vermutlich in ANSI gespeichert.

Im ADS sollten beide Zeichensatzeinstellungen auf "OEM" stehen.

Re: ADS OEM/ANSI

Verfasst: Sa, 30. Jul 2016 7:55
von Wolfgang Ciriack
oSession:SetProperty(ADSDBE_OEM_LANG)
Das werde ich Montag gleich mal probieren. Danke.

Re: ADS OEM/ANSI

Verfasst: Mo, 01. Aug 2016 16:50
von Wolfgang Ciriack
Hm, das hat erst mal nichts (keine Änderung) gebracht.

Re: ADS OEM/ANSI

Verfasst: Di, 14. Aug 2018 11:28
von Udo
Hallo,

gestern bin ich auch über das Thema gestolpert: ADS OEM und DBF NTX

Es hat sich bei mir so aufgeklärt:
Der ADS verwendet die beim Start des ADS aktive Windows Codepage und die Windows Funktion CharToOemBuffA. (Ich vermute um eine lokale Tabelle für die Konvertierungen zu erstellen).

Aus der Tüte verwendet Windows Codepage 850. Die enthält aber kein € Zeichen. Die "richtige" Codepage wäre 858.

Re: ADS OEM/ANSI

Verfasst: Di, 14. Aug 2018 11:34
von Udo
Hallo,

gestern bin ich auch über das Thema ADS OEM und DBF NTX gestolpert.

Es hat sich bei mir so aufgeklärt:
Der ADS verwendet die beim Start des ADS aktive Windows Codepage und die Windows Funktion CharToOemBuffA. (Ich vermute um eine lokale Tabelle für die Konvertierungen zu erstellen).

Aus der Tüte verwendet Windows Codepage 850. Die enthält aber kein € Zeichen. Die "richtige" Codepage wäre 858.
Umstellen der Standard-Codepage in der Registry unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage . Unter Wert "OEMCP" statt 850 - 858 eintragen. Wirksam wird das nach einem Windows-Neustart.

Arbeiten Server und Clients mit der CP 858 (was anderes habe ich nicht mehr getestet) wird das € Zeichen auch mit dem ADS richtig gespeichert und gelesen.

Glück Auf!
Udo