Schweiz Zahlen 123Æ234.00 statt 123'345.00

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 115
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen

Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von BJelinek » Do, 22. Mär 2018 11:50

Hallo

ich habe bei einem Schweizer Kunden plötzlich auf einen PC Win10Pro 64Bit
dass die Zahlen mit Tausender-Trenn-Zeichen nicht mehr richtig dargestellt werden.

Statt 123'345.00 erscheint statt dem < ' > ein anderes Zeichen < Æ >.
also 123Æ345.00

Woran kann das liegen ?
Kann das in Xbase++ beeinfußt werden.
In den Windows einstellungen intl.cpl hab ich geschaut, das sieht es richtig aus.
In Excel auch.

Aber nur bei einen Benutzer.

Mein Programm ist GUI=NO also im VIO Modus
In der Console wird chcp 437 gesetzt und alles OEM

Die PICT Anweisung lautet "@E 9999999.99"

Habt Ihr mir einen Tip, wie das problem zu lösen ist ?
Gruß
Bernd

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14504
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von brandelh » Do, 22. Mär 2018 13:43

Da das ' Zeichen bisher gestimmt hat und in Excel stimmt, ist der Rechner zumindest optisch grundsätzlich richtig eingestellt.
Das ' Zeichen sollte eigentlich immer chr(39) sein und somit in OEM und ANSI identisch !
Das von dir gezeigte Æ ist in meiner Ansi Tabelle chr(198) ...

In Xbase++ gibt es eine Funktion die solche Zeichen setzt bzw. anzeigt, grundsätzlich wird die Einstellung vom Betriebssystem genommen.
Und bei GUI=NO bestimmt das Fenster und dessen Windows Einstellung den Zeichensatz !

Nur beim Euro Zeichen muss man das (bei GUI=YES) setzen.

Aber in der Hilfe zu SetLocale() steht genau dein Zeichenformat, wenn man das dann eingestellt hat, sollte es auch immer stimmen.
@E nutzt ja die Windows Einstellung, die bei mir in D immer richtig war ;-)

Code: Alles auswählen

 #include "Nls.ch"
...
LOCAL nNumber := 12345.67
LOCAL cPicture:= "@$ 999,999.99"
...
SetLocale( NLS_STHOUSAND, "'"  )
SetLocale( NLS_SDECIMAL , "."  )
SetLocale( NLS_SCURRENCY, "FF" )

? Transform( nNumber, cPicture )     // result: 12'345.67 FF

Der Wert von SetLocale( NLS_ICURRENCY, ... ) könnte auch interessant sein.
Gruß
Hubert

Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 115
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von BJelinek » Fr, 23. Mär 2018 10:54

Hallo Hubert,

Danke für die Info, werd mich mal einlesen.

Weiter Info vom Kunden.

Es hängt an dem Profil des Nutzers.
Egal an welchem PC Sie sich einlockt mir Ihrem Profil
tritt das Problem auf.

Schicke mal ein Anfrage an Alaska.
Gruß
Bernd

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11350
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von AUGE_OHR » Sa, 24. Mär 2018 6:09

