J'ai deux structures A et B.
A est imbriquée dans B, comme définit ci-dessous:
Public Type StructureA
Reference as String
Description as String
End Type
Public Type StructureB
Definition as StructureA
Nombre as Integer
End Type
Public A as StructureA
Public B as StructureB
[...]
Si j'écris B.A = A , je crée une copie de A dans B.A.
Ce que je voudrais faire, c'est "référencer" A dans B.A,
comme on le fait avec les objets de cette manière: Set B.A = A.
Peut-on adapter ce principe aux structures ?
D'avance merci pour toutes informations,
Pascal B.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Picalausa François
"Pascal B." a écrit dans le message de news: efo%
Bonjour à tous,
J'ai deux structures A et B. A est imbriquée dans B, comme définit ci-dessous:
<snip>
Si j'écris B.A = A , je crée une copie de A dans B.A. Ce que je voudrais faire, c'est "référencer" A dans B.A, comme on le fait avec les objets de cette manière: Set B.A = A.
Hello,
A moins de gérer explicitement un pointeur (As Long) vers ta structure, je ce n'est pas *que je sache* faisable en VB. Cela étant, y a-t-il des contraintes qui t'empêchent d'emplouer une classe décrite de la même façon?
(Dans class ClassA: Public Reference as String Public Description as String
Dans ClassB: Public Definition as ClassA Public Nombre as Integer)
-- Picalausa François
"Pascal B." <Pascbr@hotmail_ANTISPASM_.com> a écrit dans le message de news:
efo%23qdoyGHA.1936@TK2MSFTNGP04.phx.gbl...
Bonjour à tous,
J'ai deux structures A et B.
A est imbriquée dans B, comme définit ci-dessous:
<snip>
Si j'écris B.A = A , je crée une copie de A dans B.A.
Ce que je voudrais faire, c'est "référencer" A dans B.A,
comme on le fait avec les objets de cette manière: Set B.A = A.
Hello,
A moins de gérer explicitement un pointeur (As Long) vers ta structure, je
ce n'est pas *que je sache* faisable en VB.
Cela étant, y a-t-il des contraintes qui t'empêchent d'emplouer une classe
décrite de la même façon?
(Dans class ClassA:
Public Reference as String
Public Description as String
Dans ClassB:
Public Definition as ClassA
Public Nombre as Integer)
J'ai deux structures A et B. A est imbriquée dans B, comme définit ci-dessous:
<snip>
Si j'écris B.A = A , je crée une copie de A dans B.A. Ce que je voudrais faire, c'est "référencer" A dans B.A, comme on le fait avec les objets de cette manière: Set B.A = A.
Hello,
A moins de gérer explicitement un pointeur (As Long) vers ta structure, je ce n'est pas *que je sache* faisable en VB. Cela étant, y a-t-il des contraintes qui t'empêchent d'emplouer une classe décrite de la même façon?
(Dans class ClassA: Public Reference as String Public Description as String
Dans ClassB: Public Definition as ClassA Public Nombre as Integer)
-- Picalausa François
Pascal B.
"Picalausa François" wrote in message news:uV1rW$ | "Pascal B." a écrit dans le message de news: | efo% | > Bonjour à tous, | > | > J'ai deux structures A et B. | > A est imbriquée dans B, comme définit ci-dessous: | > | > <snip> | > | > Si j'écris B.A = A , je crée une copie de A dans B.A. | > Ce que je voudrais faire, c'est "référencer" A dans B.A, | > comme on le fait avec les objets de cette manière: Set B.A = A. | > | | Hello, | | A moins de gérer explicitement un pointeur (As Long) vers ta structure, je | ce n'est pas *que je sache* faisable en VB. | Cela étant, y a-t-il des contraintes qui t'empêchent d'emplouer une classe | décrite de la même façon? | | (Dans class ClassA: | Public Reference as String | Public Description as String | | Dans ClassB: | Public Definition as ClassA | Public Nombre as Integer) | | -- | Picalausa François
Bonjour,
En fait, rien ne m'empêche d'utiliser des classe plutot que des structures.. C'est dommage... Dans d'autres languages, c'est possible d'assigner par référence et non par valeur....
En VB, donc, c'est vraiment pas possible ? Meme pas avec des APIs et AdressOf ????
Pascal B.
"Picalausa François" <fpicalausa@chez.com> wrote in message news:uV1rW$uyGHA.4232@TK2MSFTNGP05.phx.gbl...
| "Pascal B." <Pascbr@hotmail_ANTISPASM_.com> a écrit dans le message de news:
| efo%23qdoyGHA.1936@TK2MSFTNGP04.phx.gbl...
| > Bonjour à tous,
| >
| > J'ai deux structures A et B.
| > A est imbriquée dans B, comme définit ci-dessous:
| >
| > <snip>
| >
| > Si j'écris B.A = A , je crée une copie de A dans B.A.
| > Ce que je voudrais faire, c'est "référencer" A dans B.A,
| > comme on le fait avec les objets de cette manière: Set B.A = A.
| >
|
| Hello,
|
| A moins de gérer explicitement un pointeur (As Long) vers ta structure, je
| ce n'est pas *que je sache* faisable en VB.
| Cela étant, y a-t-il des contraintes qui t'empêchent d'emplouer une classe
| décrite de la même façon?
|
| (Dans class ClassA:
| Public Reference as String
| Public Description as String
|
| Dans ClassB:
| Public Definition as ClassA
| Public Nombre as Integer)
|
| --
| Picalausa François
Bonjour,
En fait, rien ne m'empêche d'utiliser des classe plutot que des structures..
C'est dommage... Dans d'autres languages, c'est possible d'assigner par référence et non par valeur....
En VB, donc, c'est vraiment pas possible ? Meme pas avec des APIs et AdressOf ????
"Picalausa François" wrote in message news:uV1rW$ | "Pascal B." a écrit dans le message de news: | efo% | > Bonjour à tous, | > | > J'ai deux structures A et B. | > A est imbriquée dans B, comme définit ci-dessous: | > | > <snip> | > | > Si j'écris B.A = A , je crée une copie de A dans B.A. | > Ce que je voudrais faire, c'est "référencer" A dans B.A, | > comme on le fait avec les objets de cette manière: Set B.A = A. | > | | Hello, | | A moins de gérer explicitement un pointeur (As Long) vers ta structure, je | ce n'est pas *que je sache* faisable en VB. | Cela étant, y a-t-il des contraintes qui t'empêchent d'emplouer une classe | décrite de la même façon? | | (Dans class ClassA: | Public Reference as String | Public Description as String | | Dans ClassB: | Public Definition as ClassA | Public Nombre as Integer) | | -- | Picalausa François
Bonjour,
En fait, rien ne m'empêche d'utiliser des classe plutot que des structures.. C'est dommage... Dans d'autres languages, c'est possible d'assigner par référence et non par valeur....
En VB, donc, c'est vraiment pas possible ? Meme pas avec des APIs et AdressOf ????
Pascal B.
Picalausa François
Hello,
C'est dommage... Dans d'autres languages, c'est possible d'assigner par référence et non par valeur....
VB a été conçu pour être simple d'utilisation... c'est là toute la difficulté ;-)
En VB, donc, c'est vraiment pas possible ? Meme pas avec des APIs et AdressOf ????
AdressOf, non (puisqu'il s'agit de l'adresse d'une procédure). Tu peux par contre t'allouer dynamiquement de la mémoire (HeapCreate, HeapAlloc, HeapDestroy), d'utiliser le pointeur renvoyé comme un simple type long et d'effectuer les modifications en mémoire à coup de CopyMemory... Ca marchera, mais je ne pense pas qu'on puisse garantir la rapidité d'exécution d'une telle solution (entre autre à cause du copymemory).
Tu peux aussi stoquer tes structures dans un tableau dynamique et utiliser comme pointeur l'index du tableau correspondant à l'entrée. La seule "difficulté" est alors de gérer ton tableau comme un arbre (avec quelques routines bien écrites on s'en sort vite) et si nécessaire des fonctions de compactage du tableau (le gros problème étant que ce tableau est un bloc mémoire contigu).
On peut aussi envisager le cas d'un "tableau" d'un seul élément, remappé par son safearray sur un pointeur donné (avec HeapCreate, ...) ce qui permet d'avoir un temps de copymemory moins lent, en fonction du nombre de données par structure... Ou encore effectuer toute la gestion de données au travers d'une dll C dont l'interface dépendra de ce que tu veux faire.
Bref, ce n'est pas impossible... mais ce n'est pas forcément simple, ni efficace!
-- Picalausa François
Hello,
C'est dommage... Dans d'autres languages, c'est possible d'assigner par
référence et non par valeur....
VB a été conçu pour être simple d'utilisation... c'est là toute la
difficulté ;-)
En VB, donc, c'est vraiment pas possible ? Meme pas avec des APIs et
AdressOf ????
AdressOf, non (puisqu'il s'agit de l'adresse d'une procédure).
Tu peux par contre t'allouer dynamiquement de la mémoire (HeapCreate,
HeapAlloc, HeapDestroy), d'utiliser le pointeur renvoyé comme un simple type
long et d'effectuer les modifications en mémoire à coup de CopyMemory... Ca
marchera, mais je ne pense pas qu'on puisse garantir la rapidité
d'exécution d'une telle solution (entre autre à cause du copymemory).
Tu peux aussi stoquer tes structures dans un tableau dynamique et utiliser
comme pointeur l'index du tableau correspondant à l'entrée. La seule
"difficulté" est alors de gérer ton tableau comme un arbre (avec quelques
routines bien écrites on s'en sort vite) et si nécessaire des fonctions de
compactage du tableau (le gros problème étant que ce tableau est un bloc
mémoire contigu).
On peut aussi envisager le cas d'un "tableau" d'un seul élément, remappé par
son safearray sur un pointeur donné (avec HeapCreate, ...) ce qui permet
d'avoir un temps de copymemory moins lent, en fonction du nombre de données
par structure... Ou encore effectuer toute la gestion de données au travers
d'une dll C dont l'interface dépendra de ce que tu veux faire.
Bref, ce n'est pas impossible... mais ce n'est pas forcément simple, ni
efficace!
C'est dommage... Dans d'autres languages, c'est possible d'assigner par référence et non par valeur....
VB a été conçu pour être simple d'utilisation... c'est là toute la difficulté ;-)
En VB, donc, c'est vraiment pas possible ? Meme pas avec des APIs et AdressOf ????
AdressOf, non (puisqu'il s'agit de l'adresse d'une procédure). Tu peux par contre t'allouer dynamiquement de la mémoire (HeapCreate, HeapAlloc, HeapDestroy), d'utiliser le pointeur renvoyé comme un simple type long et d'effectuer les modifications en mémoire à coup de CopyMemory... Ca marchera, mais je ne pense pas qu'on puisse garantir la rapidité d'exécution d'une telle solution (entre autre à cause du copymemory).
Tu peux aussi stoquer tes structures dans un tableau dynamique et utiliser comme pointeur l'index du tableau correspondant à l'entrée. La seule "difficulté" est alors de gérer ton tableau comme un arbre (avec quelques routines bien écrites on s'en sort vite) et si nécessaire des fonctions de compactage du tableau (le gros problème étant que ce tableau est un bloc mémoire contigu).
On peut aussi envisager le cas d'un "tableau" d'un seul élément, remappé par son safearray sur un pointeur donné (avec HeapCreate, ...) ce qui permet d'avoir un temps de copymemory moins lent, en fonction du nombre de données par structure... Ou encore effectuer toute la gestion de données au travers d'une dll C dont l'interface dépendra de ce que tu veux faire.
Bref, ce n'est pas impossible... mais ce n'est pas forcément simple, ni efficace!