Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1123 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  COM C++/VB6 tableau de string en argument

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

COM C++/VB6 tableau de string en argument

n°1907890
Red Viper
The Hellfire Preacher
Posté le 23-07-2009 à 11:32:19  profilanswer
 

Bonjour,
 
J'ai un programme en C++ qui fait appel à une fonction COM en VB6. Cette fonction prend en paramètre un tableau de string et retourne un autre tableau de string.
Voilà le prototype de la fonction en VB6 :

Citation :

Public Function MaFonctionVB(Tableau() As String) As String()


Elle est appelée depuis C++ de cette façon :

Citation :

SAFEARRAY *PtrTableauRetour = ObjetVB->MaFonctionVB(PtrTableauArg);
 
sachant que PtrTableauArg est du type SAFEARRAY **


Le problème est que je suis incapable de lire le contenu du tableau en VB6. Je pense qu'il s'agit d'un problème de conversion de données.
En clair, dans ma fonction VB, si je fait Tableau(0), j'ai "??????" au lieu d'avoir ma chaîne de caractères.
 
Je peux affirmer que les données sont correctement enregistrées dans le tableau en C++, car si dans la fonction VB je retourne le tableau sans le modifier (MaFonctionVB = Tableau), C++ est capable de le déchiffrer.
 
Quelqu'un connaît-il une façon de convertir ces chaînes de caractères pour qu'elles soit interprétées par VB6 ?

mood
Publicité
Posté le 23-07-2009 à 11:32:19  profilanswer
 

n°1907925
Deamon
Posté le 23-07-2009 à 12:25:50  profilanswer
 
n°1907994
Red Viper
The Hellfire Preacher
Posté le 23-07-2009 à 14:12:47  profilanswer
 


Merci pour le lien, mais cette technique permet de faire appel à une fonction C++ depuis un projet VB. Or, c'est le contraire qu'il me faut.
 
En fait, dans mon projet, j'ai eu aussi besoin de faire appel à une fonction C++ via une API dans VB6. Cette fonction ayant aussi pour arguments un tableau de string. Ca marche très bien.
Voici un exemple :

Citation :

Déclaration de l'API dans le programme VB6 :
Private Declare Sub MaFonctionCPP Lib "MaDLL_CPP.dll" Alias "_MaFonctionCPP@4" (MonTableauVB() As String)
 
Prototype de la fonction C++ :
extern "C" __declspec(dllexport) void __stdcall MaFonctionCPP(SAFEARRAY **PtrTableau);


 
Concrètement, c'est dans cette fonction "MaFonctionCPP" qu'il faut que j'appelle une fonction VB6 en y faisant passer le tableau "PtrTableau" et c'est là que je bloque.
Oui je sais, c'est tordu de faire appel à une fonction VB6 depuis une fonction en C++, elle-même appelée depuis un programme en VB6. Mais ce sont les différentes évolutions du programme qui m'oblige à m'enfoncer dans cette voie :pt1cable:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  COM C++/VB6 tableau de string en argument

 

Sujets relatifs
(aidez moi c simple) aller de matlab vers Cmatlab et C++
[C]Connexion et récupération de fichier via ftp en CExtraire un formaulaire dans un tableau sur Excel
Conversion JPEG -> BMP en C++tableau html au milieu d'une fct javascript
Fuite mémoire tableau double entrée..récupération d'un fichier txt en tableau php
[C# & WPF] Taille d'une imagePB VB6
Plus de sujets relatifs à : COM C++/VB6 tableau de string en argument


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR