begin process at 2012 02 13 15:53:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

Débutants

 > 

Recupération d'une chaine de caractères en VB6 à partir d'une DLL en C


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

Recupération d'une chaine de caractères en VB6 à partir d'une DLL en C

lundi 18 mai 2009 à 14:38:28 | Recupération d'une chaine de caractères en VB6 à partir d'une DLL en C

gaga38

Bonjour à tous,

Me revoilà toujours avec des petits soucis de communication entre une DLL faites en C par mes petites mains et mon code VB6.
Tout d'abord, je tiens à préciser que la DLL est bien reconnu par VB6 car le code en C s'execute bien.
Le problème est le suivant, dans VB je fais appel à une fonction que l'on nommera "MaFonction", cette fonction qui est contenu dans une DLL (et qui est en C) va chercher des données en base et me les renvoient avec le type char *, voici les déclarations de mes fonctions dans les 2 langages.

Dans le C :
__declspec( dllexport ) char* __stdcall MaFonction(HWND param1, char *param2, char *param3, char *param4, char *param5);

Dans VB6 :
Declare Function MaFonction Lib "MaLibDLL.dll" (ByVal param1As Long, ByVal param2 As String, ByVal param3 As String, ByVal param4 As String, ByVal param5 As String) As String

Donc, quand je fais appel à la fonction MaFonction dans mon code VB6, le retour est toujours une String vide (""), or en mettant des traces juste avant le "return" dans ma fonction C, je sais que ce que je retourne contient bien quelque chose et pas "".

D'où ma question, comment puis je récupérer mon char * dans VB6 ?

Merci de votre aide

Gaga38


Petit à petit l'oiseau fait son nid
lundi 18 mai 2009 à 15:02:09 | Re : Recupération d'une chaine de caractères en VB6 à partir d'une DLL en C

Renfield

Administrateur CodeS-SourceS
VB joue avec des BSTR, pas avec des char*
lundi 18 mai 2009 à 15:17:42 | Re : Recupération d'une chaine de caractères en VB6 à partir d'une DLL en C

Renfield

Administrateur CodeS-SourceS
Réponse acceptée !
faire, en gros:


DLLTEST_API BSTR fnDllTest(char* In)
{
char sRet[9];
sRet[0] = 'H';
sRet[1] = 'e';
sRet[2] = 'l';
sRet[3] = 'l';
sRet[4] = 'o';
sRet[5] = ' ';
sRet[6] = 'V';
sRet[7] = 'B';
sRet[8] = '\0';

return SysAllocStringByteLen(sRet, strlen(sRet));
}
lundi 18 mai 2009 à 16:33:12 | Re : Recupération d'une chaine de caractères en VB6 à partir d'une DLL en C

gaga38

OK Merci beaucoup je vais essayer

Petit à petit l'oiseau fait son nid
lundi 18 mai 2009 à 16:39:10 | Re : Recupération d'une chaine de caractères en VB6 à partir d'une DLL en C

Renfield

Administrateur CodeS-SourceS
possible de jouer avec un char*...

mais faut l'allouer depuis VB, et le transmettre dans les parametres.
C saura le modifier sur place.

en return, faut un BSTR.


la plupart des APIs windows font ainsi... si elles doivent retourner du texte, on leur transmet un buffer, sa taille (comme ca, pas besoin d'initialiser)

la fonction C remplit, et renvoie la longueur finallement copiée.


Cette discussion est classée dans : vb6, string, dll, char, byval


Répondre à ce message

Sujets en rapport avec ce message

point d'entrée dll introuvable [ par gaga38 ] Salut à tous,Voilà je suis débutante en VB6 et je me heurte à un problème dont je n'arrive pas à trouver la solution sur le net Voilà, je suis en trai Rapatrier un tableau de string de ma DLL [ par andrebernard ] Bonjour à tousJ'ai une DLL standard (donc non activeX) qui est ecrite dans un autre language.Dans cette DLL, j'ai des fonctions qui me retournent des Parametre integer transmis à une DLL incorrect [ par andrebernard ] Bonjour à tousVoila, je transmet une valeur - 1, à une DLL non active X.Pour cela, j'ai declaré ces variables en integer.Hors, je viens de m'appercevo Conversion d'un String en VB.net en Char* en C++.net [ par didiou ] salut tout le monde!J'ai un petit probleme sur lequel je galere depuis 2 jours:J'ai developpé une dll en C++.net qui comporte une fonction ayant pour Problème avec une API, assez bizzare [ par DeadlyPredator ] Je veux utiliser cette api :DllFunctionCall de Msvbvm60.dllÉvidament, je ne trouve pas de documentation sur cette api. Je sais par contre que cette ap DLL crystal reports à inclure dans package VB6 [ par evilmajestik ] Bonjour all,J'aurais besoin de savoir qu'elles sont les .dll à inclure dans un projet VB6 avec état crystal reports pour le lire avec crystal viewer.D DLL developpé en VB.net compatible VB6 [ par Djus ] Une Dll dévéloppé en vb.net devrait être intégrer à un projet VB6.Or lors de l'ajout d'une réference, VB6 nous informe que LE fichier ne peut être ajo DLL VB.NET vs EXE VB6 [ par Freddddy ] Bonjour,J'ai un problème de compatibilité de version entre VB6 et VB.NET. Je souhaite faire fonctionner un programme écrit en VB6 en utilisant une DLL Probleme avec une Dll [ par dirickles ] Slt a ts,G un souci avec vb 6.je ve convertir une string en double = CDbl(string)Or kan je conpile Vb meme detecte une erreur sur la function CDBL = T Passage de string d'une DLL C++ a un prog VB (.NET) [ par playmo420 ] Bonjour Je souhaiterais passer une string d'une DLL c++ a un programme VB. Voila ma fonction dans la DLL : string _stdcall selectMom() { ostringstream


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,014 sec (4)

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