begin process at 2010 02 10 05:53:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

ActiveX / COM

 > 

passage de valeurs C# (Com) => ASP


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

passage de valeurs C# (Com) => ASP

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ée 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

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,125 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales