Wczytywanie pliku tekstowego

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Wczytywanie pliku tekstowego

Post autor: rexio1988 »

Da się jakoś (nie wiem czy to w jakimś warunku albo strukturze) 8 stringów do tego jednego case structure podpiąć (w tym, którym następuje konwersja string->liczba)?
Awatar użytkownika
smiga
Administrator
Posty: 799
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk

Re: Wczytywanie pliku tekstowego

Post autor: smiga »

Zasada jest prosta - da się wszytko :-) ... ale nie rozumiem pytania :-( ... troszkę precyzyjniej proszę albo wyślij kod, może być niedziałający, z opisem jaki dokładnie chcesz osiągnąć wynik.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Re: Wczytywanie pliku tekstowego

Post autor: rexio1988 »

Z tą konwersją sobie poradziłem, tylko mam jeszcze problem. Podczas wczytywania tego całościowego pliku wyskakuje mi bodajże 8 błędów i nie mam już pojęcia co jest nie tak. Jeśli chciałoby się komuś zajrzeć w program i plik tekstowy i napisać co jest w tym wszystkim nie tak byłbym bardzo wdzięczny. Program i plik txt zamieściłem w załączniku.

Edit1: Znalazłem błąd w pliku tekstowym. Jest 8 pozycji, w których nie ma zapisanych danych (linie w pliku tekstowym: 142724 - 142731), jest po prostu puste miejsce. Wstawiłem w case structure (to gdzie odbywa się konwersja) coś takiego: " ", niestety nie pomogło. Jak "odczytać" puste miejsce w pliku i zamienić je np. na "0"?

Edit2: I chyba trzeba by te puste miejsce uwzględnić jakoś w kontrolce "Scan from string - format string", tylko jak to zrobić?
Załączniki
projekt labview.rar
(1.98 MiB) Pobrany 397 razy
Ostatnio zmieniony 12 maja 2012 12:37 przez rexio1988, łącznie zmieniany 3 razy.
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Wczytywanie pliku tekstowego

Post autor: PiDi »

A nie wystarczy po prostu sprawdzić, czy jest błąd i w takim przypadku zapisać informację o tym błędzie (i linii, w której wystąpił)? I na końcu wyświetlić użytkownikowi? Zresztą, co ja będę pisał - załącznik.
Dodałem tam case structure z errorem. W "Error" robię to, o czym napisałem. W "No Error" jest twój kod - tylko poprawiony, bo poczułem nagłą potrzebę usunięcia złych nawyków i zoptymalizowania tego VIja :D
Załączniki
prog.vi
(26.41 KiB) Pobrany 392 razy
ObrazekObrazekObrazekObrazek
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Re: Wczytywanie pliku tekstowego

Post autor: rexio1988 »

Dzięki za poprawienie kodu i zainteresowanie, jednak nie do końca o takie rozwiązanie mi chodziło. Nie chodziło mi o wyświetlanie błędów, tylko raczej o pominięcie ich i zamiast np. pustego miejsca wstawienie zera. Bo tak jak to zrobiłeś wyświetla błąd, ale w tablicy końcowej nie ma danych z linii, w której brakuje jednego lub więcej pomiarów.
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Wczytywanie pliku tekstowego

Post autor: PiDi »

Tyle, że tak naprawdę nie wiesz, którego programu brakuje. Znaczy Ty może i wiesz, bo po wartościach mniej więcej widać, tylko ciężko to programowi wytłumaczyć. Najprostszym rozwiązaniem w takiej sytuacji jest albo uznać, że te linijki są po prostu złe i je odrzucić, albo je sobie ręcznie uzupełnisz o te zera, bo nie ma ich dużo. Przy czym ja bym zaczął od poszukania przyczyny, dlaczego tych pomiarów tam brakuje - musisz zawsze zapewnić, że plik pomiarowy będzie prawidłowo stworzony, bo bez tego później właśnie takie kwiatki wyskakują.
ObrazekObrazekObrazekObrazek
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Re: Wczytywanie pliku tekstowego

Post autor: rexio1988 »

Plik prawdopodobnie nie będzie tylko ten jeden, a program, który tworzy ten plik został stworzony przez prowadzącego lub innego studenta. Będę musiał z prowadzącym pogadać, żeby to poprawił. Innej opcji nie ma, żeby te wolne miejsca zamienić jakoś na wartość 0?

Edit1: Dlaczego w kontrolce "unbundle" po konwersji jest 9 pozycji "DBL" skoro na wejściu "przed konwersją" jest 8 pozycji? Pytam czysto teoretycznie. Próbowałem to wcześniej jakoś poprawić, ale nie wiem dlaczego tak jest.
Ostatnio zmieniony 12 maja 2012 13:41 przez rexio1988, łącznie zmieniany 2 razy.
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Wczytywanie pliku tekstowego

Post autor: rexio1988 »

ref
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Wczytywanie pliku tekstowego

Post autor: PiDi »

Posypałeś pochwałami, to teraz nie można nie odpisać :D :D :D
rexio1988 pisze:Plik prawdopodobnie nie będzie tylko ten jeden, a program, który tworzy ten plik został stworzony przez prowadzącego lub innego studenta. Będę musiał z prowadzącym pogadać, żeby to poprawił. Innej opcji nie ma, żeby te wolne miejsca zamienić jakoś na wartość 0?
Tak jak mówiłem - z punktu widzenia programu nie wiadomo, której wartości brakuje, trzeba by było zrobić sporo dodatkowego kodu sprawdzającego "poprawność" linii i próbującego wywnioskować, czego brakuje. Jeśli ten problem to taki mały, jednorazowy wyskok, to nie pakowałbym się w to.
Edit1: Dlaczego w kontrolce "unbundle" po konwersji jest 9 pozycji "DBL" skoro na wejściu "przed konwersją" jest 8 pozycji? Pytam czysto teoretycznie. Próbowałem to wcześniej jakoś poprawić, ale nie wiem dlaczego tak jest.
Pokaż na obrazku, o które miejsce Ci chodzi?
ObrazekObrazekObrazekObrazek
rexio1988
Posty: 16
Rejestracja: 22 lis 2010 14:50
Wersja środowiska: LabVIEW 2011

Re: Wczytywanie pliku tekstowego

Post autor: rexio1988 »

Pokaż na obrazku, o które miejsce Ci chodzi?
prog.png
Chodzi o te miejsca zaznaczone czerwonymi prostokątami.
Ostatnio zmieniony 14 maja 2012 11:42 przez rexio1988, łącznie zmieniany 1 raz.
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Wczytywanie pliku tekstowego

Post autor: PiDi »

Kliknij prawym na bloczek Array To Cluster (ten, który jest przed Unbundle) i wybierz Cluster Size... Możesz tam sobie ustawić, jakiego rozmiaru ma być wyjściowy klaster (czyli z ilu elementów tablicy go zbudować).
ObrazekObrazekObrazekObrazek
ODPOWIEDZ