Strona 1 z 1

Zmiana stringa na liczby

: 27 mar 2017 09:00
autor: Paw Saw
Witam,

Mam pewien problem z konwersją stringa na wartości liczbowe. W swojej aplikacji korzystam z kilku parametrów, które wysyłane są z PLC do LabView jako ciąg znaków. Wszystkie parametry oddzielone są od siebie za pomocą znaku '#' (przykładowy string: +1.300000E+1#+2.000000E+1#+1.800000E+1#...#). Następnie używając bloczka 'Search/Split String' dzielę string na poszczególne parametry i korzystając z 'Fract/Exp String to Number' zmieniam je na wartości liczbowe. Na dwóch komputerach wszystko działa jak należy, jednak na trzecim coś jest nie tak... LabView zachowuje się tak, jakby kropka była znakiem niedozwolonym i wszystko co po niej występuje, jest "obcinane". Macie może jakieś pomysły, czym jest to spowodowane? Z góry dziękuję za odpowiedzi.

Pozdrawiam

Re: Zmiana stringa na liczby

: 27 mar 2017 09:27
autor: cyjan1
Witam,
na trzecim komputerze prawdopodobnie masz system w języku polskim. Funkcja domyślnie zaciąga separator dziesiętny z ustawień systemu.
Ustaw wejście use system decimal point (T) bloczka Fract/Exp String To Number na false. Wtedy zawsze kropka będzie separatorem dziesiętnym.

Re: Zmiana stringa na liczby

: 27 mar 2017 09:59
autor: Paw Saw
Działa! Dzięki!

Zmiana stringa na liczby

: 29 mar 2017 08:35
autor: micard
I tu trzeba uważać, ponieważ, LV w swoich bloczkach konwersji nie używa separatora z ustawień regionalnych, tylko systemowego separatora ustawionego w system locale przy instalacji systemu operacyjnego. Ten już nie tak łatwo zmienić.

Jak pisze Cyjan1, w wielu bloczkach jest wejście pozwalające na wymuszenie separatora '.', niemniej już takiej opcji nie ma przy "format into string". Tam trzeba posiłkować sie flagą stringa formatującego %.; (np %.;%f.3 definiuje konwersję do liczby z trzema miejscami po "kropce" ).

Watro od samego początku pisania programu wybrać jedną konwencję i się jej mocno trzymać - inaczej problemy pojawią się jak tylko przeniesiemy aplikację na komputer z innymi ustawieniami.