Vill ha svar på följande frågor: 1.) byRef - Skicar en referens till variabeln Hej men det finns väl något som heter class_Initialaze(), är inte detta en konstruktor?? Inte en konstruktor. Som du påpekar kan man ju skicka argument till en konstruktor. Det kan man inte till class_Initialaze(). Det är bara en händelse(event). Hej Andreas Korigerat det till argument. B och G sitter för nära varandra. ;O) Sven! Jag instämmer att byval är att föredra om man inte absolut behöver skicka variabeln byref. Jag tycker också att man bör skriva ut byref om man ska använda det. Det är alltid läskigt att gå in i andras kod och inte veta om de har gjort variablerna byref av misstag eller avsiktligt!byRef, byVal, Moduler, Funktoiner, Subrutiner
1.) byRef och byVal, vad är det för skillnad om jag tar emot en variabel som referens eller bara skriver typ sub test(x as integer) istället för sub test(byRef x as integer)
2.) När är det tänkt att man ska använda moduler, används dessa bara för att lägga funktioner i eller?
3.) vad är det för skillnad på en subrutin och en funktion?
4.) hur gör jag för att skicka med saker i en "konstruktor"?Sv: byRef, byVal, Moduler, Funktoiner, Subrutiner
byVal - Skickar en kopia av varibelns data
Standard i vb är ByRef Vilket innebär att det inte är någon skillnad på:
sub test(x as integer)
och
sub test(byRef x as integer)
Om du skickar ett värde ByRef kommer förändringa av väaribeln du skickar in att gälla.
T.Ex
Private Sub Form_Load()
Dim MyValue As Integer
MyValue = 5
Test MyValue
Msgbox MyValue
End Sub
Sub test(x as integer)
x = x + 1
End Sub
Kommer att visa 6 i meddelanderutan.
Om du skickat värdet som ByVal skulle det vara oförändrat.
Man kan skicka det ByVal och ByRef på två sätt. Det första sättet har jag visat. Så här ser det andra sättet ut:
T.Ex
Private Sub Form_Load()
Dim MyValue As Integer
MyValue = 5
Test ByVal MyValue
Msgbox MyValue
End Sub
Sub test(x as integer)
x = x + 1
End Sub
Jag har ByVal framför min variabel i funktionsanropet. Den kommer nu istället skicka en kopia av informationen i variabeln. Vilket innebär att värdet är 5 när meddelanderutan visas.
2.) Moduler ancänds för att deklarera konstanter, datastrukturer/UDT (User Defined Type) och skriva funktioner. Man kan nu oxå skriva Property Procedures i dem och deklarera Enum'er(Sedan ver. 5 av vb). Publika medlemmar av en modul kan bara anropas innefrån ett projekt.
3.) En funktion retunerar ett värde. En subrutin retunerar inget värde. Det är den enda skillnaden mellan dem. En funktionerna kan anropas på samma sätt som en subrutin. Men en subrutin kan inte anropas som en funktion.
4.) Konstruktor finns inte i vb6. Får man vänta tills vb.net. Har bara skrapat lite på ytan här. Så jag låter gärna någon annan förklara denna punkt.
Sv: byRef, byVal, Moduler, Funktoiner, Subrutiner
ByRef behöver du inte skriva,det blir det automatiskt.
Det betyder att du skickar en pekare som argument till din Sub/Funktion
som pekar på den adress i minnet som din skickade sträng ligger på.
ByVal däremot skall du helst alltid använda.
Varför ? Jo som säkerhet om du ändrar värdet på det skickade
argumentet i din sub/funktion kommer du att få konflikter
på stacken om det är en Global variabel du har skickat.
ByVal skickar det faktiska värdet på variabeln ,inte adress.
ByVal kommer att bli standard i kommand versioner tex som nu .Net
ungefär så ,nu får jag en massa duktiga i strupen men det får man ta.
mvh
SvenSv: byRef, byVal, Moduler, Funktoiner, Subrutiner
Sv: byRef, byVal, Moduler, Funktoiner, Subrutiner
Sv: byRef, byVal, Moduler, Funktoiner, Subrutiner
>arbument
Vad menar du för arbument ?
undrar
SvenSv: byRef, byVal, Moduler, Funktoiner, Subrutiner
Sv: byRef, byVal, Moduler, Funktoiner, Subrutiner