Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul type
d'object.
D'autres idées ?
Merci
Pascal B.
"ng" wrote in message
news:Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
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/
Pascal B. wrote:Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul type
d'object.
D'autres idées ?
Merci
Pascal B.
"ng" <ng@ngsoft-fr.com> wrote in message
news:OuN2h9rtEHA.2516@TK2MSFTNGP11.phx.gbl...
Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
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/
Pascal B. wrote:
Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul type
d'object.
D'autres idées ?
Merci
Pascal B.
"ng" wrote in message
news:Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
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/
Pascal B. wrote:Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Pascal B. brought next idea :
> Salut,
>
> Hélas, non, ce n'est pas bon [je suis déçu :-( ]
> .
> En écrivant "Let oFont1 = oFont2",
> on transfert UNIQUEMENT la propriété par défaut (ici Name),
> alors qu'il aurait fallut le transfert de TOUTES les propriétés
> (de n'importe quel objet)
>
> Il reste toujours cette possibilité:
>
> Obj2.PropertyA = Obj1.PropertyA
> Obj2.PropertyB = Obj1.PropertyB
> '....
>
> mais elle est fastitieuse et elle n'est valable que pour un seul type
> d'object.
>
> D'autres idées ?
>
> Merci
>
> Pascal B.
>
>
> "ng" wrote in message
> news:
>> Salut,
>>
>> En effet Set copie le pointeur, pour avoir une copie il faudra utiliser
>>>
>>
>> Private Sub Form_Load()
>> Dim oFont1 As StdFont
>> Dim oFont2 As StdFont
>>
>> Set oFont1 = New StdFont
>> Set oFont2 = New StdFont
>>
>> oFont1.Bold = True
>>
>> Let oFont2 = oFont1
>>
>> oFont2.Bold = False
>>
>> Debug.Print oFont1.Bold, oFont2.Bold
>>
>> End Sub
>>
>> On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
>>
>> --
>> 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/
>>
>> Pascal B. wrote:
>>> Bonjour à tous,
>>>
>>> (je sais pas si je vais être clair... bon je me lance)
>>>
>>> J'aimerais pouvoir créer une copie d'un objet.
>>> Ce qui vient en premier à l'esprit, c'est d'écrire:
>>>
>>> Dim Obj as Class1
>>> Dim CopyOfObj as Class1
>>> '.....
>>> Set CopyOfObj = Obj
>>>
>>> En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
>>> objet.
>>> Donc si je modifie CopyOfObj, Obj est modifié aussi.
>>> Or, ce n'est pas ce que je veux !!
>>>
>>> Est-il possible d'écrire une fonction qui crée un *nouvel* objet
>>> ayant le meme contenu que le premier objet ? (donc ayant les
>>> propriétés)
>>>
>>> Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
>>>
>>> Merci
>>>
>>> Pascal B.
Bonjour,
il n'existe pas en vb6 de système/outils pour la recopie d'objet. La
seul méthode que je puisse vous indiquez est d'implimenter une méthode
propre à l'objet qui renvoie un objet du même type initialiser avec les
même valeurs.
@+ Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Pascal B. brought next idea :
> Salut,
>
> Hélas, non, ce n'est pas bon [je suis déçu :-( ]
> .
> En écrivant "Let oFont1 = oFont2",
> on transfert UNIQUEMENT la propriété par défaut (ici Name),
> alors qu'il aurait fallut le transfert de TOUTES les propriétés
> (de n'importe quel objet)
>
> Il reste toujours cette possibilité:
>
> Obj2.PropertyA = Obj1.PropertyA
> Obj2.PropertyB = Obj1.PropertyB
> '....
>
> mais elle est fastitieuse et elle n'est valable que pour un seul type
> d'object.
>
> D'autres idées ?
>
> Merci
>
> Pascal B.
>
>
> "ng" <ng@ngsoft-fr.com> wrote in message
> news:OuN2h9rtEHA.2516@TK2MSFTNGP11.phx.gbl...
>> Salut,
>>
>> En effet Set copie le pointeur, pour avoir une copie il faudra utiliser
>>>
>>
>> Private Sub Form_Load()
>> Dim oFont1 As StdFont
>> Dim oFont2 As StdFont
>>
>> Set oFont1 = New StdFont
>> Set oFont2 = New StdFont
>>
>> oFont1.Bold = True
>>
>> Let oFont2 = oFont1
>>
>> oFont2.Bold = False
>>
>> Debug.Print oFont1.Bold, oFont2.Bold
>>
>> End Sub
>>
>> On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
>>
>> --
>> 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/
>>
>> Pascal B. wrote:
>>> Bonjour à tous,
>>>
>>> (je sais pas si je vais être clair... bon je me lance)
>>>
>>> J'aimerais pouvoir créer une copie d'un objet.
>>> Ce qui vient en premier à l'esprit, c'est d'écrire:
>>>
>>> Dim Obj as Class1
>>> Dim CopyOfObj as Class1
>>> '.....
>>> Set CopyOfObj = Obj
>>>
>>> En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
>>> objet.
>>> Donc si je modifie CopyOfObj, Obj est modifié aussi.
>>> Or, ce n'est pas ce que je veux !!
>>>
>>> Est-il possible d'écrire une fonction qui crée un *nouvel* objet
>>> ayant le meme contenu que le premier objet ? (donc ayant les
>>> propriétés)
>>>
>>> Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
>>>
>>> Merci
>>>
>>> Pascal B.
Bonjour,
il n'existe pas en vb6 de système/outils pour la recopie d'objet. La
seul méthode que je puisse vous indiquez est d'implimenter une méthode
propre à l'objet qui renvoie un objet du même type initialiser avec les
même valeurs.
@+ Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Pascal B. brought next idea :
> Salut,
>
> Hélas, non, ce n'est pas bon [je suis déçu :-( ]
> .
> En écrivant "Let oFont1 = oFont2",
> on transfert UNIQUEMENT la propriété par défaut (ici Name),
> alors qu'il aurait fallut le transfert de TOUTES les propriétés
> (de n'importe quel objet)
>
> Il reste toujours cette possibilité:
>
> Obj2.PropertyA = Obj1.PropertyA
> Obj2.PropertyB = Obj1.PropertyB
> '....
>
> mais elle est fastitieuse et elle n'est valable que pour un seul type
> d'object.
>
> D'autres idées ?
>
> Merci
>
> Pascal B.
>
>
> "ng" wrote in message
> news:
>> Salut,
>>
>> En effet Set copie le pointeur, pour avoir une copie il faudra utiliser
>>>
>>
>> Private Sub Form_Load()
>> Dim oFont1 As StdFont
>> Dim oFont2 As StdFont
>>
>> Set oFont1 = New StdFont
>> Set oFont2 = New StdFont
>>
>> oFont1.Bold = True
>>
>> Let oFont2 = oFont1
>>
>> oFont2.Bold = False
>>
>> Debug.Print oFont1.Bold, oFont2.Bold
>>
>> End Sub
>>
>> On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
>>
>> --
>> 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/
>>
>> Pascal B. wrote:
>>> Bonjour à tous,
>>>
>>> (je sais pas si je vais être clair... bon je me lance)
>>>
>>> J'aimerais pouvoir créer une copie d'un objet.
>>> Ce qui vient en premier à l'esprit, c'est d'écrire:
>>>
>>> Dim Obj as Class1
>>> Dim CopyOfObj as Class1
>>> '.....
>>> Set CopyOfObj = Obj
>>>
>>> En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
>>> objet.
>>> Donc si je modifie CopyOfObj, Obj est modifié aussi.
>>> Or, ce n'est pas ce que je veux !!
>>>
>>> Est-il possible d'écrire une fonction qui crée un *nouvel* objet
>>> ayant le meme contenu que le premier objet ? (donc ayant les
>>> propriétés)
>>>
>>> Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
>>>
>>> Merci
>>>
>>> Pascal B.
Bonjour,
il n'existe pas en vb6 de système/outils pour la recopie d'objet. La
seul méthode que je puisse vous indiquez est d'implimenter une méthode
propre à l'objet qui renvoie un objet du même type initialiser avec les
même valeurs.
@+ Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul type
d'object.
D'autres idées ?
Merci
Pascal B.
"ng" wrote in message
news:Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra
utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr
API Guide : http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net
Google Groups : http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/
MZ-Tools : http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/
Pascal B. wrote:Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul type
d'object.
D'autres idées ?
Merci
Pascal B.
"ng" <ng@ngsoft-fr.com> wrote in message
news:OuN2h9rtEHA.2516@TK2MSFTNGP11.phx.gbl...
Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra
utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
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/
Pascal B. wrote:
Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul type
d'object.
D'autres idées ?
Merci
Pascal B.
"ng" wrote in message
news:Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra
utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr
API Guide : http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net
Google Groups : http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/
MZ-Tools : http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/
Pascal B. wrote:Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Bonjour,
Novice en "Object" sous VB6, n'est-il pas possible de surcharger
l'opérateur > ou l'opérateur LET ?
décidement, C++ est bien mieux foutu !
Autre idée : definir la classe en VC++ (avec l'opérateur Ad'hoc)
et l'utiliser en VB : des exemples ?
Et comment teste-t-on que l'objet est Non initialisé ?
Exemple:
SUB toto( , optional oBJ as MSHFlexGrid)
if <comment ? oBJ = Nothing ?
Y@+
"Quasimodo" a écrit dans le message de
news:Pascal B. brought next idea :Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul
type d'object.
D'autres idées ?
Merci
Pascal B.
"ng" wrote in message
news:Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra
utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr
API Guide : http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net
Google Groups : http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/
MZ-Tools : http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/
Pascal B. wrote:Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Bonjour,
il n'existe pas en vb6 de système/outils pour la recopie d'objet. La
seul méthode que je puisse vous indiquez est d'implimenter une
méthode propre à l'objet qui renvoie un objet du même type
initialiser avec les même valeurs.
@+ Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Bonjour,
Novice en "Object" sous VB6, n'est-il pas possible de surcharger
l'opérateur > ou l'opérateur LET ?
décidement, C++ est bien mieux foutu !
Autre idée : definir la classe en VC++ (avec l'opérateur Ad'hoc)
et l'utiliser en VB : des exemples ?
Et comment teste-t-on que l'objet est Non initialisé ?
Exemple:
SUB toto( , optional oBJ as MSHFlexGrid)
if <comment ? oBJ = Nothing ?
Y@+
"Quasimodo" <wild_riki.@yahoo.fr> a écrit dans le message de
news:mn.aacf7d4a1489e1f7.18602@yahoo.fr...
Pascal B. brought next idea :
Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul
type d'object.
D'autres idées ?
Merci
Pascal B.
"ng" <ng@ngsoft-fr.com> wrote in message
news:OuN2h9rtEHA.2516@TK2MSFTNGP11.phx.gbl...
Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra
utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
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/
Pascal B. wrote:
Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Bonjour,
il n'existe pas en vb6 de système/outils pour la recopie d'objet. La
seul méthode que je puisse vous indiquez est d'implimenter une
méthode propre à l'objet qui renvoie un objet du même type
initialiser avec les même valeurs.
@+ Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Bonjour,
Novice en "Object" sous VB6, n'est-il pas possible de surcharger
l'opérateur > ou l'opérateur LET ?
décidement, C++ est bien mieux foutu !
Autre idée : definir la classe en VC++ (avec l'opérateur Ad'hoc)
et l'utiliser en VB : des exemples ?
Et comment teste-t-on que l'objet est Non initialisé ?
Exemple:
SUB toto( , optional oBJ as MSHFlexGrid)
if <comment ? oBJ = Nothing ?
Y@+
"Quasimodo" a écrit dans le message de
news:Pascal B. brought next idea :Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul
type d'object.
D'autres idées ?
Merci
Pascal B.
"ng" wrote in message
news:Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra
utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr
API Guide : http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net
Google Groups : http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/
MZ-Tools : http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/
Pascal B. wrote:Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le même
objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Bonjour,
il n'existe pas en vb6 de système/outils pour la recopie d'objet. La
seul méthode que je puisse vous indiquez est d'implimenter une
méthode propre à l'objet qui renvoie un objet du même type
initialiser avec les même valeurs.
@+ Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
MAIS il y a un MAIS:
Il faut que l'objet soit PUBLIC et PERSISTABLE.
MAIS il y a un MAIS:
Il faut que l'objet soit PUBLIC et PERSISTABLE.
MAIS il y a un MAIS:
Il faut que l'objet soit PUBLIC et PERSISTABLE.
j'ai essayé plusieurs méthodes mais ca ne fonctionne pas.
Voici mon code des fois que ça en inspire certains :
Salut,
J'ai étudié avec grand intérêt ta solution...
MAIS elle ne fonctionne PAS corrrectement !
En effet, oFont2.Italic est à False alors qu'il devrait être à True!
Pourquoi?
En fait, ça coince au niveau du LenB(oObjectSrc) qui retourne 10
ce qui correspond à la longueur de la string contenu dans la propriété
par défaut Name (2 x Len("Arial") = 10)
Donc LenB ne retourne pas la longueur d'un objet !!!
D'où ma question:
Existe-il une fonction qui retourne la longueur d'un Objet ??
Pascal B.
"ng" wrote in message
news:%23chCU$Salut,
D'après ce que j'ai lu, le problème viendrait de COM, on ne pourrait
donc pas faire ca (sauf si on copie les property une à une) avec ces
objets, j'ai essayé plusieurs méthodes mais ca ne fonctionne pas.
Voici mon code des fois que ça en inspire certains :
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
(pDst As Long, pSrc As Long, ByVal ByteLen As Long)
Public Sub CloneObject(oObjectSrc As Object, oObjectDest As Object)
Call CopyMemory(ObjPtr(oObjectDest), ObjPtr(oObjectSrc),
LenB(oObjectSrc))
End Sub
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
oFont1.Bold = True
oFont1.Italic = True
Set oFont2 = New StdFont
Call CloneObject(oFont1, oFont2)
oFont2.Bold = False
Debug.Print "Nom", "oFont1", "oFont2"
Debug.Print "Pointeurs", ObjPtr(oFont1), ObjPtr(oFont2)
Debug.Print "Bold", oFont1.Bold, oFont2.Bold
Debug.Print "Italic", oFont1.Italic, oFont2.Italic
Set oFont1 = Nothing
Set oFont2 = Nothing
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr
API Guide : http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net
Google Groups : http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/
MZ-Tools : http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/
YannX wrote:Bonjour,
Novice en "Object" sous VB6, n'est-il pas possible de surcharger
l'opérateur >>> ou l'opérateur LET ?
décidement, C++ est bien mieux foutu !
Autre idée : definir la classe en VC++ (avec l'opérateur Ad'hoc)
et l'utiliser en VB : des exemples ?
Et comment teste-t-on que l'objet est Non initialisé ?
Exemple:
SUB toto( , optional oBJ as MSHFlexGrid)
if <comment ? oBJ = Nothing ?
Y@+
"Quasimodo" a écrit dans le message de
news:Pascal B. brought next idea :Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul
type d'object.
D'autres idées ?
Merci
Pascal B.
"ng" wrote in message
news:Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra
utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr
API Guide : http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net
Google Groups : http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/
MZ-Tools : http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/
Pascal B. wrote:Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le
même objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Bonjour,
il n'existe pas en vb6 de système/outils pour la recopie d'objet.
La seul méthode que je puisse vous indiquez est d'implimenter une
méthode propre à l'objet qui renvoie un objet du même type
initialiser avec les même valeurs.
@+ Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
j'ai essayé plusieurs méthodes mais ca ne fonctionne pas.
Voici mon code des fois que ça en inspire certains :
Salut,
J'ai étudié avec grand intérêt ta solution...
MAIS elle ne fonctionne PAS corrrectement !
En effet, oFont2.Italic est à False alors qu'il devrait être à True!
Pourquoi?
En fait, ça coince au niveau du LenB(oObjectSrc) qui retourne 10
ce qui correspond à la longueur de la string contenu dans la propriété
par défaut Name (2 x Len("Arial") = 10)
Donc LenB ne retourne pas la longueur d'un objet !!!
D'où ma question:
Existe-il une fonction qui retourne la longueur d'un Objet ??
Pascal B.
"ng" <ng@ngsoft-fr.com> wrote in message
news:%23chCU$3tEHA.3580@TK2MSFTNGP10.phx.gbl...
Salut,
D'après ce que j'ai lu, le problème viendrait de COM, on ne pourrait
donc pas faire ca (sauf si on copie les property une à une) avec ces
objets, j'ai essayé plusieurs méthodes mais ca ne fonctionne pas.
Voici mon code des fois que ça en inspire certains :
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
(pDst As Long, pSrc As Long, ByVal ByteLen As Long)
Public Sub CloneObject(oObjectSrc As Object, oObjectDest As Object)
Call CopyMemory(ObjPtr(oObjectDest), ObjPtr(oObjectSrc),
LenB(oObjectSrc))
End Sub
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
oFont1.Bold = True
oFont1.Italic = True
Set oFont2 = New StdFont
Call CloneObject(oFont1, oFont2)
oFont2.Bold = False
Debug.Print "Nom", "oFont1", "oFont2"
Debug.Print "Pointeurs", ObjPtr(oFont1), ObjPtr(oFont2)
Debug.Print "Bold", oFont1.Bold, oFont2.Bold
Debug.Print "Italic", oFont1.Italic, oFont2.Italic
Set oFont1 = Nothing
Set oFont2 = Nothing
End Sub
--
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/
YannX wrote:
Bonjour,
Novice en "Object" sous VB6, n'est-il pas possible de surcharger
l'opérateur >>> ou l'opérateur LET ?
décidement, C++ est bien mieux foutu !
Autre idée : definir la classe en VC++ (avec l'opérateur Ad'hoc)
et l'utiliser en VB : des exemples ?
Et comment teste-t-on que l'objet est Non initialisé ?
Exemple:
SUB toto( , optional oBJ as MSHFlexGrid)
if <comment ? oBJ = Nothing ?
Y@+
"Quasimodo" <wild_riki.@yahoo.fr> a écrit dans le message de
news:mn.aacf7d4a1489e1f7.18602@yahoo.fr...
Pascal B. brought next idea :
Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul
type d'object.
D'autres idées ?
Merci
Pascal B.
"ng" <ng@ngsoft-fr.com> wrote in message
news:OuN2h9rtEHA.2516@TK2MSFTNGP11.phx.gbl...
Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra
utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
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/
Pascal B. wrote:
Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le
même objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Bonjour,
il n'existe pas en vb6 de système/outils pour la recopie d'objet.
La seul méthode que je puisse vous indiquez est d'implimenter une
méthode propre à l'objet qui renvoie un objet du même type
initialiser avec les même valeurs.
@+ Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
j'ai essayé plusieurs méthodes mais ca ne fonctionne pas.
Voici mon code des fois que ça en inspire certains :
Salut,
J'ai étudié avec grand intérêt ta solution...
MAIS elle ne fonctionne PAS corrrectement !
En effet, oFont2.Italic est à False alors qu'il devrait être à True!
Pourquoi?
En fait, ça coince au niveau du LenB(oObjectSrc) qui retourne 10
ce qui correspond à la longueur de la string contenu dans la propriété
par défaut Name (2 x Len("Arial") = 10)
Donc LenB ne retourne pas la longueur d'un objet !!!
D'où ma question:
Existe-il une fonction qui retourne la longueur d'un Objet ??
Pascal B.
"ng" wrote in message
news:%23chCU$Salut,
D'après ce que j'ai lu, le problème viendrait de COM, on ne pourrait
donc pas faire ca (sauf si on copie les property une à une) avec ces
objets, j'ai essayé plusieurs méthodes mais ca ne fonctionne pas.
Voici mon code des fois que ça en inspire certains :
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
(pDst As Long, pSrc As Long, ByVal ByteLen As Long)
Public Sub CloneObject(oObjectSrc As Object, oObjectDest As Object)
Call CopyMemory(ObjPtr(oObjectDest), ObjPtr(oObjectSrc),
LenB(oObjectSrc))
End Sub
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
oFont1.Bold = True
oFont1.Italic = True
Set oFont2 = New StdFont
Call CloneObject(oFont1, oFont2)
oFont2.Bold = False
Debug.Print "Nom", "oFont1", "oFont2"
Debug.Print "Pointeurs", ObjPtr(oFont1), ObjPtr(oFont2)
Debug.Print "Bold", oFont1.Bold, oFont2.Bold
Debug.Print "Italic", oFont1.Italic, oFont2.Italic
Set oFont1 = Nothing
Set oFont2 = Nothing
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr
API Guide : http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net
Google Groups : http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/
MZ-Tools : http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/
YannX wrote:Bonjour,
Novice en "Object" sous VB6, n'est-il pas possible de surcharger
l'opérateur >>> ou l'opérateur LET ?
décidement, C++ est bien mieux foutu !
Autre idée : definir la classe en VC++ (avec l'opérateur Ad'hoc)
et l'utiliser en VB : des exemples ?
Et comment teste-t-on que l'objet est Non initialisé ?
Exemple:
SUB toto( , optional oBJ as MSHFlexGrid)
if <comment ? oBJ = Nothing ?
Y@+
"Quasimodo" a écrit dans le message de
news:Pascal B. brought next idea :Salut,
Hélas, non, ce n'est pas bon [je suis déçu :-( ]
.
En écrivant "Let oFont1 = oFont2",
on transfert UNIQUEMENT la propriété par défaut (ici Name),
alors qu'il aurait fallut le transfert de TOUTES les propriétés
(de n'importe quel objet)
Il reste toujours cette possibilité:
Obj2.PropertyA = Obj1.PropertyA
Obj2.PropertyB = Obj1.PropertyB
'....
mais elle est fastitieuse et elle n'est valable que pour un seul
type d'object.
D'autres idées ?
Merci
Pascal B.
"ng" wrote in message
news:Salut,
En effet Set copie le pointeur, pour avoir une copie il faudra
utiliser Let
Private Sub Form_Load()
Dim oFont1 As StdFont
Dim oFont2 As StdFont
Set oFont1 = New StdFont
Set oFont2 = New StdFont
oFont1.Bold = True
Let oFont2 = oFont1
oFont2.Bold = False
Debug.Print oFont1.Bold, oFont2.Bold
End Sub
On obtient donc Vrai Faux alors qu'avec Set on aurait Faux, Faux.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr
API Guide : http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.allapi.net
Google Groups : http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://groups.google.fr/
MZ-Tools : http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.mztools.com/
Pascal B. wrote:Bonjour à tous,
(je sais pas si je vais être clair... bon je me lance)
J'aimerais pouvoir créer une copie d'un objet.
Ce qui vient en premier à l'esprit, c'est d'écrire:
Dim Obj as Class1
Dim CopyOfObj as Class1
'.....
Set CopyOfObj = Obj
En fait, ce que j'ai, c'est 2 variables qui pointent vers le
même objet.
Donc si je modifie CopyOfObj, Obj est modifié aussi.
Or, ce n'est pas ce que je veux !!
Est-il possible d'écrire une fonction qui crée un *nouvel* objet
ayant le meme contenu que le premier objet ? (donc ayant les
propriétés)
Exemple: Set CopyOfObj = CreateObjectCopy(Obj)
Merci
Pascal B.
Bonjour,
il n'existe pas en vb6 de système/outils pour la recopie d'objet.
La seul méthode que je puisse vous indiquez est d'implimenter une
méthode propre à l'objet qui renvoie un objet du même type
initialiser avec les même valeurs.
@+ Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com