WstepSP - Wyższa Szkoła Zarządzania i Marketingu w

Download Report

Transcript WstepSP - Wyższa Szkoła Zarządzania i Marketingu w

VisualStudio.Net
Janusz Górczyński
Wyższa Szkoła Zarządzania i Marketingu w Sochaczewie
Agenda
 Składniki .Net
 .NET Framework – podstawowe składniki
 Zadania .NET Framework
 Architektura .NET Framework
 CLR Wspólne środowisko uruchomieniowe
 Biblioteka klas
 Języki programowania a CLS
 Czym jest MSIL?
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
2
Składniki .Net
 Produkty .Net – obecne i przyszłe produkty
wchodzące w skład .Net. Najważniejszym (obecnie)
elementem jest VisualStudio.Net
 Usługi .Net – to gotowe usługi oferowane przez MS,
np. Passport
 .Net Framework – produkt całkowicie zintegrowany z
systemem operacyjnym Windows. Pozwala na
tworzenie szybkich, elastycznych, skalowalnych i
efektywnych aplikacji. Pozwala na tworzenie aplikacji
współpracujących z innymi aplikacjami .Net oraz
komponentami napisanymi w innych językach.
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
3
.NET Framework – podstawowe składniki
 Biblioteka klas .NET Framework – zbiór funkcji,
obiektów, właściwosci i metod do wykorzystania w
dowolnym języku .Net. Jest tu także ADO.NET.
 Wspólne środowisko uruchomieniowe CLR (Common
Language Runtime) – odpowiada za uruchamianie
aplikacji .NET, zarządzanie nimi i kompilację do kodu
maszynowego.
 WindowsForms (WinForms) – pozwala na tworzenie
aplikacji dla Win32 w środowisku .NET
 ASP.NET – to kolejna generacja ASP dostosowana
do pracy w środowisku .NET. Aplikacje ASP.NET są
kompilowane, co znakomicie przyspiesza ich
udostępnianie.
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
4
Zadania .NET Framework
 Zapewnienie spójnego środowiska programowania
obiektowego
 Zapewnienie takiego środowiska wykonywania kodu,
które:
 minimalizuje konflikty przy rozprowadzaniu kodu i jego
wersjonowania
 gwarantuje bezpieczne wykonywanie kodu oraz kontrolę
kodu utworzonego przez innych programistów
 Eliminuje problemy związane z wydajnością skryptów czy
języków interpretowanych
 Zapewnienie spójnego środowiska przy pracy nad
różnymi typami aplikacji
 Zabezpieczenie integracji .NET Framework z innymi
produktami
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
5
Architektura .NET Framework
VB
C++
C#
VJ#
COBOL
Specyfikacja wspólnego języka
ASP.NET
Usługi sieciowe,
Web Forms
ADO.NET
Dane,
XML
Windows
Forms
Podstawowa biblioteka klas
Wspólne środowisko uruchomieniowe
Wspólny
System typów
System
metadanych
System
uruchamiania
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
6
CLR Wspólne środowisko uruchomieniowe
 Podstawa .NET Framework – zarządza kodem w
czasie jego działania
 Udostępnia takie usługi jak:
Zarządzanie pamięcią
Zarządzanie wątkami
Wywołania zdalne
 Innym zadaniem jest ścisła kontrola typów
 Kod zarządzany – taki, który ma być wykonywany w
tym środowisku
 Kod niezarządzany – taki, który nie jest przeznaczony
do wykonania w tym środowisku
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
7
Biblioteka klas
 Jest integralną częścią .NET Framework, zawiera
klasy lub typy przeznaczone do wielokrotnego użycia
wykorzystywane do projektowania aplikacji różnych
typów:
 Aplikacji wiersza poleceń
 Aplikacji z graficznym interfejsem użytkownika
korzystających z:
Windows Forms
ASP.NET Web Forms
Usług sieciowych XML
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
8
Języki programowania a CLS
 NET Framework obsługuje języki VB.NET, C++.NET,
C#.NET i VJ#.NET
 Języki te są zgodne ze standardem Common
