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
Zmiana stringa na liczby
- cyjan1
- Posty: 70
- Rejestracja: 08 paź 2012 11:55
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: podkarpacie
Re: Zmiana stringa na liczby
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.
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.
Pozdrawiam
Zenek
Zenek
Zmiana stringa na liczby
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.
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.