Avatar billede mipe1 Nybegynder
03. august 2000 - 10:25 Der er 3 kommentarer og
1 løsning

Variable værdier og retur typer

Jeg har et spm, som gerne skulle hjælpe mig til at svare på et af mine tidligere spm.(21703)

Variable og functioners retur værdi, kan man tildele dem en null-værdi? (Funktionens angivede returtype kunne f.eks. være en selvdefineret type/record)

/mic
Avatar billede jper Nybegynder
04. august 2000 - 10:24 #1
Der findes en konstant der hedder vbNull som du kan bruge til at returnere Null

Public Function test() As Long
test = vbNull
End Function

Variabler kan ikke returnere noget det er det man bruger funktioner til.

VB understøtter brugerdefinerede datatyper så man kan sagtens returnere dette.
Avatar billede mipe1 Nybegynder
06. august 2000 - 19:08 #2
Det ser ikke ud til at det virker med vbNull fremfor Null

For lige at ridse det oprindelige problem op

Jeg har en bruger defineret datatype TPerCard

og en function

function getCard(name as string) as TPerCard
...
...
If found Then
      getCard = CardCollection.PerCards(i)
  Else
      getCard = Null
  End If

...

end function

Og det er den sidste tildeling getCard = Null, som åbenbart ikke kan lade sig gøre.

Avatar billede tomasc Nybegynder
17. august 2000 - 23:13 #3
Så længe at din returtype til funktionen getCard er TPerCard, som ikke kan være Null, er der ikke meget at gøre...

Du kan omgå problemet ved f.eks. sætte værdien af det første felt i TPerCard posten til en bestem værdi, som du tolker som Null - alternativt indsætte et felt RecordIsNull i posten , og lade din funktion gøre noget i retning af:

function getCard(name as string) as TPerCard
...
If found Then
    getCard = CardCollection.PerCards(i)
Else
    Dim NullCard As TPerCard
    NullCard.RecordIsNull = True
    getCard = NullCard
End If

Ændrer du returtypen af getCard til Variant, skulle der derimod ikke være nogen problemer med at returne Null, men det går hårdt ud over typecheck, og kan gå ud over performance.
Avatar billede mipe1 Nybegynder
20. august 2000 - 16:17 #4
Tak for svaret
Det var efterhånden også denne samme konklusion jeg
havde nået, men det er sikker bedre at lave det som et
objekt.
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