/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
VB6: designspørgsmål (public,private,funct~
Fra : Jesper Stocholm


Dato : 20-03-02 14:34

Jeg er ved at programmere en dll, der skal have to hovedfunktioner. Disse
er erklærede som

Public Function someFunc()
End Function

Hver af disse funktioner kalder i deres arbejde en række underfunktioner,
dvs det ser nogenlunde således ud:

Public Function getRecordset(i1,i2,i3)
   var11 = function11(i1,i2,i3) (returnerer en long)
   var12 = function12(var1) (returnerer en streng)
   var13 = function13(var2) (returnerer et recordset)
   getRecordset = var13
End Function

Public Function getArticle(i1,i4)
   var21 = function21(i1,i4)
   var22 = function22(var21)
   var23 = function)23(var22)
End Function

Men jeg er i tvivl om, hvordan jeg skal erklære mine underfunktioner. Skal
de erklæres som

Private Sub
Public Sub
Private Function
Public Function

?

Jeg er i tvivl om, hvad forskellen egentlig er imellem de fx Sub og
Function. Kan I hjælpe mig med at komme lidt nærmere en forståelse af det ?

:)

--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

 
 
Mikkel Bundgaard (20-03-2002)
Kommentar
Fra : Mikkel Bundgaard


Dato : 20-03-02 16:49

"Jesper Stocholm" <spam200203@stocholm.dk> wrote in message
news:Xns91D7941DF5472spamstocholmdk@130.226.1.34...
<SNIP>
>
> Men jeg er i tvivl om, hvordan jeg skal erklære mine
> underfunktioner. Skal de erklæres som
>
> Private Sub
> Public Sub
> Private Function
> Public Function
>
> ?
>
> Jeg er i tvivl om, hvad forskellen egentlig er imellem de fx Sub
> og Function. Kan I hjælpe mig med at komme lidt nærmere en
> forståelse af det ?
Forskellen mellem Sub og Function er, at Sub ikke kan returnere
noget, det kan en Function. Så hvis en delrutine ikke returnerer
noget, kan du erklære den som Sub, med dette viser du brugere
af rutinen, at den ikke returnerer noget.

Mht. til Private/Public, så erklær alle hjælperutiner (og andet
brugerne ikke skal se) som Private og erklær kun de rutiner, der
skal bruges udadtil som Public.

Håber du kan bruge det til noget
--
Mikkel Bundgaard
IT University of Copenhagen
http://officehelp.gone.dk
Codito, Ergo Sum



Tomas Christiansen (20-03-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 20-03-02 22:49

Jesper Stocholm skrev:
> Jeg er ved at programmere en dll, der skal have to hovedfunktioner.
Disse
> er erklærede som
>
> Public Function someFunc()
> End Function

Du bør altid, altid, altid angive typen på funktionsværdien, dvs.
tilføj "As" og typen, f.eks:

Public Function someFunc() As Long
End Function

Selv hvis du ønsker (hvad du formentlig slet ikke gør) at bruge typen
variant, bør du angive dette:

Public Function someFunc() As Variant
End Function

Hvis du ikke angiver noget er benyttes typen variant, men så har du
ikke vist at du rent faktisk har taget stilling til typen, og det kan
(af en anden programmør/dig selv om 2 år) opfattes som om du har glemt
at skrive noget.

> Public Function getRecordset(i1,i2,i3)
> var11 = function11(i1,i2,i3) (returnerer en long)
> var12 = function12(var1) (returnerer en streng)
> var13 = function13(var2) (returnerer et recordset)
> getRecordset = var13
> End Function

Her bør du erklære var11, var12 og var13 af typer svarende overens med
typen for funktionsværdien på den tilsvarende funktion11, -12 og -13.

> Public Function getArticle(i1,i4)
> var21 = function21(i1,i4)
> var22 = function22(var21)
> var23 = function)23(var22)
> End Function

Dette bør være en procedure (dvs. erklæret med sub i stedet for
function), idet der ikke returneres en værdi (mon dog ikke at det er
en fejl - jævnfør navnet getArticle...).

> Men jeg er i tvivl om, hvordan jeg skal erklære mine
underfunktioner. Skal
> de erklæres som
>
> Private Sub
> Public Sub
> Private Function
> Public Function

Hvis en underrutine kun skal bruges fra samme source-fil (dvs. samme
*.frm, *.bas, *.cls), kan de erklæres med "private". Derved er de ikke
synlige fra andre source-filer/andre programmer. Brug af "public" gør
dem synlige.

> Jeg er i tvivl om, hvad forskellen egentlig er imellem de fx Sub og
> Function. Kan I hjælpe mig med at komme lidt nærmere en forståelse
af det ?

En funktion vil altid returnere MINDST én værdi, og en procedure (det
kalder Microsoft altså sub's for) vil returnere nul eller flere
værdier.

Hvordan nu det?

Jo, brugen af "ByRef" eller "ByVal" før hver formel parameter angiver
om der skal arbejdes på de originale data eller på den kopi. Du har
dermed muligheden for at returnere flere værdier i samme kald (af en
procedure eller en funktion), hvis de angives som parametre.

Eksempel: Public Function getArticle(ByVal Id as String, ByRef Title
As String, ByRef Body As String) As Boolean

Her hentes en "article" frem på basis af dens Id. Den er opdelt i
Title og Body, og funktionsværdien fortæller om artiklen blev fundet
eller ej (true/false).

-------
Tomas



Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408885
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste