Incompatibilité de type

ypelissier

XLDnaute Nouveau
Bonjour,
J'ai le petit bout de code suivant :
Code:
Dim PIServer As PISDK.Server
Dim pdt As PIData
Dim pvs As PIValues
Set PIServer = Servers(MonServeur)
Set pdt = PIServer.PIPoints(TagName).DATA
Set pvs = pdt.InterpolatedValues(dt, dt2, 1) ' dt1 et dt2 sont des dates

Bien sur, j'ai la référence qui va bien.

Mais voilà, je suis sur Windows 7 et mes clients sont sur Windows XP et la DLL n'est pas au même endroit, sans compter que s'ils ne l'ont pas du tout, ça plante le code VB.

Et à chaque fois que j'avais cette configuration, pas de problème, on passe par le CreateObject et hop, plus besoin du référencement à la DLL et Windows (XP ou 7) se charge de faire un lien dynamique tardif, si la DLL est enregistrée pour Windows.

Donc, en étudiant un peu l'aide du PISDK avec cette idée derrière la tête, j'ai trouvé que je pouvais utiliser ce code suivant :
Code:
Set MyPISDK = CreateObject("PISDK.PISDK")

Donc tout confiant, je traduis mes quelques lignes de code...
Code:
Dim MyPISDK As Object
Dim PIServer As Object
Dim pdt As Object
Dim pvs As Object
Set MyPISDK = CreateObject("PISDK.PISDK")
Set PIServer = MyPISDK.Servers(MonServeur)
Set pdt = PIServer.PIPoints(TagName).DATA
Set pvs = pdt.InterpolatedValues(dt, dt2, 1) ' dt1 et dt2 sont des dates

Oui mais voilà, toutes les lignes fonctionnent bien, sauf la dernière bien sur... J'ai un beau message d'erreur qui me dit : "Erreur d'exécution '13': Incompatibilité de type"... D'ailleurs même en laissant la référence mais ça ça me parait normal.

Ben mince alors, j'ai aussi changé les Object en Variant pour toutes les variables, rien n'y fait, et seulement pour la variable utilisée à la dernière ligne, rien non plus.

Alors là je me retourne vers vous pour tenter de trouver une solution car Object et Variant n'ont, par définition, pas de type, ou plutôt accepte tous les types, c'est justement leur intérêt.

Bref, HELP ME PLEASE :)

Annexe : quelle est la différence entre Object et Variant ???
 
G

Guest

Guest
Re : Incompatibilité de type

Re,

Il me semble que la première chose que je ferais serait d'afficher les variables locales pour voir de quel type elles sont après initialisation. (bien-sûr sur une machine où cela pose problème)

L'embêtant avec createObject c'est qu'il y a des cas où les types retournés ne sont pas forcément ceux qu'on attendaient.

Un objet (ou une méthode) dans une version de dll, n'est pas forcément identique à l'objet de même nom d'une autre version.

Object ne peut référencer qu'un objet défini par une class (Range, TextBox, Collection etc)
Un variant peut tout référencer : objet, variable, tableau, collection etc...

A+
 
Dernière modification par un modérateur:

Discussions similaires

Statistiques des forums

Discussions
312 214
Messages
2 086 313
Membres
103 175
dernier inscrit
abcc