Select Location

Unter Windows 10 (IPS 5.3 vom 16.12.) kommt es beim Speichern der Form zu einer Fehlermeldung.
Unter Linux Systemen (Symbox, Docker und Ubuntu) nicht.

Eigentlich dürfte das nicht an der Server-Platform liegen. Hast du für deine Tests immer den selben Browser/selbes OS verwendet?

paresy

Also die Fehler stammen von der API.
Und den Grund dafür habe ich jetzt auch gefunden.

Wenn ich im Modul die Werte vom Property für die Location auslese


$location = json_decode($this->ReadPropertyString('Location'), true);

dann macht IPS unter Windows 10 aus den Dezimal Punkten Dezimal Kommas.
Unter Linux bleiben die Punkte auch Punkte.:confused:

Warum auch immer.


str_replace richtet das wieder :rolleyes:

Vorsicht!
Du darfst dich nicht auf Ausgaben wie z.B. Echo verlassen.
Dabei wird immer auf String konvertiert und dabei deine Spracheinstellungen beachtet.
Solange du die Variable nicht zu einen String veränderst, wird es ein float und somit kompatibel bleiben.
Wenn es unter Linux nicht Auftritt, ist dort die Systemsprache nicht Deutsch.
Michael

Jup, habe ich jetzt auch festgestellt :D.
Das Problem ist nur, sobald ich die Variable in die Url für einen Curl Aufruf übergebe wird es ein String, und dann ist es da, das Problem :cool:

Kann man das irgendwie temoprär mit setlocale oder so umgehen?

Das ist böse, und du funktioniert in Symcon auch nicht mehr.
Es gibt extra Funktionen dafür.
Wie
PHP: number_format - Manual
Oder auch
PHP: sprintf - Manual Parameter F ist local unabhängig.
Michael

:banghead: Es könnte alles so einfach sein :smiley:

Deutsch und Programmiersprachen passen nicht richtig zusammen :cool:

number_format rückt nun alles ins rechte Licht!

Merci Danke und frohes Fest.

PS.: Gibt’s es eine Möglichkeit die aktuellen locales abzufragen.
Bin felsenfest davon überzeugt, dass Ubuntu wie Windows 10 auf deutsch eingestellt ist.

PHP: setlocale - Manual
Bin mir aber gerade nicht sicher ob das unter Symcon funktioniert.
Damit bekommt man eigentlich die Parameter ausgelesen, außer Symcon unterbindet den ganzen Befehl.
Sonst phpinfo.
Michael

setlocale ist gesperrt :rolleyes:

Jetzt weiß ich ja worauf ich achten muss, bis zum nächsten Mal, dann habe ich das wieder vergessen :smiley: