A la compilation je tombe toujours sur le message d'erreur
suivant :
"Seul les types définis par l'utilisateur et qui sont
définis dans les modules d'objets publics peuvent être
convertis depuis ou vers un variant, ou passés à des
fonctions à liaison tardive"
A la compilation je tombe toujours sur le message d'erreur
suivant :
"Seul les types définis par l'utilisateur et qui sont
définis dans les modules d'objets publics peuvent être
convertis depuis ou vers un variant, ou passés à des
fonctions à liaison tardive"
A la compilation je tombe toujours sur le message d'erreur
suivant :
"Seul les types définis par l'utilisateur et qui sont
définis dans les modules d'objets publics peuvent être
convertis depuis ou vers un variant, ou passés à des
fonctions à liaison tardive"
ParamArray signifie que la fonction peut recevoir un nombre varié de
paramètres, ce qui ne semble pas être le cas ici.
Dans ton cas :
soit
type MonType
<ici les champs de ton type>
End type
Function (X as MonType) as integer ; par exemple
<ici le corps de la focntion>
End Function
Je pense que je pourrai mieux t'aider si tu me donnais le code de ta
fonction.
"HWO" a écrit dans le message de
207f01c49f4f$05039490$
Bonsoir,
Dans une application sous vb6, je dois transferer à une
fonction un tableau de "data" constitué de type de données
personnalisé (strucutre type.... end type).
Ces types de données personnalisés sont déclarés comme
public dans un module de l'application. Le paramétre de la
fonction qui doit recevoir ces données est déclaré avec le
mot clé "paramArray".
A la compilation je tombe toujours sur le message d'erreur
suivant :
"Seul les types définis par l'utilisateur et qui sont
définis dans les modules d'objets publics peuvent être
convertis depuis ou vers un variant, ou passés à des
fonctions à liaison tardive"
Ca veut dire quoi tout ça, et surtout que fait-il faire
pour s'en sortir?
Par avance merci de votre aide précieuse.
ParamArray signifie que la fonction peut recevoir un nombre varié de
paramètres, ce qui ne semble pas être le cas ici.
Dans ton cas :
soit
type MonType
<ici les champs de ton type>
End type
Function (X as MonType) as integer ; par exemple
<ici le corps de la focntion>
End Function
Je pense que je pourrai mieux t'aider si tu me donnais le code de ta
fonction.
"HWO" <anonymous@discussions.microsoft.com> a écrit dans le message de
207f01c49f4f$05039490$3a01280a@phx.gbl...
Bonsoir,
Dans une application sous vb6, je dois transferer à une
fonction un tableau de "data" constitué de type de données
personnalisé (strucutre type.... end type).
Ces types de données personnalisés sont déclarés comme
public dans un module de l'application. Le paramétre de la
fonction qui doit recevoir ces données est déclaré avec le
mot clé "paramArray".
A la compilation je tombe toujours sur le message d'erreur
suivant :
"Seul les types définis par l'utilisateur et qui sont
définis dans les modules d'objets publics peuvent être
convertis depuis ou vers un variant, ou passés à des
fonctions à liaison tardive"
Ca veut dire quoi tout ça, et surtout que fait-il faire
pour s'en sortir?
Par avance merci de votre aide précieuse.
ParamArray signifie que la fonction peut recevoir un nombre varié de
paramètres, ce qui ne semble pas être le cas ici.
Dans ton cas :
soit
type MonType
<ici les champs de ton type>
End type
Function (X as MonType) as integer ; par exemple
<ici le corps de la focntion>
End Function
Je pense que je pourrai mieux t'aider si tu me donnais le code de ta
fonction.
"HWO" a écrit dans le message de
207f01c49f4f$05039490$
Bonsoir,
Dans une application sous vb6, je dois transferer à une
fonction un tableau de "data" constitué de type de données
personnalisé (strucutre type.... end type).
Ces types de données personnalisés sont déclarés comme
public dans un module de l'application. Le paramétre de la
fonction qui doit recevoir ces données est déclaré avec le
mot clé "paramArray".
A la compilation je tombe toujours sur le message d'erreur
suivant :
"Seul les types définis par l'utilisateur et qui sont
définis dans les modules d'objets publics peuvent être
convertis depuis ou vers un variant, ou passés à des
fonctions à liaison tardive"
Ca veut dire quoi tout ça, et surtout que fait-il faire
pour s'en sortir?
Par avance merci de votre aide précieuse.
Bonjour,
J'ai moi aussi buté assez longtemps sur ce problème.
> A la compilation je tombe toujours sur le message d'erreur
> suivant :
> "Seul les types définis par l'utilisateur et qui sont
> définis dans les modules d'objets publics peuvent être
> convertis depuis ou vers un variant, ou passés à des
> fonctions à liaison tardive"
il s'agit en fait d'un problème d'interprétation du message d'erreur:
"modules d'objets publics" signifie module de classe et non pas module
publique.
Paramarray signifie que l'on va déclarer un tableau de variant, or les
type défini par l'utilisateur (Type ... END TYPE) dans un module
publique ne sont pas des variants.
si tu as une structure du type:
Type Mystruct
Field1 as string
Fieldn as double
End Type
Il te faut plutôt définir une classe
'CMyStruc
option explicit
private mfield1 as string
private mfieldn as double
Public property Get Field1() as string
field1=mfield1
end property
Public property let Field1(VnewValue as string)
mfield1=vnewvalue
end property
idem pour les autres membres du type end
Ensuite dans le code tu instancies un objet de type Cmystruc dans le
code comme suit:
dim ObjStruc as Cmystruc
set objstruc = new Cmystruc
objstruc.field1="TOTO"
objstruc.fieldn= 123
call Myproc(objstruc) ' si Myproc est définie Public sub Myproc(Obj as
Cmystruc)
et ne pas oublier de détruire l'objet à la fin:
set objstruc=nothing
A noter que si tu abordes le pb à l'aide des classes il convient plutôt
que de passer un tableau de variant utiliser les interfaces multiples:
Tu définis une classe générique qui comprend les caractéristiques
communes aux différents objets que tu veux traiter, ensuite du défini
des classes dérivée qui correspondent à chacune de tes structures les
propriétés communes en moins.
Ensuite tu peux au choix passer à ta fonction:
un tableau d'objet de la classe générique
une collection d'objet générique.
A noter que dans les deux cas la partie du message d'erreur "ou passés
à des fonctions à liaison tardive" ne s'applique plus, car du fait de
l'utilisation d'un objet comme objstruc VB peut effectuer une liaison
précoce.
Christophe
Bonjour,
J'ai moi aussi buté assez longtemps sur ce problème.
> A la compilation je tombe toujours sur le message d'erreur
> suivant :
> "Seul les types définis par l'utilisateur et qui sont
> définis dans les modules d'objets publics peuvent être
> convertis depuis ou vers un variant, ou passés à des
> fonctions à liaison tardive"
il s'agit en fait d'un problème d'interprétation du message d'erreur:
"modules d'objets publics" signifie module de classe et non pas module
publique.
Paramarray signifie que l'on va déclarer un tableau de variant, or les
type défini par l'utilisateur (Type ... END TYPE) dans un module
publique ne sont pas des variants.
si tu as une structure du type:
Type Mystruct
Field1 as string
Fieldn as double
End Type
Il te faut plutôt définir une classe
'CMyStruc
option explicit
private mfield1 as string
private mfieldn as double
Public property Get Field1() as string
field1=mfield1
end property
Public property let Field1(VnewValue as string)
mfield1=vnewvalue
end property
idem pour les autres membres du type end
Ensuite dans le code tu instancies un objet de type Cmystruc dans le
code comme suit:
dim ObjStruc as Cmystruc
set objstruc = new Cmystruc
objstruc.field1="TOTO"
objstruc.fieldn= 123
call Myproc(objstruc) ' si Myproc est définie Public sub Myproc(Obj as
Cmystruc)
et ne pas oublier de détruire l'objet à la fin:
set objstruc=nothing
A noter que si tu abordes le pb à l'aide des classes il convient plutôt
que de passer un tableau de variant utiliser les interfaces multiples:
Tu définis une classe générique qui comprend les caractéristiques
communes aux différents objets que tu veux traiter, ensuite du défini
des classes dérivée qui correspondent à chacune de tes structures les
propriétés communes en moins.
Ensuite tu peux au choix passer à ta fonction:
un tableau d'objet de la classe générique
une collection d'objet générique.
A noter que dans les deux cas la partie du message d'erreur "ou passés
à des fonctions à liaison tardive" ne s'applique plus, car du fait de
l'utilisation d'un objet comme objstruc VB peut effectuer une liaison
précoce.
Christophe
Bonjour,
J'ai moi aussi buté assez longtemps sur ce problème.
> A la compilation je tombe toujours sur le message d'erreur
> suivant :
> "Seul les types définis par l'utilisateur et qui sont
> définis dans les modules d'objets publics peuvent être
> convertis depuis ou vers un variant, ou passés à des
> fonctions à liaison tardive"
il s'agit en fait d'un problème d'interprétation du message d'erreur:
"modules d'objets publics" signifie module de classe et non pas module
publique.
Paramarray signifie que l'on va déclarer un tableau de variant, or les
type défini par l'utilisateur (Type ... END TYPE) dans un module
publique ne sont pas des variants.
si tu as une structure du type:
Type Mystruct
Field1 as string
Fieldn as double
End Type
Il te faut plutôt définir une classe
'CMyStruc
option explicit
private mfield1 as string
private mfieldn as double
Public property Get Field1() as string
field1=mfield1
end property
Public property let Field1(VnewValue as string)
mfield1=vnewvalue
end property
idem pour les autres membres du type end
Ensuite dans le code tu instancies un objet de type Cmystruc dans le
code comme suit:
dim ObjStruc as Cmystruc
set objstruc = new Cmystruc
objstruc.field1="TOTO"
objstruc.fieldn= 123
call Myproc(objstruc) ' si Myproc est définie Public sub Myproc(Obj as
Cmystruc)
et ne pas oublier de détruire l'objet à la fin:
set objstruc=nothing
A noter que si tu abordes le pb à l'aide des classes il convient plutôt
que de passer un tableau de variant utiliser les interfaces multiples:
Tu définis une classe générique qui comprend les caractéristiques
communes aux différents objets que tu veux traiter, ensuite du défini
des classes dérivée qui correspondent à chacune de tes structures les
propriétés communes en moins.
Ensuite tu peux au choix passer à ta fonction:
un tableau d'objet de la classe générique
une collection d'objet générique.
A noter que dans les deux cas la partie du message d'erreur "ou passés
à des fonctions à liaison tardive" ne s'applique plus, car du fait de
l'utilisation d'un objet comme objstruc VB peut effectuer une liaison
précoce.
Christophe
En fait il s'agit d'un activeX intégré à une application (.exe) qui doit
tracer des choses. Les choses en question sont des données struturées
personnalisées.
public type segment
debut as systemTime
fin as syteTime
...
...
end type
public type ligne
nom as string
epaisseur as integer
mode as integer
etat() as segment 'Déclaré juste
avant.
end type
Ces types de data sont connues de l'activeX et de l'exe container.
L'application (.exe) lit un fichier texte et met en forme les informations
dans un tableau avant de le passer à l'activeX pour qu'il puisse tout
tracer.
Dans l'activeX il y a une méthode appelée traceData décalrée comme suit :
Public sub traceData(data as variant)
'Code de la fonction
End sub
Dans l'exe j'ai déclarer un tableau de la manière suivante.
Public ligneATrace() as ligne
'Lecture fichier d'acquisition et alimentation de la structure
ligneATrace()
...
...
'Appel de la méthode de l'activeX
Call activeX.traceData(ligneATrace()) '==> C'est cette ligne qui
me génére le message d'erreur ennoncé.
voilà, j'espére que ces renseignemetns sont assez précis .
"Patrice Henrio" a écrit dans le message de
news:ParamArray signifie que la fonction peut recevoir un nombre varié de
paramètres, ce qui ne semble pas être le cas ici.
Dans ton cas :
soit
type MonType
<ici les champs de ton type>
End type
Function (X as MonType) as integer ; par exemple
<ici le corps de la focntion>
End Function
Je pense que je pourrai mieux t'aider si tu me donnais le code de ta
fonction.
"HWO" a écrit dans le message de
news:207f01c49f4f$05039490$
Bonsoir,
Dans une application sous vb6, je dois transferer à une
fonction un tableau de "data" constitué de type de données
personnalisé (strucutre type.... end type).
Ces types de données personnalisés sont déclarés comme
public dans un module de l'application. Le paramétre de la
fonction qui doit recevoir ces données est déclaré avec le
mot clé "paramArray".
A la compilation je tombe toujours sur le message d'erreur
suivant :
"Seul les types définis par l'utilisateur et qui sont
définis dans les modules d'objets publics peuvent être
convertis depuis ou vers un variant, ou passés à des
fonctions à liaison tardive"
Ca veut dire quoi tout ça, et surtout que fait-il faire
pour s'en sortir?
Par avance merci de votre aide précieuse.
En fait il s'agit d'un activeX intégré à une application (.exe) qui doit
tracer des choses. Les choses en question sont des données struturées
personnalisées.
public type segment
debut as systemTime
fin as syteTime
...
...
end type
public type ligne
nom as string
epaisseur as integer
mode as integer
etat() as segment 'Déclaré juste
avant.
end type
Ces types de data sont connues de l'activeX et de l'exe container.
L'application (.exe) lit un fichier texte et met en forme les informations
dans un tableau avant de le passer à l'activeX pour qu'il puisse tout
tracer.
Dans l'activeX il y a une méthode appelée traceData décalrée comme suit :
Public sub traceData(data as variant)
'Code de la fonction
End sub
Dans l'exe j'ai déclarer un tableau de la manière suivante.
Public ligneATrace() as ligne
'Lecture fichier d'acquisition et alimentation de la structure
ligneATrace()
...
...
'Appel de la méthode de l'activeX
Call activeX.traceData(ligneATrace()) '==> C'est cette ligne qui
me génére le message d'erreur ennoncé.
voilà, j'espére que ces renseignemetns sont assez précis .
"Patrice Henrio" <patrice.henrio@laposte.net> a écrit dans le message de
news:ednIRQ1nEHA.1152@TK2MSFTNGP11.phx.gbl...
ParamArray signifie que la fonction peut recevoir un nombre varié de
paramètres, ce qui ne semble pas être le cas ici.
Dans ton cas :
soit
type MonType
<ici les champs de ton type>
End type
Function (X as MonType) as integer ; par exemple
<ici le corps de la focntion>
End Function
Je pense que je pourrai mieux t'aider si tu me donnais le code de ta
fonction.
"HWO" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:
207f01c49f4f$05039490$3a01280a@phx.gbl...
Bonsoir,
Dans une application sous vb6, je dois transferer à une
fonction un tableau de "data" constitué de type de données
personnalisé (strucutre type.... end type).
Ces types de données personnalisés sont déclarés comme
public dans un module de l'application. Le paramétre de la
fonction qui doit recevoir ces données est déclaré avec le
mot clé "paramArray".
A la compilation je tombe toujours sur le message d'erreur
suivant :
"Seul les types définis par l'utilisateur et qui sont
définis dans les modules d'objets publics peuvent être
convertis depuis ou vers un variant, ou passés à des
fonctions à liaison tardive"
Ca veut dire quoi tout ça, et surtout que fait-il faire
pour s'en sortir?
Par avance merci de votre aide précieuse.
En fait il s'agit d'un activeX intégré à une application (.exe) qui doit
tracer des choses. Les choses en question sont des données struturées
personnalisées.
public type segment
debut as systemTime
fin as syteTime
...
...
end type
public type ligne
nom as string
epaisseur as integer
mode as integer
etat() as segment 'Déclaré juste
avant.
end type
Ces types de data sont connues de l'activeX et de l'exe container.
L'application (.exe) lit un fichier texte et met en forme les informations
dans un tableau avant de le passer à l'activeX pour qu'il puisse tout
tracer.
Dans l'activeX il y a une méthode appelée traceData décalrée comme suit :
Public sub traceData(data as variant)
'Code de la fonction
End sub
Dans l'exe j'ai déclarer un tableau de la manière suivante.
Public ligneATrace() as ligne
'Lecture fichier d'acquisition et alimentation de la structure
ligneATrace()
...
...
'Appel de la méthode de l'activeX
Call activeX.traceData(ligneATrace()) '==> C'est cette ligne qui
me génére le message d'erreur ennoncé.
voilà, j'espére que ces renseignemetns sont assez précis .
"Patrice Henrio" a écrit dans le message de
news:ParamArray signifie que la fonction peut recevoir un nombre varié de
paramètres, ce qui ne semble pas être le cas ici.
Dans ton cas :
soit
type MonType
<ici les champs de ton type>
End type
Function (X as MonType) as integer ; par exemple
<ici le corps de la focntion>
End Function
Je pense que je pourrai mieux t'aider si tu me donnais le code de ta
fonction.
"HWO" a écrit dans le message de
news:207f01c49f4f$05039490$
Bonsoir,
Dans une application sous vb6, je dois transferer à une
fonction un tableau de "data" constitué de type de données
personnalisé (strucutre type.... end type).
Ces types de données personnalisés sont déclarés comme
public dans un module de l'application. Le paramétre de la
fonction qui doit recevoir ces données est déclaré avec le
mot clé "paramArray".
A la compilation je tombe toujours sur le message d'erreur
suivant :
"Seul les types définis par l'utilisateur et qui sont
définis dans les modules d'objets publics peuvent être
convertis depuis ou vers un variant, ou passés à des
fonctions à liaison tardive"
Ca veut dire quoi tout ça, et surtout que fait-il faire
pour s'en sortir?
Par avance merci de votre aide précieuse.