Strona 1 z 1
sekwencyjne wczytywanie wartości
: 11 paź 2012 10:03
autor: honda
Witam,
jak zrobić, żeby odczytywać wartości np. z pliku tekstowego sekwencyjnie, tzn linia po lini. Chciałbym aby można było odczytywać cały plik danych od pierszej lini do ostatniej i z powrotem.
pozdro
Re: sekwencyjne wczytywanie wartości
: 11 paź 2012 11:46
autor: Grzesiek080
Hejka,
Zrób odczyt całego pliku za pomoca "Read from Text File". Nastepnie wprowadź odczytany "text" to do multi line index funkcji "Pick Line", gdzie za pomoca paraametru "Line Index" podajesz numer linii którą chcesz odczytać.
pozdrawiam
Re: sekwencyjne wczytywanie wartości
: 11 paź 2012 12:07
autor: Pitol
Odczytanie całego pliku może stwarzać problemy, szczególnie jeśli plik jest bardzo duży.
Zdecydowanie prostsze rozwiązanie:

- ReadLines.png (18.34 KiB) Przejrzano 16897 razy
Bloczek Read Text File ma ustawioną opcję Read Lines (prawym na bloczek).Trzeba jeszcze obsłużyć błąd w momencie gdy nie ma już linii (ostatnia iteracja pętli) ale z tym to sobie poradzisz ;)
Gdybyś chciał również czytać plik liniami od tyłu to stworzyłem jakiś czas temu funkcję, która się do tego nadaje:
https://decibel.ni.com/content/docs/DOC-18404
Re: sekwencyjne wczytywanie wartości
: 11 paź 2012 12:44
autor: Grzesiek080
Świetne rozwiązanie Pitol. Powiedz mi jeszcze jak to się dzieje, że przy każdym obrocie pętli jest wczytywana kolejna linia. Skąd ta funkcja wie gdzie wcześniej czytała?
Ja pominałem shift register i dalej to działa.....
sekwencyjne wczytywanie wartości
: 11 paź 2012 13:30
autor: Pitol
Rejestr jest zbędny, tak mi się przypadkiem dodał.
Funkcja do odczytu (Read Text File) z pliku działa w taki sposób, że po każdym odczycie (linii, znaku) zmienia się pozycja, z której rozpocznie się następny odczyt. Zapamiętuje się to tak jakby w tej otwartej referencji do pliku.
Gdybyśmy po każdym odczycie zamykali referencję to każdy odczyt generowałby pierwszy wiersz.
Jest to przydatna cecha tej funkcji, jeśli się potrafi ją wykorzystać. Można oczywiście samemu ustawiać pozycję w pliku za pomocą odpowiednich bloczków (paleta File I/O -> Advanced). Ich użycie jest np. zaprezentowane na przykładzie czytania linii od końca pliku w moim poprzednim poście.
Re: sekwencyjne wczytywanie wartości
: 11 paź 2012 16:24
autor: honda
Witam,
faktycznie fajnie to działa, tylko ja bym potrzebował na wyjsciu DBLa ;). Da sie to przekonwertować ?
pozdro
sekwencyjne wczytywanie wartości
: 11 paź 2012 18:34
autor: Pitol
Paleta String -> Conversion (chyba) -> Fractional String to Number
Re: sekwencyjne wczytywanie wartości
: 12 paź 2012 08:49
autor: honda
Czesc,
no tak, na to to wpadłem ;), tylko ze zamienia mi na DBLa pierwszą liczbę w wierszu a nie cały wiersz. Potrzebny mi cały wiersz bo to są dane które potem muszę wysłać w RSa.
pozdro
Re: sekwencyjne wczytywanie wartości
: 12 paź 2012 10:25
autor: TMa
Jeżeli w każdym wierszu masz łańcuch znaków składający się z paru wartości liczbowych (numeric) oddzielonych konkretnym znakiem specjalnym (spacebar, tab) to polecam użycie Spreadsheet String To Array
PS. Proponuje error wrzucić w rejestr przesuwny. W tej chwili tracisz informacje o ew. "warningach". Poprzednie wartości są nadpisywane.