Lekcja 22

Dzi╢ przed nami funkcje │a±cuchowe. Co to s▒ funkcje │a±cuchowe? S▒ to funkcje kt≤re "przerabiaj▒" stringi. Sami zobaczcie:

1. Chr (liczba) - zwraca znak ASCII odpowiadaj▒cy numerycznemu argumentowi. O co tu chodzi i po co to stosowaµ. Napiszmy ma│y programik:

Uruchom VB - na formie u│≤┐ przycisk. Teraz musimy dodaµ taki kod, aby wy╢wietli│ siΩ komunikat:
I powiedzia│a "Jestem tu" i posz│a dalej

Psi. Bana│ - napiszΩ tak:

x = msgbox (" I powiedzia│a "Jestem tu" i posz│a dalej" )

Ojej ! Wyskoczy│ jaki╢ b│▒d - co jest. VB siΩ pogubi│! Dlaczego. VB chce wy╢wietliµ komunikat :
I powiedzia│a , ale po drugim cudzys│owie nie ma przecinka i zamiast vbPrzycisk czy vbikonka jest jaka╢ bzdura ! Chmm co by na to poradziµ ? Tutaj z pomoc▒ przychodzi nam funkcja Chr - nasz program bΩdzie wygl▒da│ tak:

x = msgbox ( "I powiedzia│a " & chr(34) & " Jestem tu " & chr(34) & " i posz│a dalej ")

TrochΩ bardziej skomplikowane - ale tak musi byµ

Ca│a tablica w pliku txt

2. LCase (string) - zmienia wszystkie znaki w stringu na ma│e np:

x = "Stonoga Ma 100 n≤g"
y = LCase (x)

Da w wyniku "stonoga ma 100 n≤g"

2. UCase - zmienia wszystkie znaki w stringu na du┐e np.

x = "Stonoga Ma 100 n≤g"
y = UCase (x)

Da w wyniku "STONOGA MA 100 N╙G"

3.Left (string, n) - zwraca n pierwszych znak≤w │a±cucha (stringa) np.

x = "Stonoga Ma 100 n≤g"
y = Left (x, 10)

Zwr≤ci to - Stonoga Ma

4. Right (string, n) - zwraca n ostatnich znak≤w │a±cucha np.

x = "Stonoga Ma 100 n≤g"
y = Right (x, 7)

Zwr≤ci  - 100 n≤g

5. Mid (string, n,m) - zr≤ci bΩd▒czy czΩ╢ci▒ argumentu │a±cuch pocz▒wszy od znaku numer n do znaku nr. m (licz▒c od n !)  np.

x = "Stonoga Ma 100 n≤g"
y = Mid (x, 9,6)

Zwr≤ci  - 100 n≤g

S t o n o g a   M a   1 0 0   n g
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6        

Zauwa┐, ┐e litera M jest zarazem znakiem 9 jak i pierwszym !!!

6. Len(string) - zwraca d│ugo╢µ stringu np.

x= "Stonoga"
y = Len(x)

W tym przypadku y = 7

7. (L),(R)Trim - usuwa spacje wiod▒ce - L z lewej, R z prawej, samo Trim i z lewej i z prawej np

x = Ltrim ("       to jest lekcja VB      ") 
zwr≤ci  "to jest lekcja VB      "

x = Rtrim ("       to jest lekcja VB      ") 
zwr≤ci "       to jest lekcja VB" 

x = trim ("       to jest lekcja VB      ") 
zwr≤ci "to jest lekcja VB" 

8. ASC (znakASCII) - odwrotno╢µ funkcji Chr - czyli ze znaku robi liczbΩ np

y = Asc("A")
zwr≤ci liczbΩ 65

LEKCJA 23

Funkcji ci▒g dalszy. Dzi╢ funkcje testuj▒ce dane i funkcje konwersji danych. Zaczynamy od tych pierwszych.
Po co siΩ je stosuje ? Jak sama nazwa m≤wi co╢ testuj▒, ale co ? Nadaj▒ siΩ doskonale do obs│ugi b│Ωd≤w w naszym programie. ZademonstrujΩ dzia│anie jednej z nich. Napiszmy program kt≤ry bΩdzie podnosi│ do potΩgi pewn▒ liczbΩ kt≤r▒ wpiszemy w okienko tekstowe. Tak wiΩc uruchamiamy VB - dodajemy textbox-a nazwijmy go txtLiczba. Teraz jeszcze przycisk - jako etykietΩ nadaj mu "Podnie╢ do kwadratu". OK. Zasada jest prosta - po klikniΩciu na przycisk podnosi do kwadratu liczbΩ wpisan▒ w okienko, a wynik podaje w MsgBox-ie. Proste nie ?

