ADS OEM/ANSI

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

ADS OEM/ANSI

Beitrag 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 ?
Viele Grüße
Wolfgang
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ADS OEM/ANSI

Beitrag 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
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: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: ADS OEM/ANSI

Beitrag von Wolfgang Ciriack »

Ich habe nichts importiert.
Viele Grüße
Wolfgang
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: ADS OEM/ANSI

Beitrag 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.
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: ADS OEM/ANSI

Beitrag von Wolfgang Ciriack »

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: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: ADS OEM/ANSI

Beitrag von Wolfgang Ciriack »

Hm, das hat erst mal nichts (keine Änderung) gebracht.
Viele Grüße
Wolfgang
Udo
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 46
Registriert: Do, 18. Okt 2007 15:37

Re: ADS OEM/ANSI

Beitrag 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.
Udo
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 46
Registriert: Do, 18. Okt 2007 15:37

Re: ADS OEM/ANSI

Beitrag 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
Antworten