anoniem Geplaatst: 3 augustus 2004 Delen Geplaatst: 3 augustus 2004 ik heb hier zo'n handboek voor VB6 liggen en er staat in als ik van een bepaalde klasse een nieuwe instantie wil maken (en deze in ObjectX wil opslaan) dan gebruik ik de volgende code daarvoor:[code:1:288db48664]Dim ObjextX As New ClassX[/code:1:288db48664]De functie van het sleutelwoord [color=green:288db48664]New[/color:288db48664] is volgens het boek dat er een nieuwe instantie wordt gemaakt. (duh) Maar wat gebeurt er nou als ik dat niet doe? (geen New; zo dus:)[code:1:288db48664]Dim ObjectY As ClassX[/code:1:288db48664]Wat is dan het verschil tussen ObjectX en ObjectY??? -sven- Quote Link naar reactie
anoniem Geplaatst: 3 augustus 2004 Auteur Delen Geplaatst: 3 augustus 2004 [quote:4ad8ac80c0="leijer"]ik heb hier zo'n handboek voor VB6 liggen en er staat in als ik van een bepaalde klasse een nieuwe instantie wil maken (en deze in ObjectX wil opslaan) dan gebruik ik de volgende code daarvoor:[code:1:4ad8ac80c0]Dim ObjextX As New ClassX[/code:1:4ad8ac80c0]De functie van het sleutelwoord [color=green:4ad8ac80c0]New[/color:4ad8ac80c0] is volgens het boek dat er een nieuwe instantie wordt gemaakt. (duh) Maar wat gebeurt er nou als ik dat niet doe? (geen New; zo dus:)[code:1:4ad8ac80c0]Dim ObjectY As ClassX[/code:1:4ad8ac80c0]Wat is dan het verschil tussen ObjectX en ObjectY??? -sven-[/quote:4ad8ac80c0] Als je ObjectY wilt gebruiken, dan krijg je de volgende fout ofzo: "Object variabele not set" Je moet de variabele ObjectX en ObjectY zien als een variabele met een verwijzing (pointer) naar het werkelijke object. Bij ObjectY is deze nog niet aangemaakt. Bij ObjectX is geheugen gereserveerd, etc. en daarin is het object geplaatst. Quote Link naar reactie
anoniem Geplaatst: 4 augustus 2004 Auteur Delen Geplaatst: 4 augustus 2004 ok ik snap het. er stond trouwens ook nog iest over 'Set'. die gebruik je toch als je al een object gedeclareerd hebt maar er nog geen nieuwe instantie voor gemaakt hebt? zo dus: [code:1:1fb371a5ec]Dim ObjectY As ClassX 'code 'code 'later Set ObjectY = New ClassX[/code:1:1fb371a5ec]of zou ik dat ook gewoon 'ineens' met een nog nooit eerder genoemd ObjextZ kunnen doen? Quote Link naar reactie
anoniem Geplaatst: 5 augustus 2004 Auteur Delen Geplaatst: 5 augustus 2004 Het antwoord op je eerste vraag is ja, je declareert eerst een variabele en daarna gebruik je die variabele om een nieuwe instantie te maken. Het antwoord op de tweede vraag is wat moeilijker, als je in je opties aangegeven hebt dat je eerst de variabelen moet declareren dan gaat VB een foutmelding geven. Als je niet hebt aangegeven dat je variabelen moet declareren voor gebruik en je gebruikt ook geen "Option Explicit" dan zal VB je variabel automatisch aanmaken en kun je hem gebruiken. Maar zodra je ergens een typfout maakt dan maakt VB automatisch een nieuwe variabele aan, erg verwarrend, moeilijk op te sporen en vooral niet de gebruikte manier van werken. Volgens mij is de beste methode - Dim varabele as class - Set variabele = New class en aan ieder mogelijk einde van je programma doe je dan - Set variabele = Nothing zodat je zeker weet dat het gebruikte geheugen vrij komt, kleine extra moeite. Je kunt dit natuurlijk ook al doen wanneer je de instantie niet meer nodig hebt, bijvoorbeeld als je de instantie alleen in specifieke subs of functions gebruikt. Quote Link naar reactie
anoniem Geplaatst: 5 augustus 2004 Auteur Delen Geplaatst: 5 augustus 2004 dankje voor de hulp, beiden, ik snap het nu. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen