OVH Cloud OVH Cloud

Classe en VB

3 réponses
Avatar
Rodolphe
le probl=E8me est le suivant : comment d=E9truire une instance=20
de classe ?
j'ai ouvert un projet : 1 formulaire Form1 avec 1 bouton=20
Command1 et un module de class (Class1).
ce module de class est vide (uniquement "option explicit")

voici le code de mon bouton :
Private Sub Command1_Click()
Dim c As New Class1

If Not c Is Nothing Then Set c =3D Nothing
If Not c Is Nothing Then
MsgBox "toujours vivant"
End If
End Sub

L'aplication affiche "toujours vivant"

3 réponses

Avatar
Djel
Salut,
Essaye ceçi (non testé) :

Private Sub Command1_Click()
Dim c As Class1
Set c = New Class1

If Not c Is Nothing Then Set c = Nothing
If Not c Is Nothing Then
MsgBox "toujours vivant"
End If

End Sub

"Rodolphe" a écrit dans le message de news:
37a601c40134$2812e2b0$
le problème est le suivant : comment détruire une instance
de classe ?
j'ai ouvert un projet : 1 formulaire Form1 avec 1 bouton
Command1 et un module de class (Class1).
ce module de class est vide (uniquement "option explicit")

voici le code de mon bouton :
Private Sub Command1_Click()
Dim c As New Class1

If Not c Is Nothing Then Set c = Nothing
If Not c Is Nothing Then
MsgBox "toujours vivant"
End If
End Sub

L'aplication affiche "toujours vivant"
Avatar
ng
Salut,
Tu as ce résultat car tu utilises une technique peu recommandée pour créer
ta classe !

Essaye plutot ceci :

Dim c As Class1
Set c = New Class1
If Not c Is Nothing Then Set c = Nothing
If Not c Is Nothing Then
MsgBox "toujours vivant"
End If

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Rodolphe a écrit :

le problème est le suivant : comment détruire une instance
de classe ?
j'ai ouvert un projet : 1 formulaire Form1 avec 1 bouton
Command1 et un module de class (Class1).
ce module de class est vide (uniquement "option explicit")

voici le code de mon bouton :
Private Sub Command1_Click()
Dim c As New Class1

If Not c Is Nothing Then Set c = Nothing
If Not c Is Nothing Then
MsgBox "toujours vivant"
End If
End Sub

L'aplication affiche "toujours vivant"


Avatar
Zoury
Salut Rodolphe! :O)

Djel et Nicolas t'ont donnés la bonne syntaxe à utiliser.. si tu veux un peu
plus d'explication, lit cet extrait d'un de mes anciens messages :

"Il existe plusieurs façon de créer un objet en VB. La plus commune est
celle-ci:

Dim oCol As Collection
Set oCol = New Collection

La technique suivante existe aussi :

Dim oCol As New Collection

Cette deux techniques sont très différentes et je conseilles fortement
l'utilisation de la première!

Dans le premier cas, VB déclare un pointeur pour notre objet (Dim oCol
As Collection) et réserve la mémoire utile à notre objet par la suite (Set
oCol = New Collection). Tu est le seul à décidé quand l'objet sera
initialisé et détruit.

Dans le deuxième cas, VB déclare un pointeur pour ton objet, et attend à
la première utilisation de l'objet pour réservé lui-même l'espace dont
l'objet à besoin. Ça semble bien, mais ça peut jouer des tours. Tu ne
pourras jamais vérifier si l'objet est intialisé, car il l'est virtuellement
tout le temps...

Ex:

Private Sub Form_Load()

Dim oCol As Collection
Dim oCol2 As New Collection

'Objet non initialisé
Debug.Print "oCol Is Nothing: " & (oCol Is Nothing)

'Objet initialisé
Set oCol = New Collection
Debug.Print "oCol Is Nothing: " & (oCol Is Nothing)


'Objet non initialisé, mais VB l'initialise tout seul...
Debug.Print "oCol2 Is Nothing" & (oCol2 Is Nothing)

Set oCol = Nothing
Set oCol2 = Nothing

End Sub

Donc non seulement la deuxième méthode est plus claire et prévient les bugs,
elle nécessite également beaucoup moins de travaille "behind the scene" pour
effectuer le traitement. Je te jures que les 2 secondes de plus que tu
prends pour écrire la deuxième lignes en valent vraiment la peine.."

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous