IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] Copie d'objet


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut [VB6] Copie d'objet
    Bonjour,

    J'ai un module de classe appelé article

    je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set article1 = new article
    article2=article1
    Cela a pour effet que toute modif de article1 est valable pour article2 et inversement.
    Comment puis-je faire pour que ce soit deux objets independants ?

    Merci de votre aide.

    P.R

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 36
    Points : 41
    Points
    41
    Par défaut
    Hello...

    Pour en faire deux objets distincts, il faut absolument éviter ça :

    article2=article1

    Si ton but est de créer deux objets... euh... semblables mais distincts, tu dois affecter de la même façon toutes les propriétés de l'objet "modèle" et de l'objet "copie" :

    article2.propriétéA = article1.propriétéA
    article2.propriétéB = article1.propriétéB
    article2.propriétéC = article1.propriétéC
    etc...

    Rico

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Pour ques les deux objets soit indépendants, il ne faut qu'ils aient la même adresse mémoire. Or dans ton cas tu faits pointé tes deux objets vers la même adresse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set Article1=new article
    Set Article2=new article
    A toi après d'implémenter des méthodes de classes pour pouvoir comparer les objets entre eux et vérifier s'ils sont compatibles si j'ai bien compris ton problème.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Merci, vous avez bien compris mon problème, du coup, problème suivant, je crée une méthode copie dans mon module de classe, et il ne la reconnait pas dans mon code, quelle est la bonne syntaxe ?
    Propriété ou mthode non gérée par cet objet ???

    P.R

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 36
    Points : 41
    Points
    41
    Par défaut
    Difficile de te répondre sans voir ton code...

    Rico

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Visiblement, il faut lui passer en premier paramètre une variable défini comme un objet, mais je ne vois pas du tout à quoi elle sert ????

    P.R

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Comme le dit Nico donne nous ton code. Je ne pense pas que ce soit trop difficile. Je ne sais plus si on le faire en VB, pas fait depuis longtemps (java, c# powaaa ) mais tu n'aurais pas mis la méthode copie en private?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Comme je viens de le dire, ca fonctionne avec un premier paramètre as object du style suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub copie(moi As Object, ByVal autreArticle As article)
    J'ai lu qu'il est obligatoire et qu'il est sensé représenté l'objet auquel s'applique la méthode.
    Mais pour moi, quand je fais monTruc.copie, l'objet auquel s'applique la méthode, c'est forcement monTruc, donc je ne vois pas l'interet de ce parametre.

    P.R

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Là j'avoue que je calle un peu étant donné que j'ai très peu utilisé les pseudo classes de VB. Je suis passé à l'objet direct.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Comme je te comprends !!!

    P.R

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    j'en ai marre vite fait de VB malgré qu'il me rende encore service de temps en temps pour du traitement de fichier par exemple mais pour des projets ce n'est pas la peine

  12. #12
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Il s'agit certes de pseudo-classes, mais le fonctionnement de ces classes est largement plus simple que celles de java ou C++...

    Voici un exemple :

    Classe Article :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private strNom As String
    Private intPrix As Integer
     
    Property Get Nom() As String
        Nom = strNom
    End Property
     
    Property Let Nom(value As String)
        strNom = value
    End Property
     
    Property Get Prix() As Integer
        Prix = intPrix
    End Property
     
    Property Let Prix(value As Integer)
        intPrix = value
    End Property
     
     
    Public Sub Copy(ByRef Other As Article)
        Other.Nom = strNom
        Other.Prix = intPrix
    End Sub
    Module1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Public Sub Main()
        Dim Article1 As New Article
        Dim Article2 As New Article
     
        Article1.Nom = "Chapeau de paille"
        Article1.Prix = 15
     
        Article1.Copy Article2
        DebugDisplay Article1, Article2
     
        Article2.Nom = "Parasol"
        DebugDisplay Article1, Article2
     
    End Sub
     
    Private Sub DebugDisplay(A1 As Article, A2 As Article)
        Static Count As Integer
     
        Count = Count + 1
     
        Debug.Print "Passage no " & Count
        Debug.Print "Article 1 - Nom  : " & A1.Nom
        Debug.Print "Article 1 - Prix : " & A1.Prix
        Debug.Print "Article 2 - Nom  : " & A2.Nom
        Debug.Print "Article 2 - Prix : " & A2.Prix
    End Sub

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 41
    Points : 37
    Points
    37
    Par défaut
    Merci, je clos tout ça.

    P.R

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Méthode de classe et copie d'objets
    Par Duloup dans le forum Général Python
    Réponses: 5
    Dernier message: 11/04/2005, 16h27
  2. [VB6]Tableau d'objet withevents
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 13/02/2004, 19h44
  3. [VB6] Taille d'objet en mémoire
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/01/2004, 16h23
  4. [VB6]Sérialiser un objet
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 11/10/2003, 10h05
  5. [VB6] Copie d'objets
    Par austin49 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 19/05/2003, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo