2009-11-09 5 views
0

Je passe de CF4.5 à CF8. Les appels à COM dll qui fonctionnaient dans la version 4.5 lancent maintenant une erreur "Les types d'objets complexes ne peuvent pas être convertis en valeurs simples ..". L'objet COM a quelques tableaux définis comme paramètres de sortie. Ces variables sont définies comme des tableaux dans Coldfusion. Une idée de ce qui a changé dans la mucoviscidose pour causer ce problème et que puis-je faire pour le résoudre?ColdFusion COM erreur

EDIT:

Voici le code CF:

Arg2 = ArrayNew(1); 
answer = ComObject.Test(1,"Arg2");  <------This line throws the error 

Le code VB ActiveX DLL:

Public Function AddNumbers(number1 As Integer, ByRef Arg2() As String) As String 
    AddNumbers = "hello" 
End Function 
+0

S'il vous plaît montrer le code qui jette l'erreur. – Tomalak

Répondre

0

je soupçonne que quelque part le tableau est traité comme un numéro ou une chaîne. Sans exemples de code, il sera difficile de fournir plus d'assistance. Vous souhaiterez peut-être vérifier le traitement d'un index lors de l'accès à des positions dans un tableau.

MISE À JOUR

Essayez de changer

answer = ComObject.Test(1,"Arg2"); 

Pour

answer = ComObject.Test(1,Arg2); 

OU

answer = ComObject.Test(1,arrayToList(Arg2)); 
+0

Merci pour vos suggestions. J'ai déjà essayé le premier. L'erreur renvoyée est: java.lang.ClassCastException: coldfusion.runtime.Array ne peut pas être converti en java.lang.String. Votre deuxième suggestion renvoie l'erreur: coldfusion.runtime.java.MethodSelectionException: La méthode AddNumbers n'a pas été trouvée. probablement parce que la signature de la méthode n'a pas été reconnue. J'ai également jeté la variable comobject juste après sa création et ceci est le résultat (certaines lignes sont omises): AddNumbers ([out, in] I2, [out, in] BSTR, [out, retval] BSTR) notez que le le second param n'est pas reconnu comme un tableau. – yuben