Hej Claus.
Jeg vil ikke forsøge at forklare klasser og objekt-orienteret design/programmering for dig, for det er en videnskab i sig selv :-) Jeg vil nøjes med at forklare, hvorfor din kode ikke virker.
For det første bør du sætte de to compiler options "Option Strict" og "Option Explicit" (
http://msdn2.microsoft.com/en-US/library/c553zwz0(VS.80).aspx). Dette vil forhindre kode som følgende:
Regn.Plus(Me.Label1.Text, 1)
Me.Label1.Text er en string, men din sub Regn.Plus tager to integers som parametre. Det betyder, at VB implicit laver en "typecast" af værdien i Me.Label1.Text til en integer. Ved at bruge "Option Strict" tvinger VB-kompileren dig til explicit at foretage denne cast, hvilket giver pænere kode:
Dim tal As Integer = Convert.ToInt32(Me.Label1.Text)
Regn.Plus(tal, 1)
Bemærk, at koden vil kaste en FormatException, hvis der ikke er indtastet et lovligt heltal i textbox'en.
Din implementation af Regn.Plus virker ikke, fordi parameteren tal overføres som byval og ikke som byref. Du kan læse mere om byval/byref her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcn7/html/vaconargpassmechanism.aspJeg vil dog mene, at den "korrekte" implementation af Regn.Plus bør være som en funktion, der returnerer summen af de to tal:
Public Function Plus(ByVal tal As Integer, ByVal antal As Integer) As Integer
Return tal + antal
End Sub
Håber, du er blevet lidt klogere.
:-) Jakob.
Indlæg senest redigeret d. 20.12.2006 16:28 af Bruger #11036