ADS OEM/ANSI

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2422
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Kontaktdaten:

ADS OEM/ANSI

Beitrag von Wolfgang Ciriack » Fr, 29. Jul 2016 11:48

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 ?
Viele Grüße
Wolfgang

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13073
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: ADS OEM/ANSI

Beitrag von Jan » Fr, 29. Jul 2016 14:26

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2422
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Kontaktdaten:

Re: ADS OEM/ANSI

Beitrag von Wolfgang Ciriack » Fr, 29. Jul 2016 14:59

Ich habe nichts importiert.
Viele Grüße
Wolfgang

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7287
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: ADS OEM/ANSI

Beitrag von Tom » Fr, 29. Jul 2016 15:12

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.
Herzlich,
Tom

Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2422
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Kontaktdaten:

Re: ADS OEM/ANSI

Beitrag von Wolfgang Ciriack » Sa, 30. Jul 2016 7:55

oSession:SetProperty(ADSDBE_OEM_LANG)
Das werde ich Montag gleich mal probieren. Danke.
Viele Grüße
Wolfgang

Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2422
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Kontaktdaten:

Re: ADS OEM/ANSI

Beitrag von Wolfgang Ciriack » Mo, 01. Aug 2016 16:50

Hm, das hat erst mal nichts (keine Änderung) gebracht.
Viele Grüße
Wolfgang

Udo
Rookie
Rookie
Beiträge: 19
Registriert: Do, 18. Okt 2007 15:37

Re: ADS OEM/ANSI

Beitrag von Udo » Di, 14. Aug 2018 11:28

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.

Udo
Rookie
Rookie
Beiträge: 19
Registriert: Do, 18. Okt 2007 15:37

Re: ADS OEM/ANSI

Beitrag von Udo » Di, 14. Aug 2018 11:34

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

Antworten