Récuperer un pointeur de pointeur d'une dll type char** en vb

cs_Jbs106 Messages postés 32 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 27 avril 2010 - 19 oct. 2009 à 21:00
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 - 20 oct. 2009 à 13:07
Bonjour
Je me suis fait une petite fonction split nommé asplit avec la particularité de couper avec plusieurs caractère. Je souhaiterai m'en servir en vb, j'ai du mal à la déclarer correctement, problème de convention d'appel..
Merci pour votre aide.

struct rsplit
{ int index;
char* str;
};
rsplit asplit(const char* str,int index,char* car = "/")
{ char* m_str = new char;
int Counter=0;
bool truecar = false;
int CountCar;
while (*(str + index)!='\0')
{ CountCar = 0;
while((*(car+CountCar)!='\0')&&(truecar==false))
{ if (*(str + index)==*(car+CountCar))
truecar=true;

CountCar++;
}
if(truecar==true)
{ *(m_str +Counter)='\0';
rsplit m_split;
m_split.index = index;
m_split.str = m_str;
return m_split;
}
else
{
*(m_str + Counter)=*(str +index);
index++;
Counter++;
}
}
*(m_str +Counter)='\0';
rsplit m_split;
m_split.index = index;
m_split.str = m_str;
return m_split;

}
extern "C" __declspec(dllexport) char** __stdcall split(const char* str,char* car = "/")
{
int index=0;int count=0;rsplit m_split;
char** Test=new char*;int lenstr=strlen(str);
while (index<lenstr)
{
m_split= asplit(str,index,car);
Test[count]=m_split.str;
index=m_split.index +1;
count++;
}
Test[count]=NULL;
return Test;
}

3 réponses

elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
20 oct. 2009 à 09:55
Bonjour,

Pour un Char* je te dirais d'utiliser une String.

Mais pour un pointeur de pointeur !??

Declare Function MonSplit Lib "malibraire.dll" Alias "Split" (ByVal str As String, ByRef car As String) As "???"

Un tableau de string ne donne rien je pari ?
0
cs_Jbs106 Messages postés 32 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 27 avril 2010
20 oct. 2009 à 12:45
J'ai vu une fonction api renvoyant une chaine a partir d'un pointeur, ensuite j'ai vu que pour déclarer un pointeur, il faudrait utilisé le type 'any'. Mais là, je comprend pas trop. Pour déclarer fonction dans ma librairie, j'utilise dépendency walker pour voir comment elle est déclarer. Elle est toujours du genre '_NomFonction@NombreOctetDesParamètre' si je m'abuse, et je crois que j'abuse, s'il vous plaît, ici, il fait nuit, montrer moi un peu de vos lumières.
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
20 oct. 2009 à 13:07
Any ? je ne connais pas ce type, certainement une sorte de Variant !?

Et faire ta fonction sous VB çà serait pas plus simple ?

Car du transcryptage de C vers VB6 ; "y'en a qui ont essayé ... ils ont eut des problèmes :-) !"
0
Rejoignez-nous