ďťż

Ł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
  •