Page 1 sur 1

Allocation mémoire d'une variable ?

Publié : dim. 17/févr./2008 19:11
par DarkVader
Bonjour,
Il me reste un problème à résoudre - j'ai écrit une Dll qui a été testée en mode debug.
La Proceduredll retourne la valeur de retour d'une procédure interne soit un code du style

Code : Tout sélectionner

Global s.s
Procedure.s maProcedure_(maVariable$)
   .../...
ProcedureReturn ret.s
EndProcedure

ProcedureDll maProcedure(maVariable$)
   s.s=maProcedure_(maVariable$)
ProcedureReturn @s.s
EndProcedure

;Debug maProcedure_(maVariable$)
La procédure en mode debug retourne toujours la même valeur pour maProcedure_ dès lors que le paramètre passé est le même
alors qu'en utilisation externe de la librairie compilée, je ne récupère que les 8 premiers caractères valides à partir de l'adresse retournée, les suivants changeant à chaque appel !
J'ai essayé d'utiliser une allocation de mémoire avec AllocateMemory mais rien n'y fait.
Qu'ai-je loupé ?

Publié : dim. 17/févr./2008 19:33
par Backup
les noms de procedures suivit d'un"_" sont réservè aux API

évite d'utiliser cette nomination dans tes procédures personnel

peut etre est-ce la le probleme , mais j'ai pas regardé , il faudrai un exemple concret :)

Publié : dim. 17/févr./2008 20:19
par nico
Global s.s fait partie du code de la dll?

Publié : dim. 17/févr./2008 20:54
par DarkVader
Voui .
Faut pas ?

Publié : dim. 17/févr./2008 21:00
par Backup
DarkVader a écrit :Voui .
Faut pas ?
si ! elle sera global a la dll (donc local par rapport au prg appelant) :)

Publié : dim. 17/févr./2008 21:17
par DarkVader
Finalement j'ai trouvé mon erreur :
Quand je testais la procédure en debug, je répétais le test si bien que le retour était identique à chaque appel -
j'ai voulu vérifier une dernière fois en répétant plusieurs fois la même ligne debug et j'ai eu cette fois ci plusieurs retours différents comme pour l'appel distant -
du coup l'erreur n'était plus un problème de transmission de la valeur de retour mais une erreur située dans la procédure locale - erreur que j'ai située et corrigée et cette fois-ci tout colle.

Merci tout de même de vos réponses.