Allocation mémoire d'une variable ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
DarkVader
Messages : 95
Inscription : mer. 11/juil./2007 10:56

Allocation mémoire d'une variable ?

Message 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é ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 :)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Global s.s fait partie du code de la dll?
Avatar de l’utilisateur
DarkVader
Messages : 95
Inscription : mer. 11/juil./2007 10:56

Message par DarkVader »

Voui .
Faut pas ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

DarkVader a écrit :Voui .
Faut pas ?
si ! elle sera global a la dll (donc local par rapport au prg appelant) :)
Avatar de l’utilisateur
DarkVader
Messages : 95
Inscription : mer. 11/juil./2007 10:56

Message 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.
Répondre