Strona 1 z 1

Dopisywanie danych do pliku tekstowego

: 25 lip 2006 07:13
autor: Ender
Witam.
Mam pewien problem. Jak mozna wywnioskowac z tematu, musze dopisac pewne dane (wyniki pomiarow) w konkretnym miejscu pliku. Stala jest odleglosc od konca pliku, wiec z ustawieniem kursora w odpowiednim miejscu nie ma problemu. Problem polega na tym, ze bloczek 'Write file' nadpisuje mi dane umieszczone w pliku zamiast je dopisywac.
Chcialem zapytac, czy istnieje mozliwosc konfiguracji zapisu tak, aby dane byly dopisywane zamiast nadpisywane? Jak mozna sie domyslec nie jest to pozadane zachowanie w przypadku zbierania danych pomiarowych :) Moze stosuje niewlasciwy bloczek? Moze jest inna funkcja do tego przeznaczona? Z gory zaznaczam jednak, ze mam LV7.1 Base, wiec zadne toolkity nie wchodza w gre :)
Z góry dziekuje za pomoc

Re: Dopisywanie danych do pliku tekstowego

: 25 lip 2006 07:28
autor: progor
porządane / nieporządane ... zależy jak chcesz.
tak jak chcesz ładować w środek pliku to proponuje odczytywać to co jest w pliku do tej pory (masz sobie stringa z którym możesz zrobić co Ci się żywnie podoba, podopisywać gdzie co i jak chcesz) a po zmianie zapisać (zastępując to co w pliku nowo powstałym stringiem).

jak robie roport to plik wzorcowy raportu *.rep wygląda sobie tak:

bleble <P1>
bleble ble bleble <P2.1>

ciągne z niego stringa, w miejsca <P*> wkładam to co chce i zapisuje w plik i puszczam na drukarke. dzieki temu pliki wyglądają zgrabnie, tak jak chce a i druk jest okej (bo na różnych drukarkach spacja miewa różną długość).

Re: Dopisywanie danych do pliku tekstowego

: 25 lip 2006 07:53
autor: Ender
Calkiem ciekawa metoda, na pewno skuteczna, ale mimo wszystko wydaje mi sie droga troche 'na okolo'. W labview jest funkcja 'seek', ktora pozwala na ustawienie kursora w odpowiednim miejscu pliku. Dla mnie logicznym rozwiazaniem bylaby mozliwosc wyboru, co chcemy zrobic - nadpisac czy dopisac. Niestety nie moge sie jej doszukac ...

Re: Dopisywanie danych do pliku tekstowego

: 25 lip 2006 08:50
autor: jogurt_owocowy
Jestem prawie pewien, że nie da się czegoś nowego wcisnąć w środek pliku. Funkcja Seek może ustawić kursor gdzieś w środku, ale plik jest zawsze nadpisywany.
Dla mnie logicznym rozwiazaniem bylaby mozliwosc wyboru, co chcemy zrobic - nadpisac czy dopisac.
Ale pewnie nie jest to logiczne z punktu widzenia obsługi dysku i dlatego nie ma takiej możliwości. Z tego co pamiętam np. w C też się tak nie da.

Re: Dopisywanie danych do pliku tekstowego

: 25 lip 2006 09:33
autor: Ender
No tak, przyznam, ze nawet do glowy mi to nie przyszlo ... Caly misterny plan poszedl w ... las :) Pozostaje wiec chyba zabawa ze stringami.
Dziekuje bardzo za pomoc i oswiecenie :)

Re: Dopisywanie danych do pliku tekstowego

: 25 lip 2006 09:42
autor: piotrp
Jesli masz otrzymac plik np:

poczatkowy tekst
dane zapisywane
(dane zapisywane dallej nastepne wywolanei funkcji zapisu do pliku)
tekst koncowy

W wyniku utworzenie pierwszy raz pliku musisz zapisac poczatkowy tekst i dane zapisywane. W dalszej części juz w łątwy sposob mozna ustawic zeby dane byly dopisywane tak więc następne dane bedziesz dopisywal do tego pliku (na koncu). To bedzie plik tymczasowy. Plik końcwy wrzuca to wszystko co masz w tymczasowym i dopisuje do neigo tekst koncowy. Chyba inaczej sie nie da.
pozdrawiam

Re: Dopisywanie danych do pliku tekstowego

: 25 lip 2006 09:52
autor: Mikrobi
Czy plik jest tekstowy ew. tablica?
Jeśli tak, to można odczytać, wykorzystać Conncatenate String ew. Find Match for Pattern (zwraca string przed, znaleziony i po) lub operacje na tablicy i zapisać z opcją nadpisania pliku.

Re: Dopisywanie danych do pliku tekstowego

: 25 lip 2006 10:49
autor: Ender
@piotrp - sytuacja nie jest taka prosta. Tekst koncowy nie jest staly, ma tylko stala dlugosc i jest modyfikowany z kazdym wpisaniem nowych danych pomiarowych. Poniewaz pomiary sa dokonywane przez dlugi okres czasu istnialoby ryzyko, ze np z powodu awarii zasilania koncowka pliku nie zostanie dopisana, a dane ktore powinny tam sie znalezc, zostana utracone.

@Mikrobi - tak, plik jest tekstowy, wiec wszystkie bloczki do obrobki stringow, szczegolnie 'find match for pattern' (conncatenate i tak wykorzystuje)na pewno bylyby bardzo przydatne, ale szczerze mowiac to nie bardzo chce mi sie bawic w ten sposob, bo to zmienialoby cala koncepcje i wymagalo troche pracy, a jest za cieplo zeby tyle myslec ;)

Po namysle doszedlem do wniosku, ze skoro i tak modyfikuje te koncowke pliku, to rownie dobrze moge ja za kazdym razem nadpisywac - w koncu nie jest to jakies monstrum. Ustawiam kursor w miejscu, gdzie maja byc nowe dane, a reszte pliku dopisuje na biezaco.

No ale przynajmniej znowu dowiedzialem sie czegos nowego. Szkoda, ze tym razem byla to lekcja pt 'Tego sie nie da' ;)

Jeszcze raz dziekuje wszystkim za rady i pomoc