Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

VB.NET FAQ / manual

[es] :: .NET :: .NET Desktop razvoj :: VB.NET FAQ / manual

[ Pregleda: 7525 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jc denton

Član broj: 2358
Poruke: 1705
*.ptt.yu



Profil

icon VB.NET FAQ / manual09.08.2002. u 20:06 - pre 263 meseci
Tipovi podataka
link u novom MSDN-u : ms-help://MS.VSCC/MS.MSDNVS/vblr7/html/vagrpdatatype.htm

Svi jezici u .NET okruzenju koriste .NET Framework's Base Class Library, tj. neke delove iste. VB.NET ne koristi sve klase i strukture BCL-a, ali su tipovi koji se koriste u njemu u stvari 'odgovarajuci' tipovi iz BCL-a (Base Class Library).

Celobrojni tipovi

Short - 16-bitni celobrojni tip. Ekvivalent za ovaj tip je Int16 u BCL-u.
Char - isto kao short, bez znaka (unsigned)
Integer - 32-bit celobrojni tip. 'Zamena' u BCL-u je Int32 tip.
Long - 64-bit celobrojni tip. Za ovaj tip ekv. je Int64.

Stringovi

U VB-u 6, stringovi su mogli da se deklarisu kao fiksni i promenljive duzine. U VB.NET-u stringovi su implementirani kao objekti String klase koja je deo .NET Framework's System namespace-a. Posledica ovakve implementacije je da u VB.NET-u nije moguce definisati stringove fiksne duzine i sledeca deklaracija rezultirace greskom :
Code:

Dim Name As String * 30


Ovako bi bilo ispravno :
Code:

Dim ime As String = "mika"

Ovako deklarisan string pri inicijalizaji 'dobija' odredjenu duzinu koja nije izmenjiva. Znaci pri svakoj promeni vrednosti ove promenljive CLR (Common Language Runtime) dodaje referencu na novi String objekt.
U slucaju da hocemo da podesimo duzinu stringa na odredjen broj karaktera mozemo da iskoristimo PadLeft i PadRight funkcije koje su zamenile stare LSet i RSet funkcije iz VB-a 6 :
Code:

Msgbox(ime.PadLeft(15))

Inicijalizacija string promenljive moze da se odradi i ovako :
Code:

Dim ime As New String("A"c, 5)

Na ovaj nacin dobijamo inicijalnu vrednost string-a "AAAAA", 'c' na kraju oznacava da je rec o karakteru (tip Char).

Variant tip

Varijant nije podrzan u VB.NET-u, ali sada je tu Object tip kao univerzalni tip koji moze da sadrzi podatke bilo koje vrste.
VarType funkcija, pomocu koje u VB-u 6 mozemo da odredimo o kom se tipu podatka radi u Variant-u, sada 'vraca' vrstu podtip-a Object tipa, sto mu je otprilike isto.
TypeName funkcija prisutna je i VB.NET-u i dalje mozemomo da je koristimo na isti nacin.

Currency tip je zamenjen novim Decimal tipom koji omogucava vise cifara sa jedne i druge strane pokretnog zareza.

Deftype i sl. nije podrzan.

Promene u deklaraciji

U VB.NET-u je moguce u istom redu deklarisati vise promenljivih istog tipa, a da se ne navodi tip za svaku promenljivu ponaosob :
Code:

Dim a As Long, b, c, d As Integer, e As String

Ovde su b, c, d tipa Integer, a ostalo je valjda jasno.

Inicijalizacija vrednosti promenljivih je takodje moguca u deklaraciji :
Code:

Dim a As Integer = 5
Dim b As Integer = 6, c As Integer = 7

Promene u Variable Scope-u i Lifetime promenljivih

U VB-u 6, recimo, promenljiva deklarisana bilo gde u proceduri je 'vidljiva' svuda u toj proceduri.
U VB.NET-u, ako je promenljiva deklarisana u nekoj petlji, if bloku i sl., onda je ta ista promenljiva vidljiva samo u tom bloku. Na primer :
Code:

Sub primer ( )
if a > 0 Then
    Dim b As Integer
    b=1/a
end if
MsgBox b

Zadnja linija koda rezultirace greskom. Vazno je i da se napomene da ovako deklarisane promljive u bloku imaju 'zivotni vek' (lifetime) sve dok se izvrsava procedura, pa zadrzavaju vrednost od zadnjeg izvrsavanja bloka u kome su deklarisane. Nesto slicno kao Static u VB-u 6.

Nizovi

U VB-u 6 bilo je dozvoljeno da se definise donja granica indeksa niza, kao i default za istu kod nizova gde to nije eksplicitno naznaceno.
VB.NET vise ne dozvoljava ove 'vratolimije', dakle, Option Base je izbacen i svi nizovi pocinju sa indeksom 0. Pored toga, svi nizovi su sada dinamicki i ne postoje nizovi fiksne duzine, a ono sto se navede u deklaraciji je u stvari samo neka inicijalna velicina niza.
Za razliku od starog VB-a, nije moguce promeniti broj dimenzija u nizu komandom ReDim i ova komanda ne moze da se koristi za deklaraciju niza nego samo za promenu velicine niza.
Evo nekih primera za deklaraciju nizova :
Code:

'bez inicijalizacije i inicijalne velicine :
Dim niz(  ) As Integer  
'ili eksplicitno :
Dim niz(  ) As Integer = New Integer(  ) {}
 
'bez inicijalizacije clanova niza ali sa inicijalnom velicinom :
Dim niz(5) As Integer
Dim niz(  ) As Integer = New Integer(5) {}
 
'inicijalizacija clanova koja odredjuje i velicinu niza :
Dim niz(  ) As Integer = {1, 2, 3, 4, 5, 6}
'a moze i jedno i drugo : 
Dim niz(  ) As Integer = New Integer(5) {1, 2, 3, 4, 5, 6}

'Visedimenzionalni nizovi :
Dim niz(,) As Integer = {{1, 2, 3}, {4, 5, 6}}

Korisnicki tipovi i strukture

VB.NET ne podrzava Type ... End Type, pa je sada tu Structure...End Structure :
Code:

Structure korisnik
        Public ime As String
        Public prezime As String
End Structure

Strukture u VB.NET-u su naprednije i podsecaju u neku ruku i na klase zato sto mogu da imaju clanice kao sto su obelezja i metode :
Code:

Structure Automobil
    Public Property Start() As String
        Get
        End Get

        Set(ByVal kljuc As String)
            If kljuc Then
                statusMotora = "motor radi"
            Else
                statusMotora = "motor ne radi"
            End If
        End Set
    End Property

    Private statusMotora As String

    Public Sub PrikaziStatus()
        MsgBox(statusMotora)
    End Sub

End Structure


Code:

pomocu ovog obelezja (property) dodeljuje se vrednost Private member-u (clanu) statusMotora :
noviAuto.Start = True
'sa metodom (procedura) PrikaziStatus dobijamo ispis statusa
noviAuto.PrikaziStatus()



Procedure i funkcije

Pozivanje procedura u starom VB-u je bilo moguce preko komande Call gde su parametri morali biti uokvireni zagradama ili bez zagrada ali takodje bez komande call. Argumenti su takodje morali biti uokvireni zagradama pri pozivu funkcija.
U VB.NET-u obavezno je koriscenje zagrada oko liste argumenata za datu proceduru ili funkciju. Opciono je koriscenje zagrada za poziv procedure koja nema argumente, a takodje ne mora da se koristi Call komanda.

Kod prenosa parametara ByRef je bio default u VB-u 6, a za VB.NET je ByVal. U VB-u 6, argumenti se mogu deklarisati kao Optional i to bez osnovne (default) vrednosti, a za proveru u samoj proc. da li je argument prosledjen koristili smo IsMissing funkciju.
VB.NET ima drugu logiku koja kaze ovako :

Sub procedura(Optional ByVal parametar As Boolean = False)

IsMissing funkcija ne postoji, pa otud i obavezna default vrednost za Optional parametar (valjda).

Evo sada i jedne fine stvarcice koju su uveli u novi VB. U VB-u 6, prosledjivanje property-ja od nekog objekta nekoj proceduri nije uticalo na samo obelezje tog objekta iako je isto promenilo vrednost u pozvanoj proceduri. Evo primera :
Code:

Sub prepolovi(ByRef vrednost As Long)
   vrednost = CLng(vrednost/2)
End Sub
 
Call prepolovi(Button1.Height)

Posle ovog poziva visina dugmeta Button1 je prepolovljena.


Konstante

Vecina ugradjenih konstanti koje smo koristili u starom VB-u je sada u Microsoft.VisualBasic.Constants klasi uz male izuzetke. Recimo vbRed i vbBlue konstante nisu clanice ove klase nego pripadaju System.Drawing.Color strukturi.
Evo primera :
Code:

Me.BackColor = System.Drawing.Color.Blue , mada ovo System.Drawing ne mora da se navodi, moze i samo Color.Blue.

Evo linka za listu ugradjenih konstanti u novom MSDN :
ms-help://MS.VSCC/MS.MSDNVS/vbcn7/html/vaconworkingwithconstants.htm


Q : Windows Forms, sta je to ?

A : U prethodnim verzijma Visual Studia svaki alat je koristio svoje 'nacine' za kreiranje GUI aplikacija. .NET Framework omogucava sada svim alatima podrzanim u novom VS-u da koriste isti set klasa za kreiranje GUI aplikacija i to je System.Windows.Forms. Treba pomenuti i System.Drawing namespace koji se takodje neizostavno koristi u pri kreiranju GUI aplikacija.
Dakle, forma koju smo imali u starom VB-u ne tretira se vise na isti nacin vec je to objekat nastao iz klase definisane u namespace-u System.Windows.Forms.

Q : Kako da dodam formu u projekat i kako da je pozovem, tj. prikazem ?

A : Kao i vecina klasa i Form klasa se moze iskoristiti za 'pravljenje' objekata, recimo :
Code:

Dim forma As New System.Windows.Forms.Form()

a, ako od neke postojece forme (klase) zelimo da napravimo objekt moglo bi ovako :
Code:

Dim forma As New System.Windows.Forms.Form() = New Form1()

i na kraju kao u starom VB-u :
Code:

forma.Show()

Q : Uh, bas su mora da se kuca da za prostu deklaraciju. Da li moze nekako krace da se napise ova deklaracija?

A : Moze. Recimo ovako :
Code:

Dim forma As New Form()
forma.Show()

Znaci, nije potrebno da se pise System.Windows.Forms.Form nego samo Form. Za sve skupove klasa tj. biblioteke koje su ukljucene u projekat ovo vazi uglavnom. Sta je ukljuceno moze da se vidi ako se u Solution Explorer-u klikne na projekat pa onda na Propeties i na kraju na Imports, a tu obicno pise nesto ovako :
Microsoft.VisualBasic, System, System.Collections, System.Data, System.Diagnostics, System.Drawing, System.Windows.Forms.

Q A sta je Windows Form Designer ?

A Windows Form Designer alat koji kreira VB.NET kod na osnovu onoga sto je postavljeno na formu (dugmici,labele itd) i ostalih akcija koje su izvrsene preko grafickog interfejsa tj. koriscenjem vizuelnih alata, kao na pr. kada dodamo data adapter i napravimo konekciju na bazu, sav potreban kod koji bi inace rucno pisali se nalazi u sekciji 'Windows Form Designer generated code'

Q Dobro, a da li moze nekako sve 'rucno' da se kodira ?

A Moze, naravno. Evo primera 'step by step' za kreiranje forme iz Notepada :

Code:


Imports System.Windows.Forms
Imports System.Drawing

Module Module1
    Public Class forma
        Inherits Form

        Private labela As New Label()

        Public Sub New()
            With labela
                .Font = New Font("Arial", 24)
                .Location = New Point(16, 8)
                .Size = New Size(248, 40)
                .TabIndex = 0
                .Text = "LABELA"
            End With

            Controls.Add(labela)

        End Sub

    End Class

    <System.STAThreadAttribute()> Public Sub Main()
        System.Threading.Thread.CurrentThread.ApartmentState = System.Threading.ApartmentState.STA
        Application.Run(New forma())
    End Sub ' Main



Ovo se snimi recimo kao forma.vb pa pozivamo kompajler iz konzole :

vbc forma.vb /r:System.dll,System.Drawing.dll,System.Windows.Forms.dll /t:winexe

i rezultat je fajl forma.exe spreman za start.

Q Kako da dodam biblioteke u projekat koje ja zelim ?

A Ovako : Project/Add Reference i izaberemo one koje zelimo. System.dll, System.Drawing.dll i System.Windows.Forms.dll su u vecini slucajeva potrebne biblioteke za GUI aplikacije.

fire, walk with me
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: VB.NET FAQ / manual

[ Pregleda: 7525 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.