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: 37
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2017

Zmiana stringa na liczby

Post 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
Obrazek
Awatar użytkownika
cyjan1
Posty: 63
Rejestracja: 08 paź 2012 11:55
Wersja środowiska: LabVIEW 2017
Lokalizacja: podkarpacie

Re: Zmiana stringa na liczby

Post 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.
Pozdrawiam
Zenek
Paw Saw
Posty: 37
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2017

Re: Zmiana stringa na liczby

Post autor: Paw Saw »

Działa! Dzięki!
Obrazek
Awatar użytkownika
micard
Posty: 207
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2017
Kontakt:

Zmiana stringa na liczby

Post 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.
ODPOWIEDZ