Language System (CLS), który definiuje infrastrukturę
niezbędną do uruchomienia kodu IL (Intermediate
Language)
 Kompilatory wymienionych języków kompilują kod
źródłowy do kodu pośredniego IL – co jest podstawą
współpracy tych języków wsparte wspólnym
systemem typów CST (Common System Type)
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
9
Czym jest MSIL?
 Jest to niezależny od procesora zbiór instrukcji
wykorzystywanych przez aplikacje .NET
 Zawiera instrukcje ładowania, zapisywania i inicjalizacji
obiektów
Kompilacja wykonywana przez CLR
Kod
źródłowy
Kompilator
języka
Kod
maszynowy
Kompilator
JIT
Kod IL
Metadane
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
10
Metadane
 Podczas kompilacji poza kodem IL kompilator
generuje metadane będące zbiorem informacji o
aplikacji
 Metadane są zapisywane w postaci binarnej w
przenośnym pliku wykonywalnym PE (Portable
Executable)
 Przy wykonywaniu aplikacji system operacyjny ładuje
plik PE oraz wszystkie biblioteki podrzędne ładowane
dynamicznie
 W kolejnym kroku system operacyjnych wykonuje kod
IL korzystając z pośrednictwa kompilatora JIT
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
11
Kompilator JIT
 Kompilator JIT (Just in time) odpowiada za biężące
tłumaczenie kodu IL na kod maszynowy zrozumiały
przez procesor
 Kod maszynowy po wykonaniu jest buforowany w
celu ponownego wykonania
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
12
Składniki CLR
Obsługa podstawowej biblioteki klas
Obsługa wątków
Moduł szeregujący COM
Obsługa wyjątków
Moduł bezpieczeństwa
Kontroler typów
Moduł bezpieczeństwa
Zarządzanie
kodem
Kompilator JIT do
kodu maszynowego
Usuwanie
nieużytków
Moduł ładowania klas
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
13
Zadania CLR (1)
 Moduł ładowania klas – odpowiada za ładowanie klas
do wspólnego środowiska uruchomieniowego
 Kompilatory MSIL – odpowiadają za konwersję kodu
IL do kodu maszynowego (robi to JIT)
 Zarządzanie kodem – zarządza kodem w trakcie jego
wykonywania
 Usuwanie nieużytków – odpowiada za zarządzanie
pamięcią (automatyczne zwalnianie pamięci)
 Moduł bezpieczeństwa – wymusza ograniczenia
nakładane przez zabezpieczenia dostępu do kodu
 Kontroler typów – zapewnia ścisłą kontrolę typów
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
14
Zadania CLR (2)
 Obsługa wątów – zapewnia obsługę wielowątkowości
 Obsługa wyjątków – zapewnia obsługę wyjątków za
pomocą bloków Try … Catch…Finally
 Moduł debugowania – zapewnia debugowanie
różnych typów aplikacji
 Moduł szeregujący COM – pozwala na wymianę
danych z aplikacjami COM
 Obsługa podstawowej biblioteki klas – udostępnia
aplikacji potrzebne klasy (typy)
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
15
Biblioteka klas .NET Framework
 Jest zbiorem klas i związanych z nimi struktur, które
mogą być wykorzystane jako podstawowe elementy
budulcowe aplikacji
 Biblioteka .NET Framework zawiera klasy, interfejsy i
typy wartości, które nie tylko zapewniają dostęp do
mechanizów systemu, ale także optymalizują proces
tworzenia aplikacji
 Typy zgromadzone w .NET Framework pozwalają na:
Reprezentację podstawowych typów danych i wyjątków
Hermetyzację struktur danych
Wykonywanie operacji wejścia-wyjścia
Dostęp do informacji o załadowanych typach
Wywoływanie mechanizmów zabezpieczeń z .NET
Zapewnienie dostępu do danych poprzez GUI
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
16
Organizacja klas w bibliotece .NET Framework
 Podstawową jednostką organizacyjną jest przestrzeń
nazw
 Przestrzeń klas to pojemnik na funkcje – opisuje ona
grupę klas i konstrukcji o podobnym przeznaczeniu
 Koncepcja przestrzeni nazw jest podobna do
koncepcji organizacji plików za pomocą katalogów
(folderów)
 Wszystkie przestrzenie nazw mają wspólny korzeń,
jest nim przestrzeń System
 Przestrzeń nazw System zawiera wspólne typy
danych wykorzystywanych w .NET (Boolean, Int32
itd.)
 Zawiera także typ danych Object, który jest klasą, po
której dziedziczą wszystkie pozostałe klasy w .NET
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
17
Podzespół w .NET
 Podstawowa jednostka w aplikacjach .NET,
wprowadzona jako remedium na problemy z DLL
 Podzespół reprezentuje logiczny zbiór jednego lub
większej liczby programów wykonywalnych lub
bibliotek dołączanych dynamicznie (DLL), które
zawierają kod aplikacji oraz zasoby
 Podzespoły zawierają tzw. manifest, który jest opisem
kodu i zasobów zawartych wewnątrz podzespołu
 Podzespół zawiera:
Manifest
Metadane typów
Moduł
Zasoby
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
18
Manifest, jego zawartość
 Identyfikator – składa się z nazwy, numeru wersji,
opcjonalnego kodu lokalizacji i podpisu cyfrowego
 Lista plików – kompletna lista plików tworzących
podzespół. Zawiera także dodatkowe informacje na
temat każdego z plików wchodzących w skład
podzespołu
 Typy i zasoby – jest to lista typów i zasobów
udostępnianych przez podzespół. Zawiera informację
o tym, czy dany typ jest publiczny czy prywatny
 Uprawnienia – podzespoły są modułami, w których
wykorzystywane są uprawnienia dostępu dla kodu
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
19
Podstawy języka VB.NET
 Deklarowanie zmiennych – słowa kluczowe:
Dim – deklaruje zmienną wykorzystywaną w podprogramie
lub w jego części
Private – deklaruje zmienną, która może być
wykorzystywana przez więcej niż jeden podprogram w klasie
lub module
Public – deklaruje zmienną, która może być wykorzystywana
we wszystkich klasach i modułach projektu
Static – deklaracja zmiennej w podprogramie, która
zachowuje swoją wartość między wywołaniami
 Przykłady:
Dim errHandler as String
Dim ocena as Single = 3
Private i, j as Integer, x as Double
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
20
Zmienne, poziom deklaracji
 Zmienna lokalna – deklarowana wewnątrz
podprogramu
 Zmienna modułu – deklarowana w module, ale nie w
podprogramie
 W przypadku klasy lub struktury (typu użytkownika)
poziom zmiennej nielokalnej zależy od tego, czy jest
współdzielona czy też nie. Jeżeli jest współdzielona,
to ze słowem kluczowym Shared. Istnieje wtedy tylko
jedna kopia tej zmiennej we wszystkich instancjach
takiej klasy.
Jeżeli nie jest współdzielona, to każda instancja ma
swoją kopię takiej zmiennej
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
21
Zmienne, deklaracja typu
 Klauzula As pozwala na zdefiniowanie typu danych
lub typu obiektowego deklarowanej zmiennej
 Dla zmiennej można określić dowolny z poniższych
typów:
Podstawowy typ danych – np. Boolean, Long czy Decimal
Złożony typ danych, taki jak tablica lub struktura (typ
użytkownika)
Typ obiektowy
Klasa z VB.NET lub innej aplikacji, np. ComboBox
 Wybór typu danych wymaga staranności, nie może
być nadmiarowy
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
22
Zmienne, czas życia i dostępność
 Czas życia to czas, w którym można ze zmiennej
korzystać
 Zmienne lokalne (deklarowane za pomocą DIM)
istnieją tylko w czasie wykonywania podprogramu, a
po jego zakończeniu zniakają, a ich wartości są
tracone – wyjątek to użycie Static
 Zmienne modułu, współdzielone i instancyjne,
przechowują swoje wartości tak długo, jak długo
działa aplikacja
 Dostępność zmiennej zależna jest od sposobu
deklaracji: Dim, Private, Public, Protected, Friend,
Protected Friend
 Wewnątrz podprogramu można użyć tylko Dim
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
23
Zmienne, deklaracja zasięgu
 Zasięg zmiennej to obszar kodu, w którym można się
odwołać do zmiennej bez potrzeby użycia nazwy
kwalifikowanej
Zasięg zmiennej jest określony przez miejsce jej deklaracji
Zmienne lokalne są najlepsze dla pomocniczych działań (z
uwagi na szybkie zwalnianie pamięci)
Zmienne modułu zajmują miejsce w pamięci przez czas
działania aplikacji
 Przy deklarowaniu zasięgu ważne są reguły:
Zasięgiem zmiennej modułu jest przestrzeń nazw, w której
zdefiniowany jest dany moduł
Zasięgiem zmiennej współdzielonej lub instancyjnej jest
struktura lub klasa, w której zmienna jest zadeklarowana
Zasięgiem zmiennej lokalnej jest podprogram
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
24
Użycie przestrzeni nazw
 Niezbędne z uwagi na dużą liczbę klas .NET
 Dzięki umieszczeniu klas w przestrzeni nazw unika
się kolizji nazw (działa to tak, jak w systemie plików
może istnieć wiele plików o nazwie np. aza.txt , pod
warunkiem, że są umieszczone w innych folderach)
 Jeżeli tworzymy nowy projekt o nazwie np. Nowy, to
można umieścić go w przestrzeni nazw:
 Namespace Nowy
Public Class Form1
Inherits System.Windows.Forms.Form
……. Tu jest kod ….
End Class
 End NameSpace
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
25
Słowo kluczowe Imports
 W poprzednim przykładzie prawdziwa nazwa klasy
nie jest Form1, lecz Nowy.Form1 (nazwa w pełni
kwalifikowana)
 W przypadku odwoływania się do tej klasy poza
przestrzenią nazw Nowy musimy użyć nazwy w pełni
kwalifikowanej, chyba, że skorzystamy ze słowa
kluczowego Imports w celu zaimportowania
przestrzeni nazw Nowy
 Zapis Imports System.Windows.Forms powoduje, że
w kodzie można się odwoływać w sposób
uproszczony – bez używania nazwy kwalifikowanej
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
26
Tworzenie modułów w VB.NET
 Moduł jest podobny do klasy, a różnica polega na
tym, że składniki modułu są współdzielone i tym
samym są widoczne w całej przestrzeni nazw, w
której jest zadeklarowany moduł, a nie tylko w samym
module
 Moduł może być deklarowany tylko w przestrzeni
nazw i nie może być zagnieżdżony
 Moduł w VB.NET to znany z VB 6.0 czy VBA moduł
standardowy zawierający zestaw funkcji i procedur
dostępnych dla aplikacji
 Klasa w VB.NET to znany z VB 60 czy VBA moduł
klasy
 Klasa jest zorientowana obiektowo, a moduł nie
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
27
Struktury sterujące, pętle
 W VB.NET można stosować pętle typu”
 While
 DoWhile…Loop
 Do….LoopWhile
 DoUntil….Lopp
 Do ….Loop Until
 For…Next
 ForEach…Next
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
28
Pętla While
 Pętla While wykonywana jest do momentu, gdy
warunek nie stanie się prawdą
 Dim produkt As Integer = 2
 While produkt <=1000
 produkt = produkt * 2
 End While
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
29
Pętla DoWhile…Loop
 Pętla ta działa podobnie do pętle While
 W pętli DoWhile ….Loop warunek jest sprawdzany
przed wykonaniu obrotu, co oznacza, że pętla może
nie być wykonana (jeżeli warunek jest False)
 Dim produkt As Integer = 2
 Do While produkt <=1000
 produkt = produkt * 2
 Loop
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
30
Pętla Do ….LoopWhile
 W pętli Do ….LoopWhile warunek jest sprawdzany po
wykonaniu obrotu, co oznacza, że pętla będzie
wykonana co najmniej raz.
 Dim produkt As Integer = 2
 Do
 produkt = produkt * 2
 Loop While produkt <=1000
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
31
Pętla DoUntil … Loop
 Inaczej niż w pętlach DoWhile pętla DoUntil
wykonywana jest wtedy, gdy warunek jest False
 Z uwagi na umieszczenie słowa Until wraz z
warunkiem po Do pętla może nie być wykonana
 Dim produkt As Integer = 2
 Do Until produkt >1000
 produkt = produkt * 2
 Loop
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
32
Do …LoopUntil
 Inaczej niż w pętlach DoWhile pętla DoUntil
wykonywana jest wtedy, gdy warunek jest False
 Z uwagi na umieszczenie słowa Until wraz z
warunkiem po Loop pętla będzie wykonana co
najmniej raz
 Dim produkt As Integer = 2
 Do
 produkt = produkt * 2
 Loop Until produkt >1000
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
33
Pętla For … Next
 Inaczej zwana pętlą z licznikiem.
 Stosowana wtedy, gdy wiemy, ile razy ma być
wykonana
 Dim i As Integer, x as Double = 0
 For i=1 to 100
 x=x+i
 Next
 For i=1 to 100 Step 2
 x=x*i
 Next i
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
34
Pętla ForEach … Next
 Ten typ pętli wykorzystujemy wtedy, gdy chcemy
wykonać operacje na elementach kolekcji
 Powiedzmy, że na naszym formularzu chcemy
zmienić kolor tła wszystkich formantów na
jasnoniebieski
 Imports System.Windows.Forms
 Dim ctl As Control
 For Each ctl in currentForm.Controls
 ctl.BackColor=System.Drawing.Color.LightBlue
 Next
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
35
Warunkowe zakończenie pętli - Exit
 Każda pętla może być warunkowo przerwana za
pomocą słowa kluczowego Exit
 Dim i As Integer, x as Double = 0
 For i=1 to 100
 x=x+i
 if x>25 Then Exit for
 Next
 Exit może być także użyte do przerwania działania
także innych struktur niż pętle, np. Select Case
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
36
Operatory przypisania
 Zapis i=i+1 jest opisaniem przypisania: zmienna i
będzie równa poprzedniej wartości zmiennej i
powiększonej o 1
 Operatory dwuargumentowe to +, -, *, ^, &, \ oraz /
 Można użyć skróconego zapisu wg schematu:
 <zmienna> <operator>=<wyrażenie>
 Np.. i+=1 jest równoważne i=i+1
 x\=2 jest równoważne x=x\2
 y*=x jest równoważne y=y*x
 Operator przypisania może wystąpić w wyrażeniu
tylko raz
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
37
Operatory logiczne
 VB.NET oferuje kilka interesujących operatorów
logicznych dla budowania złożonych warunków
 Poza znanymi operatorami And, Or, Xor oraz Not
mamy takie operatory jak AndAlso i OrElse
 Zapis np..
 If (i>5) and (j>10) Then
 można teraz zapisać jako
 If (i>5) AndAlso (j>10) Then
 W pierwszym zapisie sprawdzane są oba warunki
pojedyncze, a następnie warunek łączny – w drugim
jeżeli pierwszy jest False, to drugi nie jest już
sprawdzany
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
38
Funkcje konwertujące
 Szereg funkcji konwertujących zmienną jednego typu
na inny typ.
 Cbool – konwersja na typ logiczny
 Cbyte
 Cchar
 Cdate
 Cdbl
 Cint
 Clng
 Cstr
 Ctype – konwertuje na dowolny typ
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
39
Przydatne funkcje tekstowe
 Len
 Chr
 Asc
 Left
 Right
 Mid
 Instr
 Lcase
 Ucase
 Ltrim, Rtrim, Trim
 Substring
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
40
Inne przydatne funkcje
 IsArray – zwraca True jeżeli tak
 IsDate – zwraca True, jeżeli parametr jest datą
 IsNumeric – zwraca True, jeżeli parametr jest liczbą
 IsObject – zwraca True, jeżeli parametr jest typem
