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: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von BJelinek »

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

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von brandelh »

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: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von BJelinek »

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.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von AUGE_OHR »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von brandelh »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von brandelh »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von brandelh »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von BJelinek »

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.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von AUGE_OHR »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von brandelh »

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: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von AUGE_OHR »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses »

Hi

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

Guss Carlo
Valar Morghulis

Gruss Carlo
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von AUGE_OHR »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Schweiz Zahlen 123Æ234.00 statt 123'345.00

Beitrag von ramses »

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
Valar Morghulis

Gruss Carlo
Antworten