Ĺadny brzuch
To co w temacie ?? :blink:
http://msdn.microsof.../vakeyByVal.asp :>
a mógłbys mi to przetłumczyć na chłopski (polski) język...
Nie - bo sie zaczna kolejne "co to jest". To juz z tego co widze twoje drugie "co to jest" dotyczace VB. Stary ... bedziesz tak pytal o kazdy element jezyka ? ... to moze lepiej odpusc i uprawiaj marchewki ...
Pozdr.
st3tc
ByVal nie jest funkcją, tylko sposobem przekazywania zmiennej do funkcji (procedury). W VB 6 domyślnym sposobem przekazywania funkcji jest ByRef (czyli przez referencję do danego obiektu lub zmiennej), w VB.Net jest ByVal (czyli przez wartość).
Polega to na tym, że przekazując zmienną ByVal jeśli wykonujemy w danej funkcji operacje (działania) na tej zmiennej, to i tak po wyjściu z tej procedury nadal będziemy mieli wartość taką, jak przed wejściem do danej procedury. Przy stosowaniu ByRef jeśli zmienimy zmienną w procedurze, to po wyjściu będzie ona zmieniona.
Przykład:
Sub Test2(ByVal liczba) liczba = 4 * liczba End Sub Sub Test3(ByRef liczba) liczba = 8 * liczba End Sub
Jeśli mamy zmienną a=2 i wywołamy Test2(a), to po wykonaniu tego sub a będzie nadal =2, a jeśli wywołamy Test3(a), to po wyjściu z procedury a będzie równe 16.
Do czego to stosować (ByRef)? Np do funkcji, które mają zwracać więcej niż jeden wynik. Przykładem może być dodawanie godzin, minut i sekund. W wyniku chcemy otrzymać liczbę godzin, minut i sekund, ale funkcja może zwracać tylko jedną wartość, więc trzeba zrobić to ByRef:
Function Dodaj(ByRef Godziny1, ByRef Minuty1, ByRef Sekundy1, ByVal Godziny2, ByVal Minuty2, ByVal Sekundy2) Sekundy1 = Sekundy1 + Sekundy2 if Sekundy1>60 then Sekundy1=Sekundy1-60: Minuty1=Minuty1+1 Minuty1 = Minuty1 + Minuty2 if Minuty1>60 then Minuty1=Minuty1-60: Godziny1=Godziny1+1 Godziny1 = Godziny1 + Godziny2 End function
Po wyjściu z danej procedury tak naprawdę wynik będzie przechowywany w pierwszych trzech zmiennych - Godziny1, Minuty1, Sekundy1
pozdrawiaMM
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
http://msdn.microsof.../vakeyByVal.asp :>
a mógłbys mi to przetłumczyć na chłopski (polski) język...
Nie - bo sie zaczna kolejne "co to jest". To juz z tego co widze twoje drugie "co to jest" dotyczace VB. Stary ... bedziesz tak pytal o kazdy element jezyka ? ... to moze lepiej odpusc i uprawiaj marchewki ...
Pozdr.
st3tc
ByVal nie jest funkcją, tylko sposobem przekazywania zmiennej do funkcji (procedury). W VB 6 domyślnym sposobem przekazywania funkcji jest ByRef (czyli przez referencję do danego obiektu lub zmiennej), w VB.Net jest ByVal (czyli przez wartość).
Polega to na tym, że przekazując zmienną ByVal jeśli wykonujemy w danej funkcji operacje (działania) na tej zmiennej, to i tak po wyjściu z tej procedury nadal będziemy mieli wartość taką, jak przed wejściem do danej procedury. Przy stosowaniu ByRef jeśli zmienimy zmienną w procedurze, to po wyjściu będzie ona zmieniona.
Przykład:
Sub Test2(ByVal liczba) liczba = 4 * liczba End Sub Sub Test3(ByRef liczba) liczba = 8 * liczba End Sub
Jeśli mamy zmienną a=2 i wywołamy Test2(a), to po wykonaniu tego sub a będzie nadal =2, a jeśli wywołamy Test3(a), to po wyjściu z procedury a będzie równe 16.
Do czego to stosować (ByRef)? Np do funkcji, które mają zwracać więcej niż jeden wynik. Przykładem może być dodawanie godzin, minut i sekund. W wyniku chcemy otrzymać liczbę godzin, minut i sekund, ale funkcja może zwracać tylko jedną wartość, więc trzeba zrobić to ByRef:
Function Dodaj(ByRef Godziny1, ByRef Minuty1, ByRef Sekundy1, ByVal Godziny2, ByVal Minuty2, ByVal Sekundy2) Sekundy1 = Sekundy1 + Sekundy2 if Sekundy1>60 then Sekundy1=Sekundy1-60: Minuty1=Minuty1+1 Minuty1 = Minuty1 + Minuty2 if Minuty1>60 then Minuty1=Minuty1-60: Godziny1=Godziny1+1 Godziny1 = Godziny1 + Godziny2 End function
Po wyjściu z danej procedury tak naprawdę wynik będzie przechowywany w pierwszych trzech zmiennych - Godziny1, Minuty1, Sekundy1
pozdrawiaMM