Avatar billede mipe1 Nybegynder
26. juli 2000 - 21:22 Der er 13 kommentarer og
1 løsning

selvdefinerede typer og funktioner

Jeg er ved at lære mig vb, men er stødt på et lille problem.
jeg har en selvdefineret type
TPerCard og der ser ikke udtil at være noget i vejen med denne.

Problemet er at jeg har en funktion med følgende hoved:

Public Function getCard(id As Integer) As TPerCard

denne funktion indeholder bl.a. linierne
If found Then
getCard = card
Else
getCard = Null
End If

card er selvfølgelig af typen TPerCard

Når jeg kører programmet (F5) så kommer der ingen fejl, men hvis jeg derimod vil lave en .exe eller køre med \"full compile\"(ctrl+F5) får jeg følgende fejlmeddelelse:
\"Only user-defined types defined inpublic object modules can be coerced to or from a variant or passed to late-bound functions\"

Hvad gør jeg galt??

/mic
Avatar billede jalle Nybegynder
26. juli 2000 - 22:41 #1
Så vidt jeg ved kan man kun køre Public Function() sammen med enten Privat Sub() eller Sub()

Prøv at tilføje en ny sub.
ex.
sub navn ()
GetCard
End sub
Avatar billede mipe1 Nybegynder
26. juli 2000 - 23:21 #2
Jeg forstår ikke helt, hvad du mener.
Funktionen jeg har lavet bliver ikke kaldt nogle steder,
endnu.
Avatar billede brian Nybegynder
26. juli 2000 - 23:39 #3
Hvis din funktion er i et modul skal du declare function og ikke public function.
Avatar billede mipe1 Nybegynder
26. juli 2000 - 23:48 #4
dvs.
declare function getCard.....
istedet for
public function getCard....
eller?

Avatar billede brian Nybegynder
26. juli 2000 - 23:51 #5
Nemlig, så virker det
Avatar billede mipe1 Nybegynder
26. juli 2000 - 23:53 #6
En anden funktion med følgende hoved

Public Function addCard(card As TPerCard) As Integer

er der ikke noget galt med, så måske det kan være noget med tildelingen af returtypen eller ?????
Avatar billede mipe1 Nybegynder
26. juli 2000 - 23:54 #7
brian>> dit forslag fører til følgendde fejl:
\"Compile error:syntax error\"
Avatar billede brian Nybegynder
27. juli 2000 - 00:01 #8
Sorry - jeg havde vist læst grulig galt og fået det helt forkert ind.

Jeg er ikke helt med hvad det er du vil have kaldt og hvorfor - kan du ikke lige komme med en kort forklaring !
Avatar billede mipe1 Nybegynder
27. juli 2000 - 00:04 #9
Jeg tror jeg har kogt problemet ned til at det ikke
er tilladt at angive funktionens returværdi som

getCard = null

når returtypen er angivet som TPerCard i funktionshovedet.

Men der må da være en måde hvorpå man kan returnere en eller anden null-værdi hvis man nu ikke har fundet hvad man søgte.

/mic
Avatar billede winkill Nybegynder
27. juli 2000 - 00:07 #10
mipe1 >> Problemet er, så vidt jeg kan se, at du laver en public funtion som returnerer en værdi af en ikke-global type.

Det du skal gøre er at flytte den kode der declerer typen TPerCard, til et modul (.mod).

Problemet grunder i at en Public Function kan kaldes fra alle programmets komponenter, og hvis disse ikke kender typen TPerCard, så kan de ikke modtage retur værdien fra funktionen - det er simpelthen ikke noget compileren vil finde sig i.

Faktisk siger fejl-meddelelsen : \"Only user-defined types defined in public object modules can be coerced to or from a variant or passed to late-bound functions\" det ret presist.
Avatar billede mipe1 Nybegynder
27. juli 2000 - 00:13 #11
winkill>> koden er i et modul det hedder godt nok .bas men er da fremkommet ved at tilføje et modul til projektet.

Avatar billede mipe1 Nybegynder
27. juli 2000 - 00:15 #12
If found Then
getCard = CardCollection.PerCards(i)
  Else
      getCard = Null
  End If
Avatar billede mipe1 Nybegynder
27. juli 2000 - 00:18 #13
ups den kommer lige her igen
Hvis jeg erstatter
If found Then
      getCard = CardCollection.PerCards(i)
  Else
      getCard = Null
  End If

med

If found Then
      getCard = CardCollection.PerCards(i)
End If

Er der ingen problemer så fejlen må ligge i

getCard = Null

hvorfor kan dette ikke lade sig gøre
Avatar billede mipe1 Nybegynder
20. august 2000 - 20:19 #14
Spm. blev reduceret og det nye spm. samt svar kan ses på
spm:22244
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