"char* error" est donc un entier correspondant à un pointeur sur une
chaine si mes souvenirs sont bons.
on balance donc dans la fonction un pointeur sur ce pointeur (le
&error)
à l'issue de la fonction, on récupère donc dans windev un pointeur sur
une chaine de type C, terminée par un zéro donc,
mais qui se trouve où ?
comment récuperer cette chaine ensuite dans une chaine Windev, sachant
que j'en ignore sa longueur (et donc ne peux pas utiliser un transfert)
?
hello, j'ai un petit doute avec un appel d'une dll, livrée avec un exemple en C...
à l'issue de la fonction, on récupère donc dans windev un pointeur sur une chaine de type C, terminée par un zéro donc, mais qui se trouve où ?
Tu dois passer à ta DLL une chaîne Asciiz
Bertrand
> Tu dois passer à ta DLL une chaîne Asciiz
non,non la fonction attend bien un pointeur sur un pointeur sur une chaine :) le problème est que la chaine est instancialisée dans la dll, pas avant.
je récupère un pointeur sur cette chaine. en déclarant ensuite une chaine balèse et en faisant un transfert(&chaine,monpointeur) je récupère bien ladite chaine.
mais j'en ignore la taille à priori, donc je suis obligé de faire une déclaration importante pour ne pas risquer de perte de donnée. ça donne donc ça actuellement :
PointeurError est un entier PointeurBuffer est un entier
error est une chaine Asciiz de 65536 buffer est une chaine Asciiz de 65536 transfert(&buffer,PointeurBuffer,65536) transfert(&error,PointeurError ,65536)
>
Tu dois passer à ta DLL une chaîne Asciiz
non,non la fonction attend bien un pointeur sur un pointeur sur une
chaine :)
le problème est que la chaine est instancialisée dans la dll, pas
avant.
je récupère un pointeur sur cette chaine.
en déclarant ensuite une chaine balèse et en faisant un
transfert(&chaine,monpointeur) je récupère bien ladite chaine.
mais j'en ignore la taille à priori, donc je suis obligé de faire une
déclaration importante pour ne pas risquer de perte de donnée.
ça donne donc ça actuellement :
PointeurError est un entier
PointeurBuffer est un entier
error est une chaine Asciiz de 65536
buffer est une chaine Asciiz de 65536
transfert(&buffer,PointeurBuffer,65536)
transfert(&error,PointeurError ,65536)
non,non la fonction attend bien un pointeur sur un pointeur sur une chaine :) le problème est que la chaine est instancialisée dans la dll, pas avant.
je récupère un pointeur sur cette chaine. en déclarant ensuite une chaine balèse et en faisant un transfert(&chaine,monpointeur) je récupère bien ladite chaine.
mais j'en ignore la taille à priori, donc je suis obligé de faire une déclaration importante pour ne pas risquer de perte de donnée. ça donne donc ça actuellement :
PointeurError est un entier PointeurBuffer est un entier
error est une chaine Asciiz de 65536 buffer est une chaine Asciiz de 65536 transfert(&buffer,PointeurBuffer,65536) transfert(&error,PointeurError ,65536)
Gégé
Bertrand a écrit :
mais j'en ignore la taille à priori, donc je suis obligé de faire une déclaration importante pour ne pas risquer de perte de donnée.
Bof, tu alloues deux chaînes de 64Ko
Bertrand a écrit :
mais j'en ignore la taille à priori, donc je suis obligé de faire une
déclaration importante pour ne pas risquer de perte de donnée.