Avatar billede gangsta12dk Nybegynder
05. april 2002 - 22:46 Der er 5 kommentarer og
1 løsning

Forklaring

Er der nogen der kan forklare mig hvad forskellen er på de fire ().


Sub hej()
End Sub

Private Sub hej()
End Sub

Private Function hej()
End Function

Function hej()
End Function
Avatar billede sjh Nybegynder
05. april 2002 - 23:05 #1
'kan ikke refererer tilbage
Sub hej(strText)
  hej = strText
End Sub

'kan ikke refererer tilbage, Private kan du kun se / bruge i samme Form/Module osv..
'eks: Module1.hej "test" funker ikke
Private Sub hej(strText)
  hej = strText
End Sub

'kan refererer tilbage, Private kan du kun se / bruge i samme Form/Module osv..
'eks: xx = hej("test") ' xx er nu test
Private Function hej(strText)
  hej = strText
End Function

'kan refererer tilbage, kan du kun se / bruge i alle Form/Module osv..
'eks: xx = hej("test") ' xx er nu test
Function hej(strText)
  hej = strText
End Function
Avatar billede gangsta12dk Nybegynder
05. april 2002 - 23:12 #2
tak for dit svar, men det ville være lidt lettere for mig at forstå hvis du talte et normalt sprog jeg kunne forstå, fordi jeg er ikke så god til visual basic og har det lidt svært med at forstå dit svar.
Avatar billede sjh Nybegynder
05. april 2002 - 23:28 #3
Private betyder hvis du laver en funktion i et Module eller i Class kan du kun se / bruge funktion i Module eller i Class

eksempel:

hvis du laver en "Sub"/"Function" med "Private" foran i et Module/Class kan du kun bruge den under dit Module/Class

du kan ikke kalde denne funktion fra en anden Form/Module/Class

Håber du forstår.
Avatar billede sjh Nybegynder
05. april 2002 - 23:33 #4
Forskellen på Sub og Function er at "sub" kan ikke refererer en vadi tilbage men det kan "Function"

Håber du forstår.
Avatar billede martin_moth Mester
06. april 2002 - 14:44 #5
Blot for at supplere sjh, så kan en funktion returnere en værdi i sit navn, det kan en sub IKKE. Deri består den helt afgørende forskel.

F.eks. er Len(Tekststreng) en indbygget funktion i VB, der returnerer længden af Tekststreng i sit navn. Dvs. at man kan direkte anvende Len() som et tal, f.eks. a = Len(Tekststreng) + 10.

Hvis du vil lave din egen funktion, så skal du HUSKE at give funktionens navn en værdi, ellers kan du lige så godt bruge en Sub (en sub kaldes også generelt for en "procedure")

F.eks.

Function Kvadratsum(ByVal x As Double, ByVal y As Double) As Double
  Kvadratsum = x ^ 2 + y ^ 2
End Function

Herefter kan du direkte anvende kvadratsum, f.eks.

x = 2
y = 3
a = Kvadratsum (x, y) + 10 

Mht. om der står private foran en sub/function, så betyder det blot, at du ikke kan kalde den sub/function fra en anden form/modul/class...

Ovenstående er der ikke noget nyt i i forhold til de andre svar, blot en uddybning;o)

Mht. ordene "ByVal", så søg på dette i VB's hjælp, der giver en udemærket forklaring.

/Martin
Avatar billede gangsta12dk Nybegynder
06. april 2002 - 19:32 #6
Nu forstår jeg det, og tak for din uddybning martin moth.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB