C++ Buffer

Fermé
amine69500 Messages postés 418 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 25 août 2013 - Modifié par amine69500 le 19/06/2012 à 16:04
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 19 juin 2012 à 23:48
Bonjour,

je souhaiterais savoir comment je pourrais modifier mon code sous c++ afin que celui ci memorise mon resultat dans un buffer et non pas dans un chunk.memory

le but aprés, est de recuperer le resultat de la memoire (buffer) sous excel

merci de votre aide

cordialement

mon code


int totoConnector::getPro(LPCSTR key, LPCSTR* result)
{
CURLcode res;
struct MemoryStruct chunk;
chunk.memory = (char*)malloc(1); /* will be grown as needed by the realloc above */
chunk.size = 0; /* no data at this point */
int error = 1;
string credentialS = this->userName + ":" + this->password;
char *credential = new char[credentialS.size()+1] ;
strcpy(credential, credentialS.c_str());

string urlS = this->baseUrl + this->projectUrl + "/" + convertLPCSTRToStr(key) ;
char *url = new char[urlS.size()+1] ;
strcpy(url, urlS.c_str());


if (curl)
{


curl_easy_setopt(curl, CURLOPT_URL,url);
curl_easy_setopt(curl, CURLOPT_HTTPGET,1);
curl_easy_setopt(curl, CURLOPT_USERPWD, credential);
/* send all data to this function */
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
/* we pass our 'chunk' struct to the callback function */
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
res = curl_easy_perform(curl);

}


printf(chunk.memory);
if(chunk.memory)
free(chunk.memory);
return error;

}


merci de votre aide

2 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
19 juin 2012 à 16:12
tu en codes en C++ comme en C. C'est moche.
Je ne comprend rien à ta question. Pour moi buffer est une zone tampon, donc plutôt temporaire de mémoire, qui souvent sert à l'accumulation. C'est un concept, pas quelque chose de concret. Essai d'être plus clair dans ce que tu veux.
0
amine69500 Messages postés 418 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 25 août 2013 12
19 juin 2012 à 20:31
Bonsoir et merci de votre aide

voila mon probleme:

j'ai créer une dll sous c++ avec une fonction (une variable LPSTR, et un pointeur sur result)

ensuite j'ai declaré cette dll sous vba, pour l'utilisé avec vba et avoir le resultat sous excel

donc pour l'instant comme vous pouvez voir sur mon code (message1) le resultat de ma fonction est stocker sous chunk.memory, et mon but est de tranformer le stockage dans chunk.memory en stockage dans un buffer

comme ca ensuite je pourrais recuperer le resultat stocker dans le buffer et l'afficher sur excel.

voila j'espere que j'etais claire, sinon n'hesite pas

merci dce votre aide

cordialement
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
19 juin 2012 à 21:50
donc pour l'instant comme vous pouvez voir sur mon code (message1) le resultat de ma fonction est stocker sous chunk.memory
Euh, moi ce que je vois surtout c'est que le résultat de ta fonction est "error" (int) et non chunk.memory;
Ensuite ton code est vraiment moche. On mélange pas le C et le C++. Pourquoi diable mélanger s'embêter avec des tableaux de char en C++ là où un simple string suffit ?

printf(chunk.memory);
Plutôt : printf("%s", chunk.memory);

Sinon pourquoi ne pas faire ton buffer et copier ton chunk.memory dedans ?
Je ne comprends pas tout ce que tu souhaites faire...
0
amine69500 Messages postés 418 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 25 août 2013 12
19 juin 2012 à 22:06
bonsoir et merci de votre aide ,

c vrai l'idee de créer un buffer et mettre mon chunk memory dedans me parait bien mais le probleme est comment je pourrais créer mon buffer pour mettre mon chunk memory dedans
si vous pouvez me donnée un exemple ca m'arrangerais

et merci encore de votre aide

cordialement
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
19 juin 2012 à 22:18
Beh vu que tu mélanges string et char*, cela dépend du type que tu souhaites donner au buffer...
0
amine69500 Messages postés 418 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 25 août 2013 12
19 juin 2012 à 22:24
je souhaite lui donné du string, par ce que ensuite je vais le recuperer avec vba
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
19 juin 2012 à 22:48
Rassure-moi, tu ne comptes pas récupérer le contenu de ta variable string C++ en vba comme si de rien n'était ? Cela n'est pas si simple. Le string C++ et le string vba n'ont en commun que le nom.
Dans ton code C++, tu travailles en Ansi ou Unicode pour tes chaînes ? Ansi non ?
Ne peux-tu pas utiliser le type BSTR (au lieu de string) ? Ca serait plus simple.
0