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 : Probleme de fonction retournant du texte [ Divers / Divers ] (anthropo)

vendredi 2 juin 2006 à 16:43:39 | Probleme de fonction retournant du texte

anthropo

bonjour à tous,

je suis débutant de chez Débutant et je cherche à modifier une dll écrite en C++ pour en augmenter ses fonctions.
Je cherche notamment à créér une fonction qui me retournerais du texte dans vb :
j'ai essayé de la déclarer par 

         #include <string>
et          std::string  _stdcall ReadAngle()
               {
                     return "TOTO";
               }
et là gros plantage dans VB : 
    Public Declare Function ReadAngle Lib "inpout32.dll" (ByVal Portadress As Integer) As Integer
   la ligne qui plante est:   Dir.Text = Str(ReadAngle("&H0379"))

pas de message d'erreur, ni moyen de comprendre ni de trouver la réponse.

Merci de votre aide

[b]Anthropo[/b]

vendredi 2 juin 2006 à 16:58:11 | Re : Probleme de fonction retournant du texte

ricky78

Bonjour

aie aie aie

Il n y  a pas de correpondance entre les chaine C++ string et les chaines du VB.
Il faut que tu utilise un BSTR en retour

essaye un truc du genre

void _stdcall ReadAngle(BSTR *stringOut)
{

.... ton code
 

 char * buffer = new char[ size ];
*stringOut = SysAllocStringByteLen(buffer, size);

free(buffer);
}

avec dans buffer la chaine que tu veux echanger et size sa taille



TOCHE

vendredi 2 juin 2006 à 17:16:31 | Re : Probleme de fonction retournant du texte

anthropo

Réponse acceptée !

merci beaucoup quelle rapidité.

J'ai pas tout compris mais je m'en tire avec ceci :


BSTR _stdcall ReadAngle(short PortAddress)
 {
 BSTR Message;
 char *buffer = "NE";
  Message = SysAllocStringByteLen(buffer , lstrlen(buffer));
   return Message;
  free(buffer);
 }

merci encore de ton aide

[b]Anthropo[/b]



[b]Anthropo[/b]

vendredi 2 juin 2006 à 17:30:46 | Re : Probleme de fonction retournant du texte

SAKingdom

Membre Club
tu a un problème dans ta fonction. Tu retourne quelque chose avant de libérer ta mémoire. Tu te trouve donc a quitter ta fonction avant de libérer la mémoire. Il faudrait faire:

BSTR _stdcall ReadAngle(short PortAddress)
 {
 BSTR Message;
 char *buffer = "NE";
  Message = SysAllocStringByteLen(buffer , lstrlen(buffer));
  free(buffer);
  return Message;

 }

___________________________________________
Les plus grands esprits trouvent toujours une solution


vendredi 2 juin 2006 à 17:34:34 | Re : Probleme de fonction retournant du texte

SAKingdom

Membre Club
Ensuite, c'est étrange cette fonction : SysAllocStringByteLen. C'est de l'OLE non? Je comprend pas son fonctionnement. J'espère que la mémoire est bien allouer car sinon tu fais un free sans allocation. Ça pourrais entrainer certain problèmes.

___________________________________________
Les plus grands esprits trouvent toujours une solution


dimanche 4 juin 2006 à 23:56:15 | Re : Probleme de fonction retournant du texte

SAKingdom

Membre Club
Petite correction. Je sais pas pourquoi j'ai dit de mettre free avant return dans ta fonction. Je devais être saoul ou très fatigué. Peu importe. Le problème est toujours la. Tu quitte ta fonction mais tu libère après le return donc la libération ne se fera jamais. Donc il faudrais que tu libère ta mémoire en dehors de ta fonction comme ceci:

char *buffer;
buffer = ReadAngle(128);
...
free(buffer);

Ou encore tu modifie ta fonction de sorte que la mémoire soi alloué et libéré en dehors de celle-ci (par exemple, tu alloue la mémoire à une variable, tu passe cette variable à ta fonction en paramètre et ta fonction s'occupe de modifier la chaine de caractère) mais il faut absolument que tu libère la mémoire, c'est l'important.
___________________________________________
Les plus grands esprits trouvent toujours une solution




Cette discussion est classé dans : fonction, texte, probleme, retournant, readangle


Répondre à ce message

Sujets en rapport avec ce message

prob avec une dll [ par BlackWizzard ] Salut!je voudrais faire une dll avec un niveau tres bas...j'ai deja créé une dll de cryptage en me basant sur un code simple...la chose que je compren probleme avec la fonction GetAsyncKeyState() [ par aardman ] Bonjours,Je débute dans le c, et j'ai un petit probleme avec cette fonction.Je n'arrive pas a la faire fonctionner avec un int comme argument. Par exe Touches de fonctions [ par CHENRY ] En VC++6.0 avec les MFC, je souhaite employer les touches de fonction( F1 à F8) .Le but est:Dans un ecran de saisie, quand l'user est sur un champ de prob avec dll et lib [ par zelze ] voila mon prob:j'ai inséré le lib dan le projet, j'ai indiqué:extern "C" __declspec(dllimport) int fonction(char*);fonction(texte);mais lorsque je veu probleme de delcaration d'une fonction [ par naru ] slt, encore moi.j'ai une fonction qui renvoie pas de résultat que je déclare comme ça :void CMonProgDlg::Ausuivant()mais il me génère tout un tas d'er Probleme avec un editeur de texte [ par RayAv ] Saalut ! :)Je viens d'ecrire le skeulette d'un editeur de texte avec vc++6, mais j'ai un probleme, j'arrive pas a afficher la barre des menu. Que do probleme d'include [ par titus0m ] bonjour,je develop sous kdev sous linux.mon probleme est un conflit entre deux include qui possede une fonction qui se nomme pareil. C'est la fonction Probleme deplacement dans un fichier texte [ par Coxis ] Salut tous le monde,Voila j'ai petit soucis, je suis en train de faire un programme en C travaillant sur un fichier texte et je m'enbrouille grave ave probleme de fonction [ par Adeon ] pourkoi certaine fonctions s'execute avant d'autre?exemple:printf(); avant cout... Adeon probleme setdlgitemtext [ par sleeper41 ] Bonjour à tous.Voila en fait je ne comprends certaines choses.Donc je me suis inspiré d un exemple sur ce forum pour ecrre du texte dns notepad.Je fai


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

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



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,14 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é.