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