BJelinek hat geschrieben:
Fr, 23. Mär 2018 10:54
Es hängt an dem Profil des Nutzers.
Egal an welchem PC Sie sich einlockt mir Ihrem Profil
tritt das Problem auf.
das einfachste wäre einen neuen Account anzulegen ... ich habe doch so einen User "B" [-X

das es in Excel Stimmt hat IMHO nichts zu sagen und "könnte" sogar die Ursache für das Problem sein.

Frage : ist ein weiteres "Keyboard" Schema installiert :?:

wenn man eine Excel Datei bekommt mit chinesichen Zeichen und die öffnet dann wird Excel gewöhnlich erst mal meckern wegen Font. der User klickt, ohne gross zu lesen, auf OK und Excel wenn mit Internet verbunden holt sich was ihm fehlt.
so weit so gut aber es passiert auch das er das "passende" Keyboard holt und es dann auf CN steht ... :roll:

ich prüfe deshalb bei den chinesischen Apps wie die "aktuelle" Keyboard Einstellung ist wenn die App Focus hat

Code: Alles auswählen

   nCountry := GetKeyboardLanguage()
   IF nCountry = 1031                                       // German
      ID_CHINA := .F.
   ELSEIF nCountry = 1033                                   // English
      ID_CHINA := .T.
   ELSEIF nCountry = 2052                                   // CN RPC
      ID_CHINA := .T.
   ELSE
      ID_CHINA := .T.                                       // chinesisches OS
   ENDIF

FUNCTION GetKeyboardLanguage()
   LOCAL nLayout := DllCall( "user32.dll", DLL_STDCALL, "GetKeyboardLayout", 0 )
RETURN bAnd( nLayout, 0xFFFF )
gruss by OHR
Jimmy

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses » Fr, 27. Apr 2018 8:46

Hallo

seit dem letzten Update liefert mir die Funktion transform( nZahl, "9,999,999.99" ) nicht mehr die korrekte Formatierung sondern als Tausender Markierung das "AE" anstelle eines Apostroph der Dezimalpunkt ist noch vorhanden.

Weiss jemand was Alaska hier geändert hat?


Gruss Carlo

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14504
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von brandelh » Fr, 27. Apr 2018 9:24

Laut erstem Beitrag hat BJelinek das gleiche Problem.
Oben habe ich die Landeseinstellungen für die Schweiz genannt, aber was und ob Alaska was geändert hat, können nur die sagen.
Ich vermute eher dass in den Landeseinstellungen der Rechner was geändert wurde; evtl. hat Microsoft eine andere Vorgabe ...
nach meinen Infos sind die Vorgaben in der Schweiz auch nicht eindeutig - also je nach Sprache unterschiedlich - aber genau weiß ich das nicht.
Gruß
Hubert

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses » Fr, 27. Apr 2018 10:44

Hallo Hubert

die EInstellungen
SetLocale( NLS_STHOUSAND, "'" )
SetLocale( NLS_SDECIMAL , "." )
sind gesetzt. L&L der die PC Einstellungen verwendet arbeitet richtig. Nur die Transform() - Funktion spinnt.
Nach ein wenig Nachforschen habe ich herausgefunden dass diese bis 2015 korrekt funktioniert hat.
Danach waren die "Tausender"- Zeichen Leerzeichen.
So war die Zahl auch lesbar.
Seit der 886 kommen aber AE's und so ist die Zahl nicht mehr so einfach lesbar. Jedenfalls möges die Kunden nicht was jetzt geändert werden muss.


Gruss Carlo

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14504
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von brandelh » Fr, 27. Apr 2018 10:56

In der Doku zu den builds steht nichts und die Hilfe zu transform() wurde nicht geändert.

Nochmal, Alaska fragen, ich denke es ist eine Nebenwirkung wie vor kurzem beim XbpFileDialog(), der die Verarbeitung ausgebremst hat. ;-)
Gruß
Hubert

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses » Fr, 27. Apr 2018 13:19

Hallo Hubert

eine Lösung von Alaska ist keine Option. Das Problem muss schnellst möglich gelöst werden.

Ich vermute mal dass Transform den gewählen Zeichensatz nicht mehr berücksichtigt.
Und ANSI verwendet. Chr(146) ist in ANSI der Apostoph unter OEM das AE Zeichen. (Ich verwende OEM)

Eine Lösung habe ich gefunden: transform( nZahl, "9'999'999.99" ) liefert dann den korrekten Output.


Gruss Carlo

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14504
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von brandelh » Fr, 27. Apr 2018 13:22

schön wenn du eine Lösung gefunden hast, notfalls kann man sich ja auch was mit substr() basteln,
aber deine Frage war, ob Alaska da was gemacht hat und das kann nur Alaska beantworten :wink:
Gruß
Hubert

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses » Fr, 27. Apr 2018 13:29

Hallo Hubert

ja, da hast du recht.

Ich werde mich noch an Alaska wenden.
Es kam heute grosse Panik auf weil alle Quartalsmedungen nicht mehr korrekt gedruckt werden konnten...... Da kannst du einfach nicht Tage oder Wochen auf eine Lösung von Alaska warten.


Gruss Carlo

Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 115
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von BJelinek » Fr, 27. Apr 2018 14:22

Hallo Ramses,

ich hatte das gleiche Problem bei einem
Schweizer Kunden und nur auf einem Rechner.

Habe dann folgendes in die APPSYS.PRG eingebaut.

Code: Alles auswählen

// Korrektur Tausender Trennzeichen

IF SetLocale(NLS_STHOUSAND) = "Æ"
 SetLocale(NLS_STHOUSAND,"'")
endif

Wenn man sich die Einstellungen anschaut sind das unterschiedliche Trennzeichen in ANSI
' oder ` oder ´
Du kannst auch den ASC(nnn) Wert nehmen.
Bei mir hat es geholfen.

Glaube eher es liegt an Windows, denn der Rechner hatte vorher in Office gesponnen
und das Profil war zerschossen.

