Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : passage de valeurs C# (Com) => ASP [ Windows / ActiveX / COM ] (leromantique6)

jeudi 9 août 2007 à 20:31:31 | passage de valeurs C# (Com) => ASP

leromantique6

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

Merci

dimanche 12 août 2007 à 23:45:59 | Re : passage de valeurs C# (Com) => ASP

ShareVB

salut,

déjà essaie de mettre le [return ...] sur la méthode de la classe et pas de l'interface...

ensuite, essaie de mettre un param ref au lieu de renvoyer le tableau

enfin, essaie de définir dans le constructeur de l'attribut : SafeArraySubType=typeof(int)

ShareVB

mercredi 15 août 2007 à 18:49:50 | Re : passage de valeurs C# (Com) => ASP

leromantique6

Merci pour ta reponse!
Mais malheureusement ca marche toujours pas...
Je cherche toujours ..


mercredi 15 août 2007 à 20:40:34 | Re : passage de valeurs C# (Com) => ASP

ShareVB

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;

namespace TestCOM
{
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    public interface testInterface
    {
        [return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_INT)]
        int[] getTest();
    }

    [ClassInterface(ClassInterfaceType.None)]
    public class testImpl : testInterface
    {
        [return: MarshalAs(UnmanagedType.SafeArray,SafeArraySubType=VarEnum.VT_INT)]
        int[] testInterface.getTest()
        {
            int[] tab = new int[] { 1, 2, 3, 4, 5, 6, 7, 89, 0 };
            return tab;
        }
    }
}

-> dans le projet VB6 :

Private Sub Form_Load()
Dim t As New TestCOM.testImpl
Dim a() As Long
a = t.getTest()
End Sub

ShareVB

jeudi 16 août 2007 à 10:32:32 | Re : passage de valeurs C# (Com) => ASP

leromantique6

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


jeudi 16 août 2007 à 23:11:12 | Re : passage de valeurs C# (Com) => ASP

ShareVB

Réponse acceptée !
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;

namespace TestCOM
{
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    public interface testInterface
    {
        [return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)]
        object[] getTest();
    }

    [ClassInterface(ClassInterfaceType.None)]
    public class testImpl : testInterface
    {
        [return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)]
        object[] testInterface.getTest()
        {
            object[] tab = new object[] { 1, 2, 3, 4, 5, 6, 7, 8,9, 0 };
            return tab;
        }
    }
}

ShareVB

vendredi 17 août 2007 à 10:09:21 | Re : passage de valeurs C# (Com) => ASP

leromantique6

Aaah je suis bien content, ca marche ! Je te remercie bp ShareVB pour ton aide, qui fut si précieuse.



Cette discussion est classé dans : asp, int, passage, tableau, gettest


Répondre à ce message

Sujets en rapport avec ce message

tableau en c# [ par aurelie ] J'aimerais savoir si il est possible en c# de créer un tableau, où on peut déterminer la valeur que l'on souhaite passer en index. Je voudrais faire l Passage de paramaitres ! Où est m'a faute ? [ par bip98 ] Form1 Code :public struct f_axe { public int v_axe_X; public int v_axe_Y; public int v_ID; } public f_axe[] axe_point = new f_axe[1000]; Par exe Type global pour int[], string[], bool[] ..... [ par ricklekebekoi ] Hello,Mon problème va comme suit:Dans mon programme, jutilise différentes array de différents types (des bool[], des int[], des string[] ...)Je me sui Tableau dans une structure [ par bip98 ] Je n'arrive pas à créer un tableau dans une structure..voilà mon code:public struct struct_motor   {     public string port_dev;     public int v_ind; Comment faire un tableau en C# [ par mydust ] Bonjour,J'aimerai faire un tableau d'integer en C#.net avec Visual Studio.Pour l'instant il est ainsi: int[,] nextpixel=new <FONT c tableau et redondance [ par locus ] bonjourj'essaye d'implanter dans une fonction, un code permettant de vérifier qu'une entrée texte dans un textbox ne soit pas déjà présente dans un ta fonction d'affichage ASP > c# [ par zeb13 ] Vous allez trouver ma question con mais je n'ai pas trouvé une seule réponse à comment implémenter à partir du code behind par exemple un tableau préd tableau de byte [ par nuns ] Bonjour je voudrais savoir pour quoi sa ne  marche quand je fait sa  ,  j'ai  tableau dinamique, avec des lettre dedand,  mais pas toute les case sont Transformet un obj en obj[] [ par bigflo93 ] Bonjour à tous :)Voila, je travaille avec la réflection en ce moment et je rencontre un petit souci...J'ai par exemple, une variable telle que: int[] int to byte[] [ par Sobieski ] Bonjour,Je cherche à envoyer un tableau de bytes, mais j'ai des valeurs en int. J'aimerais savoir comment faire d'un int un tableau de bytes (byte[]).


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.