obiektowym
 TypeName – zwraca nazwę typu danych parametru
 Now – zwraca bieżącą datę i czas
 Today – zwraca bieżącą datę z czasem ustawionym
na 00:00:00
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
41
Try…Catch
 W trakcie wyknywania programu mogą się zdarzyć
różne błędy, np. brak wskazanego pliku w danej
lokalizacji, wyłączona drukarka, brak papieru, brak
krążka w napędzie CD, brak dostępu do sieci czy do
serwera SQL, brak pamięci czy brak stosownych
uprawnień.
 Obowiązkiem programisty jest zapewnienie obsługi
takich sytuacji (wyjątków).
 Środowisko VisualStudio.NET dostarcza konstrukcję
Try …Catch …End Try tworząca pułapkę na możliwy
wyjątek.
 Jest to znakomite rozszerzenie znanaych z VBA
isntrukcji On Error Goto i On Error Resume Next
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
42
Składnia
 Try
… tu wstawiamy kod, który może spowodować błąd
wykonania …
 Catch
… tu wstawiamy kod obsługujący wystąpienie wyjątku …
 [Finally]
… fragment nieobowiązkowy, jeżeli jest, to jest wykonywany
zawsze niezależnie od tego, czy wystąpił wyjątek czy nie
 End Try
 Przy obsłudze błędu można wykorzystać obiekt err z
jego właściwościami Number i Description do
doprecyzowania rodzaju błędu
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
43
Przykład
 Try

FileOpen(1, Me.OpenFileDialog1.FileName, _
OpenMode.Input)

Do Until EOF(1)

txt = txt + LineInput(1) + vbCrLf

Loop

Catch

MsgBox("Mam problem z odczytem pliku")

Finally

FileClose(1)

Me.txtPlik.Text = txt

Me.Text = txtNazwaPliku + " metoda FileOpen"
 End Try
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
44
Przykład obsługi błędu z licznikiem
 Dim ileErr as Integer = 0
 Try

PictureBox1.Image = _
System.Drawing.Bitmap.FromFile(„D:\wszim.bmp”)
 Catch

ileErr += 1
If ileErr <= 2 then

MsgBox(„Proszę włożyć dysk do napędu")
Else

MsgBox(„Operacja odczytu pliku graficznego nieudana”)

Exit Sub (lub jakieś inne zakończenie – JG)
End If
 End Try
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
45
Zagnieżdzone Try…Catch
 Try

PictureBox1.Image = _
System.Drawing.Bitmap.FromFile(„D:\wszim.bmp”)
 Catch
 MsgBox(„Proszę włożyć dysk do napędu i nacisnąć OK")



Try
PictureBox1.Image = _
System.Drawing.Bitmap.FromFile(„D:\wszim.bmp”)
Catch
MsgBox(„Operacja odczytu pliku graficznego nieudana”)

Exit Sub (lub jakieś inne zakończenie – JG)
 End Try
 End Try
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
46
Wykorzystanie obiektu Err
 Try

PictureBox1.Image = _
System.Drawing.Bitmap.FromFile(„D:\wszim.bmp”)
 Catch When Err.Number = 53

MsgBox(„Plik nie odnaleziony”)
 Catch When Err.Number = 7
MsgBox(„Brak pamięci”)
Catch
MsgBox(„Operacja odczytu pliku graficznego nieudana”)
End Try
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
47
Jak było bez Try…Catch
 If File.Exists(„D:\WSZiM.bmp”) Then
PictureBox1.Image = _
System.Drawing.Bitmap.FromFile(„D:\wszim.bmp”)
 Else
MsgBox(„Plik nie odnaleziony”)
 End if
 Taka konstrukcja wymaga zaimportowania
przestrzeni nazw System.IO, jest oczywiścia
dopuszczalna, ale Try…Catch działa szybciej
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego
48