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 : SAFEARRAY [ Divers / Général ] (jazz2)

mercredi 30 mai 2007 à 10:19:31 | SAFEARRAY

jazz2

Bonjour,
obligé de devoir utiliser des SAFEARRAY, je voudrais créer une fonction avec plusieurs tableaux de type SAFERRAY. Je ne peux pas les entrer dans des fonctions différentes puisque l'accès aux différents SAFERRAY se fait en parallèle, et je ne peux pas les rergrouper ensemble puisque ce sont des tableaux d' UDTs, différents. Est-ce possible de créer une fonction avec plusieurs SAFEARRAY en arguments, et comment les appeler, les différencier dans la fonction ?

Typiquement le code suivant ne fonctionne pas car "error C2371: 'elt' : redefinition; different basic types"

void __declspec (dllexport) __stdcall test(SAFEARRAY **tableau1, SAFEARRAY **tableau2)

 type1 *elt;
 SafeArrayAccessData(*tableau1,(void**)&elt);

 type2 *elt;
 SafeArrayAccessData(*tableau2,(void**)&elt);
}

avec

typedef struct type1{
long e1;
long e2
double e3;
}type1;

typedef struct type2{
 int b1;
 long b2;
}type2;


mercredi 30 mai 2007 à 12:39:06 | Re : SAFEARRAY

bouba

Salut, je n'ai pas bien pigé mais ceci ne suffit pas ?
void __declspec (dllexport) __stdcall test(SAFEARRAY **tableau1, SAFEARRAY **tableau2)

 type1 *elt_type1;
 SafeArrayAccessData(*tableau1,(void**)&elt_type1);

 type2 *elt_type2;
 SafeArrayAccessData(*tableau2,(void**)&elt_type2);
}



samedi 2 juin 2007 à 21:30:39 | Re : SAFEARRAY

jazz2

Je n'ai pas du bien comprendre en fait ce qu'était "elt". Et je me pose une question. Supposons que la fonction test ci-dessus appelle une autre fonction avec comme paramètre tableau1. Comment devrais-je le déclarer ? avec *elt_type1 ou SAFEARRAY.

Pour plus de clareté, que faut-il mettre à la place des pointillés si je veux que ça utilise mon tableau1 ?

void __declspec (dllexport) __stdcall test(SAFEARRAY **tableau1, SAFEARRAY **tableau2)

 type1 *elt_type1;
 SafeArrayAccessData(*tableau1,(void**)&elt_type1);

 type2 *elt_type2;
 SafeArrayAccessData(*tableau2,(void**)&elt_type2);

fonction_annexe( ... ) // prend en paramètre mon tableau1 mais comment le déclarer ?

}




lundi 4 juin 2007 à 01:15:06 | Re : SAFEARRAY

bouba

fonction_annexe(SAFEARRAY ** tableau) {
    .....
    .....
}

Bonne chance.

Bouba




lundi 4 juin 2007 à 22:23:54 | Re : SAFEARRAY

jazz2

Ok, merci pour cette info sur la déclaration de la fonction. Et maintenant pour l'appel de ma fonction annexe qui est dans la fonction test, je dois mettre quoi comme paramètre ?

mardi 5 juin 2007 à 16:50:21 | Re : SAFEARRAY

jazz2

Y'a un souci, avec ce principe de protection "safearrayaccesssdata" je ne peux pas accéder à mon tableau1, après avoir initialisé mon tableau2. Comment trouver une façon pour copier les données d'un safearray dans un tableau dynamique classique en C++ ?

mardi 5 août 2008 à 17:16:03 | Re : SAFEARRAY

SebLinck

Salut,

BYTE* buffer = (BYTE *)psa16->pvData;

Cordialement,
Sébastien.



Cette discussion est classé dans : fonction, void, safearray, elt, type1


Répondre à ce message

Sujets en rapport avec ce message

Pb CreateThreadddd !!!!!!!!!!! [ par neub ] Salut à tous, j'ecris un module de visionnement d'image etje souhaiterai pouvoir stopper ma fonction OnPlay au moment voulu mais j'ai un pb a la creat utiliser une fonction d'une lib C dans une classe c++ [ par snook ] Bonjour,j'aimerais savoir comment doit on proceder pourappeler une fonction d'une librairie ecrite en C dansmon programme C++?exemple: ma lib possede Pointeur vers une fonction dans une classe ... [ par MoDDiB ] Supposons que j'ai la fonctionvoid Fonction(int test,int t);appartenant a la classe Cclass.Quelle est la syntaxe pour creer un pointeur vers cette fon Pointeur sur fonction envoyé par dll [ par MoDDiB ] Voila ce que j'ai fais mais ca ne marche pas :Dll :#include BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){ retu CDialog + Sockey ? [ par mickeydisn ] je suis entrin de realiser une application un a serveur Socket en Consol . L'application console pas de PB . Le clien j'ai cree une forme avec un edit pointeur static sur fonction :) [ par luhtor ] Certain reconnaitront surement le tutoriel en question. J'ai rajouté quelques trucs au gestionnaire d'exception, mais je bloque sur le point suivant:J fonction signal en C++ sous unix (g++) [ par seblegaulois ] Bonjour,En c, j'arrive à faire :void toto(int) {...}...signal(SIGUSR2,toto);Et en C++, je n'y arrive pas, j'ai fait :class toto {...void toto(int) { . répeter une action /fonction ?? [ par hansmeier ] //******************************************************* #include "stdafx.h" int APIENTRY WinMain(HINSTANCE hInstance, Probleme Argument void* d'une fonction [ par Steph115 ] Bonjour,Pour info je travaille sous Linux en C++ j'ai une fonction definie comme ca : [Code]int ServeurSocket::emmetreSocket(void* trame, int taille){ Utilisation d'un pointeur de fonction membre [ par cyrcocq ] Bonjour,J'ai déjà discuté de ça ailleurs, on m'a conseillé d'autres méthodes, mais imaginons une classe contenant un ensemble de fonction accessibles


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

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,936 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é.