tonton a écrit :je sais que c'est violent mais j'arrive pas a effacer detruire reinitialiser
une varibale / chaine de caractères du type chaine$
mon probleme est que quand je la réappelle pour y mettre un texte plus petit, elle garde une partie de son ancien texte
merci

Il me semble que PB utilise les fonctions Heap pour l'allocation mémoire
Mais je me demande comment PB va supporter le fait que la taille ait changé car son ramasse miette libère les ressources à la fin est s'il tente de désallouer une taille incorrecte, je ne sait pas ce qu'il va se passer
La syntaxe asm de déclaration est la suivante pour les API, celle d'allocation, celle de libération et celle de réallocation etc
Code : Tout sélectionner
Extrn _HeapAlloc@12
Extrn _HeapCreate@12
Extrn _HeapDestroy@4
Extrn _HeapFree@12
Extrn _HeapReAlloc@16
Essayes de déclarer l'API que tu vas utiliser avec un point d'exclamation devant
mais tu auras peut-être une erreur de compilation car elle sera peut-être déjà déclarée, dans ce cas tu supprimes la déclaration
Tu te reportes à la doc MS ici
http://msdn.microsoft.com/library/defau ... ctions.asp
pour récupérer le hHeap, je n'ai pas trouvé dans le fichier sdk mais tu crée un asm depuis un fichier PB qui utilise une chaine et dans le listing tu dois trouver une variable contenant dans son nom le mot heap ou memory (reportes-toi à l'appel des fonction de chaîne dans le listing)
HeapReAlloc utilise 4 paramètres , le hHeap , les options de réallocation, le pointeur actuel sur la mémoire de la chaine lpMem et le dernier paramètre la taille en octets recherchée.
Pour appeler l'API, tu empiles les paramètres en commençant par le dernier pour finir par le heap. les 4 paramètres sont des mot de 32 bits
Code : Tout sélectionner
PUSH dwBytes
PUSH lpMem
PUSH dwFlags
PUSH hHeap
CALL _HeapReAlloc@16
La pile est ajsutée par l'API, pas besoin de bricoler esp
D'après la doc, tous les paramètres sont des paramètres d'entrée, j'en déduis que eax contiendra le pointeur sur la nouvelle zone mémoire allouée
Il faudrait pouvoir modifier le pointeur de PB qui stocke l'ancienne adresse
Je pense qu'il serait bien que tu désalloues la mémoire toi-même car PB ne le fera pas du fait du changement de pointeur