cs_leromantique6
Messages postés29Date d'inscriptionmardi 12 avril 2005StatutMembreDernière intervention27 août 2007
-
9 août 2007 à 20:31
cs_leromantique6
Messages postés29Date d'inscriptionmardi 12 avril 2005StatutMembreDernière intervention27 août 2007
-
17 août 2007 à 10:09
bonjour!
Dslé de poster un nouveau sur un sujet qui est sensiblement identique a celui que j'ai deja posté. Mais comme le precedent a deja etait validé alors j'ai peur que celui ci ne soit pas lu, voila pour la petite histoire ...
Concretement, j'ai un pti problemen sur le passage de parametre (tableau de int) de c# vers asp .
Mm en utilisant MarshallAs safearray, rien n'y fait.
Je m'explique :
J'ai creer un composant COM .net interop dans lequel j'ai une fonction qui renvoit un tableau de int assez conséquent.
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) +1 =>10.
Par contre 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
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 16 août 2007 à 23:11
salut,
le prb vient du fait que le moteur VBScript ne sait pas gérer les tableaux typés... par contre il sait très bien gérer les tableaux de variant et les variant simples...
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 15 août 2007 à 20:40
salut,
voici ce que j'ai fait :
-> dans un projet avec register for com interop et make com visible :
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
cs_leromantique6
Messages postés29Date d'inscriptionmardi 12 avril 2005StatutMembreDernière intervention27 août 2007 16 août 2007 à 10:32
Bonjour,
Merci pour ta réponse ShareVB.
Est ce que ton projet VB6 fonctionne ? Notament si tu fais : a(1) ?
Moi ca me fait toujours la même erreur qu'au debut. Mais au fait j'ai peut être oublié de mentionné que je travaille a partir de ASP (plus precisement VBScript) pour acceder au fonction de mon composant COM, je sais pas si ca changes tout ...
Mais en attendant, il reconnait toujours le type de tableau (enfin j'ai du mettre SafeArray,SafeArraySubType=VarEnum.VT_I4) en Long().
Mais impossible de faire tableau (1) ou tableau (1,1)...rien ne fonctionne