Passage de tableau en parametre ASP => composant COM

Résolu
cs_leromantique6 Messages postés 29 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 27 août 2007 - 13 juil. 2007 à 14:23
cs_leromantique6 Messages postés 29 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 27 août 2007 - 11 août 2007 à 01:15
Bonjour,

J'ai un petit problème avec ma page asp.
Dans ma page asp, je cree un objet COM, puis j'appelle une fonction de cet objet qui prends en parametre deux tableau.
 Quand je lance la page il me dit que j'ai une erreur sur les parametres de la fonction. J'ai bp cherché sur internet mais j'ai pas trouvé grand chose.
Voici mon code : 

 Dim objetD
 names=array("french", "english","german","italian")
 Dim languages(4,3)

 languages(0,0) = 2
 languages(0,1) = 3
 languages(0,2) = 4
... 
 
 set objetD = Server.CreateObject("DetectLanguageProcess.Base.Identifier")
 call objetD.initialize names,language

Mon composant COM est ecrit en C#, voici la signature de la methode en question:
public void initialize(string[]names, int[][] l)

Merci d'avance pour votre aide.

5 réponses

cs_leromantique6 Messages postés 29 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 27 août 2007
20 juil. 2007 à 22:34
Merci pour ta réponse, mais finalement je passe une string en parametre que je parse pour en creer un tableau.
C'est un peu de la bricole mais ca marche bien ;)
3
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
19 juil. 2007 à 23:56
salut,

tu peux essayer de mettre des marshalas safearray dans ton code c# et en asp, il me semble que si tu déclares un tab(4,3), il a 5* 4 cases...

ShareVB
0
cs_leromantique6 Messages postés 29 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 27 août 2007
9 août 2007 à 14:56
Re-bonjour!
Finalement, je me sens contraint d'utiliser ta methode ShareVB (Marshallas safearray). Parce qu'a partir d'un programme composant Com, j'ai une fonction qui renvoit un tableau de int assez conséquent. Et j'ai pas envie de spliter ce tableau ca prendrai encore plus de temps.

Pour ce faire j'ai fait un petit test :

interface testInterface{

   [return: MarshalAs(UnnmanagedType.saffeArray)]
   int[] getTest();
}
public class testImpl : testInterface{
   public int[] getTest(){
      int[] tab = new int[]{1,2,3,4,5,6,7,89,0};
     return tab;
   }
}

Donc Si j'appelle cet objet a partir d'une page asp, comme ceci :

... creation de l'objet (server.createobject ...)
tableau = t.getTest()

Lorsque je fais typename(tableau), ca marche, ca reponds : Long().
Quand je fais ubound(tableau) => 9.
Parcontre quand je fais : tableau(1), ca marche plus !!! Erreur : Type incompatible ....

Voila, et la j'ai beau chercher des info sur le net ca marche pas trop ..
Votre aide serez la bienvenue

Merci
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
10 août 2007 à 21:26
salut,

essaie de mettre le [return: ...] dans la classe et pas dans l'interface...

ShareVB
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_leromantique6 Messages postés 29 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 27 août 2007
11 août 2007 à 01:15
Ca marche pas ...
J'ai mm modifier le code MSIL comme specifié  dans la MSDN ca marche toujours pas.
Apparament c pas tres interoperable tout ca ...
0
Rejoignez-nous