Kurs QBasic - część 9

Działania na plikach - zapis i odczyt danych z dysków

Nadszedł czas na zapoznanie się z poleceniami odpowiedzialnymi za zapis i odczyt danych. Na początek zaczniemy od przykładu programu umożliwiającego zapis danych na dysku twardym.

10 REM Prg9.1 Zapis danych na dysku twardym
20 CLS
30 INPUT " Podaj nazwe pliku:"; plik$
40 INPUT " Podaj tekst, ktory ma zostac w nim zapisany"; tekst$
50 OPEN plik$ + ".txt" FOR OUTPUT AS #1
60 PRINT #1, tekst$
70 CLOSE 1

Linie 10 - 40 powinny być zrozumiałe. W linii 50 otwieram (polecenie OPEN) kanał nr.1 przeznaczony do zapisu danych, o czym informuje człon FOR OUTPUT AS #1. W tej samej linii łączę kanał nr.1 z plikiem podanym przez użytkownika (plik$) i dodaje do nazwy pliku człon "txt". Jak wiadomo każdy plik powinien mieć jakieś rozszerzenie. Ja zdecydowałem się na txt, jednak nic nie stoi na przeszkodzie, aby wybrać inne rozszerzenie. W linii 60 za pomocą polecenia PRINT #1 łączę się z kanałem nr.1 i wysyłam dane "tekst$" do wcześniej utworzonego pliku. Jeżeli chcesz zapisać więcej danych, możesz je oddzielić przecinkami, lub dodać większą ilość PRINT #1. W linii 70 zamykam otwarty kanał (polecenie CLOSE 1). Analogicznie sytuacja wygląda z odczytem danych:

10 REM Prg9.2 Odczyt danych z dysku twardego
20 CLS
30 INPUT " Podaj nazwe pliku:"; plik$
40 OPEN plik$+".txt" FOR INPUT AS #1
50 INPUT #1, tekst$
60 CLOSE 1
70 PRINT" Odczytano plik i pobrano nastepujace dane: ";tekst$

i dlatego podaruję sobie komentarz. Poniżej przedstawiam jeszcze jeden, troszkę bardziej złożony przykład:

10 REM Prg9.3 Zapis i Odczyt danych z dysku twardego
20 CLS
30 REM tworze plik z przykladowymi danymi
40 OPEN "temp.txt" FOR OUTPUT AS #1
50 FOR a = 1 TO 10
60 PRINT #1, "To jest"; a; "linijka tekstu"
70 NEXT a
80 CLOSE 1
90 REM teraz odczytuje plik "temp.txt" i rownolegle zapisuje
100 REM jego zawartosc do pliku "kopia.txt"
110 OPEN "temp.txt" FOR INPUT AS #1
120 OPEN "kopia.txt" FOR OUTPUT AS #2
130 FOR a = 1 TO 10
140 INPUT #1, tekst$
150 PRINT #2, tekst$
160 NEXT a
170 CLOSE 2
180 CLOSE 1
190 PRINT " Dane skopiowane prawidlowo."

W liniach 40 - 80 tworzę nowy plik "temp.txt" i uzupełniam go treścią "To jest 'a' linijka tekstu". Następnie w liniach 110 - 180 tworzę dwa równoległe kanały - pierwszy do odczytu, drugi do zapisu - i rozpoczynam równoległą transmisję danych. W tym przykładzie chciałem zwrócić uwagę na to, że można używać jednego kanału kilka razy w programie, jednak nigdy nie można otworzyć tego samego kanału, jeżeli wcześniej nie został on zamknięty. Dlatego właśnie w liniach 110 i 120 utworzyłem dwa różne kanały.

 

Język

Polska wersja językowa    English language version

Poleć stronę

Aby polecić aktualnie oglądaną stronę kliknij:

Licznik wizyt

Liczniki

Kontakt

Wiadomości

03.12.2013

Dodano opis gry Stellar System.

16.06.2013

Dodano opis programu "System Sprzedaży", oraz poprawiono treści na stronie.

10.05.2012

Strona została całkowicie przebudowana. Zmieniono layout, poprawiono teksty, oraz dodano angielską wersję strony.