Zmiana stringa na liczby

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Paw Saw
Posty: 29
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2015

Zmiana stringa na liczby

Post autor: Paw Saw » 27 mar 2017 09:00

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

Awatar użytkownika
cyjan1
Posty: 61
Rejestracja: 08 paź 2012 11:55
Wersja środowiska: LabVIEW 2013
Lokalizacja: Tarnobrzeg

Re: Zmiana stringa na liczby

Post autor: cyjan1 » 27 mar 2017 09:27

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.
Pozdrawiam
Zenek

Certified TestStand Architect

Paw Saw
Posty: 29
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2015

Re: Zmiana stringa na liczby

Post autor: Paw Saw » 27 mar 2017 09:59

Działa! Dzięki!

Awatar użytkownika
micard
Posty: 133
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2016
Has thanked: 4 times
Been thanked: 2 times
Kontakt:

Zmiana stringa na liczby

Post autor: micard » 29 mar 2017 08:35

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.

ODPOWIEDZ