Avatar billede reds2001 Nybegynder
18. oktober 2002 - 08:46 Der er 21 kommentarer og
1 løsning

Checke om et object er nothing

Hvordan checker jeg om et object er instanciated eller om det er lig med nothing??

Side gevinst 30p: Hvordan kan jeg checke et objects størrelse?

ps. objekterne vi her taler om er fra egne klasser.
Avatar billede ocp Nybegynder
18. oktober 2002 - 09:51 #1
if obj is nothing then
  msgbox "Objektet er tomt"
end if
Avatar billede martin_moth Mester
18. oktober 2002 - 10:06 #2
Størrelse: Len(MyObeject)? Bare en ide, ved ikke om det virker
Avatar billede reds2001 Nybegynder
18. oktober 2002 - 10:24 #3
martin_moth>> Den har jeg prøvet men virker ikke ...sorry
Avatar billede reds2001 Nybegynder
18. oktober 2002 - 10:26 #4
OCP>> virker ikke
Avatar billede ocp Nybegynder
18. oktober 2002 - 10:30 #5
Det her virker altså... så der må være noget andet galt med din kode.

    Dim a As Object
   
    If a Is Nothing Then
        MsgBox "Is nothing"
    End If
Avatar billede tubber Juniormester
18. oktober 2002 - 11:59 #6
Måske han mener der ikke er noget i objektet når han siger nothing....

Dim a As Object
   
    If a Is "" Then
        MsgBox "Is nothing"
    End If

Nu er jeg ikke inde i objecter, men kunne være noget i den stil....
Avatar billede ocp Nybegynder
18. oktober 2002 - 12:14 #7
Jamen "a is Nothing" returnerer netop hvorvidt objecktet er blevet "sat" til noget eller om det er tomt.
Avatar billede tubber Juniormester
18. oktober 2002 - 12:38 #8
Ok :O)

Ja så blev jeg da ihvertfald klogere :O)
Avatar billede martin_moth Mester
18. oktober 2002 - 14:39 #9
En lille sidebemærkning: Et objekt fra en hjemmelavet klasse kan først bruges når det er blevet initialiseret, ved SET - kommandoen. Indtil da indeholder det Nothing

Fx:
  Dim MitObjekt as MinKlasse
  Msgbox "MitObjekt ER erklæret, men indeholder ingenting endnu..."
  Set MitObjekt = New MinKlasse 'Først nu er MitObjekt <> Nothing

Nothing bruges ofte til at rydde op efter sig, ved at sætte MitObjekt = Nothing, når man er færdig med at bruge det... ("un-initialisere" det)
Avatar billede reds2001 Nybegynder
15. januar 2003 - 07:59 #10
Jeg lukker.
Avatar billede martin_moth Mester
15. januar 2003 - 10:05 #11
Øhh - skulle du ikke give points til ocp for et 100% korrekt svar i stedet for at nappe dem selv? Bare nysgerrig, Martin :o)
Avatar billede reds2001 Nybegynder
15. januar 2003 - 10:13 #12
Martin>> Jeg synes ikke at svaret er tilfredsstillende;
Jeg ønsker en måde hvorpå man checker om et object(hjemmelavet) er instantieret eller ej. Konklusionen må være at hvis du prøver at checke et ikke eksisterende objekt så får du følgelig en fejl og spørgsmålet har ikke affødt en løsning.
Avatar billede martin_moth Mester
15. januar 2003 - 10:15 #13
Og jeg siger, at svaret fra ocp (18/10-2002 10:30:50) løser præcist dit problem :o)
Avatar billede ocp Nybegynder
15. januar 2003 - 10:46 #14
I al beskedenhed synes jeg også at mit svar var fyldestgørende. Men det kan jo være at det var spørgsmålet jeg ikke forstod. "42" ;-)
Avatar billede martin_moth Mester
15. januar 2003 - 10:57 #15
"42" ?
Avatar billede ocp Nybegynder
15. januar 2003 - 11:00 #16
"Hitchhikers guide to the Galaxy": Man bygger en kæmpe computer der skal give svaret på hvad meningen med livet er. Den svarer "42" og derfor bliver forskerne enige om at det er spørgsmålet den har misforstået. Man bygger så en endnu større computer til at formulere spørgsmålet og lige som den er ved at være færdig med at formulere det sprænges jorden bort fordi der skal gøres plads til en intergalaktisk motorvej :-)
Avatar billede ocp Nybegynder
15. januar 2003 - 11:00 #17
Deraf også "Level 42"
Avatar billede martin_moth Mester
15. januar 2003 - 11:08 #18
Ahhhhh :o)
Avatar billede reds2001 Nybegynder
15. januar 2003 - 11:40 #19
Nu må I gi' mig ret gutter:

Private obj as MyClassObject

Hvis ikke jeg siger:

set obj = new MyClassObject

så vil jeg da få en fejl hver gang jeg spørger/refererer til objektet.

Eller er jeg helt galt på den?
Avatar billede martin_moth Mester
15. januar 2003 - 11:58 #20
Det vil jeg mene

Jeg kan køre koden her problemfrit:

  Dim myObject As myClass

  If myObject Is nothing Then
    MsgBox "Is nothing"
  End If

  set myObject = new MyClass
 
  If Not myObject Is nothing Then
    MsgBox "Is something"
  End If

Jeg får vist begge beskedder som forventet, får ingen fejl!
Avatar billede martin_moth Mester
15. januar 2003 - 11:59 #21
Drop "Jeg vil mene" :o)
Avatar billede martin_moth Mester
15. januar 2003 - 12:01 #22
Ovenstående er svar på dit oprindelige spørgsmål. Hvis du vil undgå fejl når du forsøger at referere et ikke-instantieret objekt, kan du jo skrive:

If Not myObject Is nothing Then
  MyObject.MyProperty = MyValue ' Eller hvad du nu vil med objektet
End IF
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