Passage de tableau en parametre ASP => composant COM [Résolu]

Signaler
Messages postés
29
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
27 août 2007
-
Messages postés
29
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
27 août 2007
-
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

Messages postés
29
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
27 août 2007

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 ;)
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
20
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
Messages postés
29
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
27 août 2007

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
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
20
salut,

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

ShareVB
Messages postés
29
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
27 août 2007

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 ...