7 Vb.Net komentarze, pętla For, Try Catch oraz StreamWriter

Komentarze


Pisząc kod używać będziemy komentarzy. Komentarz to jest taka część kodu, która nie jest brana pod uwagę w trakcie kompilacji programu. Komentarz rozpoczyna znak ' więc wszystko co za tym znakiem się znajduje będzie traktowane jak komentarz. Zakomentowany tekst w kodzie zmienia się  na zielony kolor, aby nie było wątpliwości czy to składowa instrukcji programu czy komentarz. Ale po co to używać ? Przy małych programach jak do tej pory nie mają większego sensu, jednak przy kodzie, który nieraz zawiera się w setkach linii, komentarze niejednokrotnie rozwiewają wszelkie wątpliwości. Zobaczmy więc kod z poprzedniego poradnika, który został skomentowany:
        Dim wiek As Byte ' Deklaracja zmiennej w typie Byte
        wiek = InputBox("Ile masz lat", "Pytanie") ' Pobranie wartości z InputBox'a
        Select Case wiek ' Wybór zmiennej wiek i rozstrzyganie o kodzie do niego dostosowanym w instrukcjach Case
            Case Is < 0 ' Jeśli wartość jest mniejsza od zera
                MessageBox.Show("To nie jest możliwe", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Case 0 To 15 ' Przedział od 0 do 15
                MessageBox.Show("To jeszcze mentalnie dzieci", "Nieźle", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Case 16 To 18 ' Przedzał od 16 do 18
                MessageBox.Show("Uważają się za dorosłych a wyglądają jak dzieci", "Prawda?", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Case 19 To 39 ' Przedział od 19 do 39
                MessageBox.Show("W kwiecie wieku :)", "Cudowny czas", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Case 40 To 100 ' Przedział między 40 a 100
                MessageBox.Show("Poczciwy wiek", "Złote lata", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Case 100 To 110 ' Przedział między 100 a 110
                MessageBox.Show("Białe kruki", "Niesamowite", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Case Is > 110 ' Jeśli wartość jest większa niż 110
                MessageBox.Show("To niemożliwe", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        End Select ' Zakończenie instrukcji Select Case

Pętla For

Pętla for to taka pętla, która w odróżnieniu od Do Until czy Do While wykonuje się tylko tyle razy ile jej pozwolimy. Skoro już jedziemy pętle to uprzedzam, że nie będzie łatwo :) ale nie stresuj się tym, lekcję możesz przerabiać dowolną ilość razy aż w końcu "zatrybisz" ;)
Zaczniemy może najpierw trochę lajtowo. Wyświetlimy sobie pięć razy MessageBox'a. Więc napiszmy sobie kod:
 For i = 1 To 5
    MessageBox.Show("MessageBox nr " & i, "Pętla For", MessageBoxButtons.OK)
Next

No i co się tutaj zadziało ? Zadeklarowaliśmy pętlę For której zmienna i jest równa 1 do 5. Wewnątrz pętli wstawiliśmy wywołanie MessageBox'a, który wyświetli nam napis "MessageBox nr " oraz aktualną wartość zmiennej i. Każde kliknięcie w MessageBox'ie na OK, powoduje wykonanie się pętli i zaczęcie jej z wartością zmiennej i o 1 większą od zadeklarowanej na początku. I tak w koło Macieju będą nam się wyświetlały MessageBox'y aż do momentu kiedy zmienna i osiągnie wartość 6, wtedy wróci do początku pętli, sprawdzi że nie mieści się w warunku 1 To 5 i wyjdzie po za Next kończąc tym samym działanie pętli.

Ktoś pomyśli: No fajnie tylko po co mi 5 razy wyświetlać MessageBox ? Przecież to bez sensu. Racja, pętle For stosuje się do innych celów, na przykład do wyciągania danych z kontrolek i zapis ich do pliku i vice versa. Ten przykład powyżej jedynie ma zademonstrować sposób działania pętli.

W tym miejscu chciałbym przedstawić wam kontrolkę, która się nazywa ListBox - znajdziecie ją w ToolBox po lewej stronie. ListBox służy do wyświetlania listy elementów do wyboru dla użytkownika. Do kolekcji Items dodałem ręcznie kilka linijek tekstu. Wygląda to w ten sposób:
Przycisk nazwałem "BtnZapisz" i wyświetla tekst "Zapisz"
ListBox nazwałem LstBoxDane. Zawiera on 4 wiersze z tekstem.
Chcielibyśmy coś z tymi danymi zrobić, gdzieś je zapisać. No i tu z pomocą przyjdzie nam właśnie pętla For. Napiszmy kod dla naszego przycisku pod ListBox'em:
        Try
            Dim StrWriter As New System.IO.StreamWriter("C:\naszedane.txt")
            Dim numer As Long
            For numer = 0 To LstBoxDane.Items.Count - 1
                StrWriter.WriteLine(LstBoxDane.Items(numer).ToString)
            Next
            StrWriter.Close()
            StrWriter.Dispose()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

Ale zaraz zaraz, w kodzie pojawiły się nowe rzeczy, których jeszcze nie było ! No to tłumaczymy numery linii po kolei.
  1. Deklaracja instrukcji Try Catch służy ona do przechwytywania nieoprogramowanych wyjątków jakie mogą pojawić się w trakcie działania naszej aplikacji.
  2. Deklaracja wystąpienia nowej klasy StreamWriter. Klasa ta służy to stworzenia i zapisywania danych w pliku do którego podajemy ścieżkę dostępu. Jeśli plik nie istnieje, to zostanie utworzony na nowo.
  3. Deklaracja zmiennej numer w typie Long
  4. Rozpoczęcie pętli z numerem = 0 do ilości przedmiotów jaką zawiera ListBox -1. Ale dlaczego na końcu jest -1 ? Ano dlatego że indeksy przedmiotów ListBoxa zaczynają swoją kolekcję od numeru 0 a nie 1. Przedmiotów w kolekcji jest w tym przypadku 4. Chcąc więc pobrać z listboxa przedmiot z prawidłowym indexem trzeba od tego indeksu odjąć 1. 
  5. StreamWriter w pętli zapisuje w pliku w nowych wierszach pobrane po kolei (zgodnie z zakresem jaki został mu podany) przedmioty ListBoxa konwertując je do łańcucha tekstowego za pomocą instrukcji .ToString.
  6. Za Next wyjdzie pętla gdy zmienna numer osiągnie większą wartość niż ilość przedmiotów w ListBox'ie -1
  7. Zamknięcie StreamWriter
  8. Zwolnienie zasobów StreamWriter
  9. Pułapka dla wyjątków aplikacji
  10. Wyświetlacz treści wyjątków przechwyconych za pomocą instrukcji Try Catch
  11.  Zakończenie instrukcji Try Catch
Pierwszy wyjątek zauważymy podczas pierwszego uruchomienia aplikacji. Wyświetli nam prawdopodobnie brak dostępu do określonej lokalizacji (jeśli wpisaliście taką jak ja).

Jeśli to jest za trudne to nic nie szkodzi. Mamy przecież czas na naukę. Nikt od razu się niczego nie nauczył. Później będą jeszcze trudniejsze rzeczy, niektórych sam jeszcze nie rozumiem. Np nie rozumiem zasady tworzenia wyrażeń regularnych. Robiłem do tego kilka podejść ale wszystkie zakończone niepowodzeniem i frustracją ;) Ale nie można się poddawać, cały czas brniemy do przodu. Trzeba mieć jakiś dobry motor, aby pchał nas do nauki. Takim motorem często jest POTRZEBA. Czegoś nam potrzeba, ale nigdzie tego nie ma... Wtedy właśnie potrzeba jest najlepszym motorem do nauki. Podobnie było ze mną.

Zapraszam więc do kolejnego numeru poradnika, kto wie co tam na nas czeka ??
Dowiemy się niedługo bo nie jest jeszcze gotowy :)

Utworzono 08.09.2015r

Brak komentarzy:

Prześlij komentarz