Nach Office neu Installation trat das Problem auf.
Gruß
Bernd

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses » Fr, 27. Apr 2018 17:59

Hallo Bernd

da könntest du durchaus auf der richtigen Spur sein.
Alle betroffenen Rechner hatten schon mehr als eine Office Installation.
Bei anderen ohne Office oder mit unbenutztem Office tritt der Fehler nicht auf.
Ich versuche auf einem der betroffenen Rechner mal einige Tests durchzuführen....

Gruss Carlo

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11350
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von AUGE_OHR » Sa, 28. Apr 2018 2:56

Office macht ja alles in Unicode und solche Symbole könnten was mit anderen Fonts zu tun haben.
Frage : sind asiatisch Schriften auf den PCs installiert ?
gruss by OHR
Jimmy

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses » Sa, 28. Apr 2018 22:43

Hallo Jimmy

nein. Es sind nur die Standardzeichensätze installiert.

Merkwürdig ist ja dass Transform() den falschen ASCII-Code verwendet. Bezw. bei einem repla feld with transform(....) steht im Feld der Dantenbank auch der falsche ASCII-Wert des Apostroph. Es ist also nicht unbedingt ein Problem des Druckens.

Gruss Carlo

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14504
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von brandelh » Mo, 30. Apr 2018 14:34

Transform nimmt den in Windows dafür eingestellten Ansi Code - ich denke mal dass bei diesen Rechnern dort ein anderes Zeichen hinterlegt ist.
Sonst müsste es bei allen auftreten ;-)
Gruß
Hubert

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11350
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von AUGE_OHR » Mo, 30. Apr 2018 15:19

es gibt das Demo \SOURCE\samples\solution\calcsle\calcsle.prg sowie SDI-/MDI-Demo welche Transform() verwenden.
teste die doch mal auf den betreffenden PC ... auch mal als anderer User (auf dem selben PC)
gruss by OHR
Jimmy

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses » Di, 01. Mai 2018 21:27

Hi

nach dem Update auf W10 / 1803 habe das Problem nun auch auf meinm PC.

Guss Carlo

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses » Mi, 02. Mai 2018 19:30

Hallo

in den Windows Einstellungen ist beim "Symbol der Zifferngruppierung" der Apostroph 2 Mal vorhanden. Mit dem einen hat xbase Probleme mit dem anderen ist die Darstellung korrekt. L&L funktioniert mit beiden korrekt.

Auch wenn der "richtige" Apostroph gewählt ist ändert dies irgend ein Programm wieder auf den "falschen" ....

Der Befehl
SetLocale(NLS_STHOUSAND,"'")
am Anfang des Programm beseitigt nach erstem Augenschein das Problem im Alaska Programm ob sich daraus aber andere Probleme ergeben weiss ich noch nicht. Auch nicht wieso das Problem erst jetzt auftrat.

Alaska meint dazu:
Die Änderung rührt von einer Änderung Ihrer Anwendung....
was aber definiv ausgeschlossen werden kann.

Gruss Carlo

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11350
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von AUGE_OHR » Do, 03. Mai 2018 10:21

ramses hat geschrieben:
Mi, 02. Mai 2018 19:30
Alaska meint dazu:
Die Änderung rührt von einer Änderung Ihrer Anwendung....
was aber definiv ausgeschlossen werden kann.
ist an dem Schweizer Keyboard Layout was anders als bei DE :?:
was passiert wenn du es auf EN stellst mit TRANSFORM() :?:
gruss by OHR
Jimmy

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses » Do, 03. Mai 2018 11:03

Hallo Jimmy

ja das Schweizer Layaut unterscheidet sich vom Deuschen für Deutschland. Vorallem sind die meisten Zeichen wie @/\()[] usw. auf anderen Tasten.
siehe z.b. Wicki -> Tastaturlayout SG
EN kann ich nicht Testen ist nicht installiert.
Vorallem ändert sich dabei nicht die "Region" mit den zugehörigen Länderspezifischen Zeichen um die es geht.
Einstellungen->Zeit und Spache->Region und Sprache->Zeit und Region->Datum Uhrzeit Zahlenformat->Weitere->Zahlen


Gruss Carlo

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses » Mi, 09. Mai 2018 20:01

Hallo

nach neuer Aussage von Alaska liegt das Problem bei einer nicht korrekten Umsetzung der Systemeinstellung von ANSI --> OEM .
Abhilfe: vorerst: SetLocale(NLS_STHOUSAND,"'")

Gruss Carlo

Antworten