Lab6, Visual Basic Lab 6, Visual Basic Lab 3


UKO Użytkowanie Komputerów

Visual Basic Lab 6

Projekt Pliki daje okazję do zapoznania się z następującymi zagadnieniami pracy z Visual Basic'iem:

  1. typy plików;

  2. tryb dostępu bezpośredni i sekwencyjny;

  3. numeracja plików i znajdowanie wolnego numeru pliku;

  4. otwieranie plików;

  5. polecenia Print #, Write #, Read #, Get #, Put #;

  6. wykorzystanie kontrolek związanych z plikami.

Visual Basic obsługuje następujące typy plików:

  1. o dostępie sekwencyjnym;

  2. o dostępie swobodnym;

  3. pliki binarne.

Do otwierania plików służy polecenie Open, które równocześnie rezerwuje specjalny uchwyt do czytania z i do pisania w pliku. Uchwyt pliku to unikatowa ścieżka do pliku połączona z numerem nadanym przez polecenie Open.

Format instrukcji Open jest następujący:

Open „Nazwa Pliku” [For Tryb]

[PrawaDostępu]

[RodzajZabezpieczenia]

As [#] intNumerPliku [Len = intDługośćRekordu]

Poniżej podajemy omówienie poszczególnych elementów formatu definicji instrukcji Open:

Tabela VI.1. Wartości argumentu Tryb polecenia Open

Tryb

Opis

Append

Otwiera plik z dostępem sekwencyjnym do pisania w trybie dołączania. Jeśli plik istnieje, to zapisuje na końcu pliku, jeśli nie to tworzy nowy plik. Dane nigdy nie są nadpisywane!

Binary

Otwiera plik z dostępem binarnym. Można czytać i zapisywać pojedyncze bajty.

Input

Otwiera plik z dostępem sekwencyjnym do czytania. Dane są czytane od początku w tej samej kolejności jak były zapisywane.

Output

Otwiera plik z dostępem sekwencyjnym do pisania. Jeśli plik istnieje, to zapisuje od początku pliku, jeśli nie to tworzy nowy plik i też zapisuje od początku pliku. Dane są nadpisywane!

Random

Otwiera plik z dostępem bezpośrednim do czytania i pisania. Można czytać i zapisywać określone rekordy pliku.

Objaśnienia:

Pliki zamyka instrukcja Close:

Close intNumerPliku[,intNumerPliku2][...intNumerPlikuN]

Instrukcja Close bez argumentów zamyka wszystkie pliki.

Wydruk VI.1.

Kod znajduje dostępne wolne numery plików, otwiera dwa pliki z dostępem sekwencyjnym, jeden do czytania, drugi do pisania, a następnie je zamyka.

1 Dim intPlikDoCzytania As Integer

2 Dim intPlikDoPisania As Integer

3

4 'Otwórz plik do czytania

5 intPlikDoCzytania = FreeFile 'Weź pierwszy wolny numer

6 Open "PlikDanych.dat" For Input As intPlikDoCzytania

7

8 'Otwórz plik do pisania

9 intPlikdoPisania = FreeFile 'Weź następny numer

10 Open "PlikDocelowy.Dat" For Output As intPlikDoPisania

11

12 'Tu kod czytająco/piszący

13

14 'Zamknij pliki

15 Close intPlikDoPisania

16 Close intPlikDoCzytania

Przed jakimkolwiek użyciem pliku, należy go otworzyć. Do pisania najczęściej używa się polecenia

Print #IntNumerPliku, [Treść] lub

Write #IntNumerPliku, [Treść]

przy czym wszystkie dane wpisywane do pliku przez Write oddzielone są przecinkami., dane łańcuchowe ujmowane są w cudzysłowy, dane daty i czasu ogranicza znak #, wartości boolowskie zapisuje jako #TRUE# lub #FALSE#, podobnie #NULL# i #Error KodBłędu#.

Tabela VI.2. Treść polecenia Print

Tryb

Opis

Spc(intN1)

Wstawia N1 spacji

Tab(intN2)

Przesuwa punkt wstawiania do kolumny o numerze intN2. Tab bez argumentu przesuwa do początku następnej strefy drukowania (14 spacji)

Wyrażenie

Wyrażenie typu łańcuch lub liczba

punktWstawiania

Określa położenie wydrukowania następnego znaku: jeśli ma to nastąpić bezpośrednio po ostatnio zapisanym znaku użyj średnika

Wydruk VI.2. Pisanie do pliku

1 Private Sub plcDrukujDoPliku_Click()

2 Dim intLicznik As Integer 'licznik pętli

3 Dim intNumerPliku As Integer 'numer pliku

4 Dim intOdp As Integer 'odpowiedź z MsgBox()

5

6 'Otwórz plik do pisania

7 intNumerPliku = FreeFile 'weź numer

8 'Jeśli chcesz, zmień ścieżkę

9 Open "Z:\Liczby.txt" For Output As intNumerPliku

10

11 'Pokaż, co zrobiłeś

12 intOdp = MsgBox("Otworzyłem plik Liczby.txt")

13

14 For intLicznik = 1 To 6

15 'Zapisz licznik pętli

16 Print #intNumerPliku, intLicznik

17 intOdp = MsgBox("Wpisałem " & intLicznik & _

18 " w pliku Liczby.txt")

19 Next intLicznik

20

21 'Zamknij plik i poinformuj

22 Close #intNumerPliku

23 intOdp = MsgBox("zamknąłem plik Liczby.txt")

24 End Sub

Zadanie VI.1.

Sprawdź, korzystając z powyższego kodu, jak działa instrukcja

Write #intNumerPliku, intLicznik;.

Wypróbuj tę instrukcję ze średnikiem oraz bez średnika i porównaj wyniki.

ÿ

Przypominamy, że przed jakimkolwiek użyciem pliku, należy go otworzyć. Do czytania najczęściej używa się polecenia

Input #IntNumerPliku, Zmienna1[,Zmienna2][... ZmiennaN]

W pracy z plikami o dostępie bezpośrednim polecenia Print # i Input # zastępują polecenia Get # i Put #.Mają one następujące formaty:

Put [#] intNumerPliku, intNumerRekordu] Zmienna

Get [#] intNumerPliku, intNumerRekordu] Zmienna

Numery rekordów zaczynają się od 1. Aby elementy tablic były również numerowane od 1, a nie od 0, jak to się przyjmuje domyślnie, należy w preambule modułu umieścić polecenie

Option Base 1

Zapisywane i odczytywane zmienne mogą być dowolnego typu.

Można również definiować własne typy zgodnie z poniższym schematem:

[Private | Public] Type NazwaTypu

Zmienna1[(RozmiarTablicy)] As Istniejący typ [* DługośćStr]

Zmienna2[(RozmiarTablicy)] As Istniejący typ [* DługośćStr]

:

:

End Type

Wydruk VI.3 Deklaracja typu własnego

1 ` Ta deklaracja musi być w module projektu

2 Type DaneOsoby

3 strImię As String * 8

4 strNazwisko As String * 20

5 End Type

6 Public Osoba as DaneOsoby

Przykład VI.2 Użycie kodu z Wydruku VI.3

Osoba.strImię = "Jan"

Osoba.strNazwisko = "Kowalski"

etkImię.Caption = "Imię: " & Osoba.strImię

etkNazwisko.Caption = "Nazwisko: " & Osoba.strNazwisko

* 8 i * 20 oznaczają, że rekordy Osoba.strImię i Osoba.strNazwisko mają odpowiednio długość 8 i 20 znaków. Jeśli znaków jest mniej, to dane są uzupełniane spacjami do zadeklarowanej długości rekordu. Typy można zagnieżdżać.

Wydruk VI.4 Praca z plikami o dostępie bezpośrednim

1 Private Sub plcUtwórz_Click() 'Ta procedura tworzy nowy plik

2 Dim intNumerPliku As Integer 'numer pliku

3 Dim intLicznik As Integer 'licznik pętli

4

5 intNumerPliku = FreeFile

6 Open "Z:\Swobodny.txt" For Random _

7 As #intNumerPliku Len = 5

8

9 'Zapisz liczby w pliku dla każdego przebiegu pętli

10 For intLicznik = 1 To 6

11 'Zapisz numer rekordu

12 Put #intNumerPliku, intLicznik, intLicznik

13 Next intLicznik

14

15 Close #intNumerPliku

16 End Sub

17

18 Private Sub plcZmień_Click() 'Zmienimy trzeci rekord

19 Dim intNumerPliku As Integer 'numer pliku

20

21 intNumerPliku = FreeFile

22 Open "Z:\Swobodny.txt" For Random _

23 As #intNumerPliku Len = 5

24

25 'Zapisz nową wartość w trzecim rekordzie

26 Put intNumerPliku, 3, 9

27 'nadajemy rekordowi 3 wartość 9

28

29 Close #intNumerPliku End Sub

30

31 Private Sub plcZmień_Click() 'Wyświetla zawartość pliku

32 DimintNumerPliku As Integer 'numer pliku

33 Dim intLicznik As Integer 'licznik pętli

34 Dim intWartość As Integer 'odczytana wartość

35 Dim intOdp As Integer 'odpowiedź z MsgBox()

36

37 'Otwórz plik

38 intNumerPliku = FreeFile

39 Open "Z:\Swobodny.txt" For Random _

40 As #intNumerPliku Len = 5

41

42 intOdp = MsgBox("Plik Swobodny.txt został otwarty")

43

44 'Przejdź po rekordach i czytaj z pliku

45 For intLicznik = 1 To 6

46 Get #intNumerPliku, intLicznik, intWartość

47 intOdp = MsgBox("Z pliku Swobodny.txt " _

48 & "odczytano wartość: " _

49 & intWartość)

50 Next intLicznik

51

52 Close #intNumerPliku

53 intOdp = MsgBox("Plik Swobodny.txt został zamknięty")

54 EndSub

Visual Basic udostępnia następujące kontrolki (tu: szczególne pola list) do zarządzania stacjami dysków, katalogami i plikami:

0x01 graphic
pole listy katalogów

0x01 graphic
pole listy plików

Tabela VI.3 Polecenia dla stacji dysków i katalogów

Tryb

Opis

ChDir strDysk

zmienia domyślną stację dysków na wskazaną w argumencie

ChDir strFolder

zmienia domyślny katalog na wskazany w argumencie

Kill strPliki

usuwa plik lub pliki reprezentowane przez znaki specjalne

MkDir strPlik

tworzy nowy katalog o wskazanej nazwie

RmDir strPlik

usuwa katalog o wskazanej nazwie

Przykład VI.3 Dojście do katalogu

ChDrive „Z:\”

ChDir „\MojePliki”

Przykład VI.4 Sprawdzanie istnienia pliku

If UCase(Dir(„z:\Sprzedaż2002.dat”)) = „SPRZEDAŻ2002.DAT” Then

intOdp = MsgBox(„Plik istnieje”)

Else

intOdp = MsgBox(„Plik nie ma”)

End If

Funkcja Dir() może wystąpić bez argumentów (bez nawiasów i argumentów), jeśli została już poprzednio użyta. VB będzie zwracał nazwy plików pasujących do szablonu, aż do znalezienia ostatniego pliku. Kiedy Dir zwróci string zerowy (""), należy w kolejnym wywołaniu Dir() zawrzeć w kolejną specyfikację pliku, gdyż inaczej powstanie błąd.

Przykład VI.5 Wybranie określonego dysku

drvDysk.Drive = "z:\"

Przykład VI.6 Ustawienie wybranego powyżej dysku jako domyślnego

ChDrive drvDysk.Drive

Przykład VI.7 Ustawienie ścieżki dostępu do pliku

dirKatalog.Path = drvDysk.Drive

Przykład VI.8 zamiana bieżącego katalogu na wybrany przez użytkownika

ChDir dirKatalog.Path

Przykład VI.9 Filtrowanie plików

filPliki.Pattern = "*.frm:*.vbp"

Czasami pomocna jest zmienna ListIndex , pozwalająca na odwołanie się do innego poziomu plików:

-2

katalog zawierający wybrany katalog itd.

-1

wybrany katalog

ListIndex =

0

pierwszy podkatalog wybranego katalogu

1

podkatalog pierwszego podkatalogu wybranego katalogu

2

itd.

0x01 graphic

Rys. VI.1. Projekt formy Plik

Projekt formy Plik służącej jako przeglądarka plików:

(Uwaga! Jako pole listy wybieramy ze skrzynki narzędziowej ListBox 0x01 graphic
)

Kontrolka, właściwość

Wartość

Forma, Name

frmPlik

Forma, Caption

Przeglądarka plików

Forma, Height

4500

Forma, Width

7000

Pole listy, Name

lstPlik

Pole listy, Height

3405

Pole listy, Left

120

Pole listy, Top

120

Pole listy, Width

6615

Przycisk poleceń, Name

plcKolor

Przycisk poleceń, Caption

&Zmień kolor tła

Element menu nr 1, Caption

&Plik

Element menu nr 1, Name

mnuPlik

Element menu nr 2, Caption

&Otwórz

Element menu nr 2, Name

mnuPlikOtwórz

Element menu nr 3, Caption

-

Element menu nr 3, Name

mnuSeparator1

Element menu nr 1, Caption

&Koniec

Element menu nr 1, Name

mnuPlikKoniec

Okno dialogowe, Name

odOtwórz

Okno dialogowe, DialogTitle

Otwórz

Okno dialogowe, InitDir

Z:\

Okno dialogowe, Filter

Pliki tekstowe (*.TXT)|*.txt|Pliki MS Windows (*.DOC)|*.doc|Wszystkie pliki (*.*)|*.*

Okno dialogowe, CancelError

True

Okno dialogowe, MaxFileSize

4096

Własciwości kontrolki typowego okna dialogowego ustawiamy w oknie dialogowym Project -> Components -> Microsoft Common Dialog Control 6.0 (SP 3), a w nim w formie Property Pages (Properties) ustawiamy odpowiednie parametry (np. jak na Rys.VI.2).

0x01 graphic

Rys. VI.2 Właściwość Custom kontrolki okna dialogowego

Wydruk VI.5 Wczytywanie pliku w pole listy

1 Private Sub Form_Resize()

2 'Jeśli użytkownik zmieni rozmiar formy,

3 'zmień wielkość pola listy.

4 'Używana jest także, gdy forma wczytywana jest po raz pierwszy

5

6 Dim intOdp As Integer 'odpowiedź z MsgBox()

7

8 'Sprawdź, czy forma nie jest zbyt mała mała,

9 'by wyświetlić pole listy

10 If (frmPlik.Width < 400) _

11 Or (frmPlik.Height < 3500) Then

12 'Ukryj pole listy i poucz co robić

13 lstPlik.Visible = False

14 intOdp = MsgBox("Okno za małe. Powiększ je", vbCritical)

15 Else 'Wyświetl listę (na wszelki wypadek)

16 lstPlik.Visible = True

17 'Dopasuj rozmiar pola listy i położenie przycisku

18 'do wielkości okna formy

19 lstPlik.Width = frmPlik.Width - 360

20 lstPlik.Height = frmPlik.Height - 1200

21 plcKolor.Top = frmPlik.Height - 1100

22 End If

23 End Sub

24

25 Private Sub mnuPlikKoniec_Click()

26 'Zakończ aplikację

27 Beep

28 End

29 End Sub

30

31 Private Sub mnuPlikOtwórz_Click() Dim strLiniaPliku As String

32 'Ustaw błąd kliknięcia Anuluj

33 On Error GoTo ObsługaBłędu

34 odOtwórz.CancelError = True

35

36 'Wyświetl okno dialogowe Otwórz

37 odOtwórz.ShowOpen

38

39 'Otwórz wybrany plik

40 Open odOtwórz.Filename for Input As #1

41

42 'Zrób miejsce na nowy plik

43 lstPlik.Clear Do Until (EOF(1))

44 Line Input #1, strLiniaPliku

45 lstPlik.AddItem strLiniaPliku

46 Loop

47

48 'Zamknij plik

49 Close

50

51 ObsługaBłędu:

52 'Jeśli użytkownik kliknął Anuluj, to nie rób nic

53 End Sub

54

55 Private Sub plcKolor_Click()

56 'Wybór koloru tła pola listy

57 odOtwórz.CancelError = False

58 odOtwórz.ShowColor

59 lstPlik.BackColor = odOtwórz.Color

60 End Sub

Format instrukcji Line Input #:

Line Input #intNumerPLiku, strLiniaTekstu0x01 graphic
0x01 graphic
0x01 graphic

UKO Użytkowanie Komputerów, Lab 6

Visual Basic Lab 6.doc 9/9



Wyszukiwarka

Podobne podstrony:
Lab6, Visual Basic Lab 6a, Visual Basic Lab 3
Lab5, Visual Basic Lab 5b, Visual Basic Lab 3
Lab7, Visual Basic Lab 7a, Visual Basic Lab 3
Lab3, Visual Basic Lab 3, Visual Basic Lab 3
Lab 2 Visual Analyser oraz kompresje v2
Visual Basic Przykładowe zadania , Studia i nauka, Visual Basic
Leksykon VISUAL BASIC, r00-05, Rozdział X
Visual Basic Zdarzenia , Studia i nauka, Visual Basic
Basic Two Router Cisco CCNA lab
visual basic
02 Wprowadzenie do Visual Basic cwiczenia przygotowujace
Makra programowanie w Visual Basic
Mastering Visual Basic NET Database Programming
Leksykon VISUAL BASIC, r01-05, Rozdział X
Visual Basic Operatory , Studia i nauka, Visual Basic

więcej podobnych podstron