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
|