Dim x
x = Val(txtLiczba) ^ 2
odp = MsgBox(txtliczba & " do kwadratu to " & x)

Uruchamiamy program - w okienko tekstowe wpisujemy jak▒╢ liczbΩ i dzia│a. No dobra, ale co siΩ stanie gdy w okienko tekstowe wpiszemy jakie╢ s│owo np. Visual Basic. Wyskoczy nam komunikat, ┐e Visual Basic do kwadratu to 0. Co za bzdura !!!. Puki wpisujemy liczby to wszystko jest w porz▒dku, a gdy jaki╢ string to ca│y program siΩ pieprzy. 
Mo┐na by zastosowaµ co╢ takiego, ┐e gdy w pole tekstowe wpiszemy jaki╢ string to program wy╢wietli komunikat, ┐e b│▒d. No ale jak VB ma rozpoznaµ czy to string czy liczba ? Po to w│a╢nie s▒ funkcje testuj▒ce dane. Nasz program teraz powinien wygl▒daµ tak:

Dim x
If IsNumeric(txtliczba) Then
x = Val(txtliczba) ^ 2
odp = MsgBox(txtliczba & " do kwadratu to " & x)
Else
odp = MsgBox("B│▒d", vbCritical, "B│▒d")
End If

Po przet│umaczeniu bΩdzie to wygl▒da│o tak:

ZapamiΩtuj x
Je╢li to co w polu tekstowym to liczba to...
Obliczenie + Komunikat z odpowiedzi▒
W przeciwnym przypadku
B│▒d

OK. Oto najwa┐niejsze funkcje testuj▒ce dane:

1. IsDate (string) - zwraca true je╢li data
2. IsNumeric (string) - zwraca true je╢li liczba
3. IsEmpty (zmienna) - zwraca True je╢li zmienna nie istnieje

Ma│y przyk│adik do IsEmpty

Dim zmienna
If IsEmpty (zmienna) Then
MsgBox ("B│▒d")
End If

W tym przypadku wyskoczy komunikat B│▒d poniewa┐ nigdzie nie mamy podstawienia czego╢ pod zmienn▒.

No dobra - to tyle o funkcjach testuj▒cych dane - wiΩcej w helpie (ci co maj▒ pirata to niestety, ale je╢li Ci te funkcje bΩd▒ potrzebne to napisz do mnie, a ci je pode╢lΩ ...)

----------------- FUNKCJE KONWERSJI DANYCH --------------------

A te po co siΩ stosuje ? Zn≤w malutki przyk│adzik: (chyba to ju┐ kiedy╢ by│o...)

x = 1/7   'daje to w wyniku 0,1428571
x = CDbl (1/7)  'daje w wyniku 0,142857142857143

VB domy╢lnie stosuje tryb Single - pierwszy przypadek. Po konwersji na Double otrzymujemy dok│adniejszy wynik...

Oto inne:

Cint (x) - Zaokr▒gla w g≤rΩ argument z czΩ╢ci▒ u│amkow▒ do liczby ca│kowitej np.
Cint (12,7) = 13

Int(x) - Zaokr▒gla w d≤│ argument z czΩ╢ci▒ u│amkow▒ do liczby ca│kowitej np.
Cint (12,7) = 12

CStr (x) - Konwertuje argument na stringa

CVar (x) - Konwertuje argument na Variant

Fix (liczba) - Obcina czΩ╢µ u│amkow▒

Hex(liczba) - Konwertuje numeryczny argument na heksadecymalny

Oct (liczba) - Konwertuje numeryczny argument na oktalny

Teraz pewnie powiesz, ┐e Fix i Int to te same funkcje. Bo przecie┐:
Fix (12,5) = 12    i   Int(12,5) = 12
Po│owicznie masz racjΩ. Fix = Int tylko wtedy gdy liczba jest dodatnia lub 0. Ale zobacz:

Fix (- 12,5) = -12   ' Bo obcina to co jest po przecinku
Int (-12,5) = -13   'Bo -12 by│o by wiΩksze ni┐ -12,5, a ma byµ mniejsze - wiΩc -13

Oczywi╢cie funkcji jest wiΩcej, ale te s▒ najwa┐niejsze...

Dariusz "Slash" Wadowski
slash@at.bjn.pl