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

Code : Tout sélectionner
T$= "Tonton qu'est ce qui t'arrive?"
Debug T$
T$ = "Ch'ai pô..."
Debug T$
Code : Tout sélectionner
*T = AllocateMemory(4*6)
PokeS(*T,"COUCOU")
Debug PeekS(*T,6)
FreeMemory(*T)
Debug PeekS(*T,6)
*T = AllocateMemory(4*13)
PokeS(*T,"TONTON TONTON")
Debug PeekS(*T,13)
Il me semble que PB utilise les fonctions Heap pour l'allocation mémoiretonton 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
Code : Tout sélectionner
Extrn _HeapAlloc@12
Extrn _HeapCreate@12
Extrn _HeapDestroy@4
Extrn _HeapFree@12
Extrn _HeapReAlloc@16
Code : Tout sélectionner
!Extrn _HeapReAlloc@16
Code : Tout sélectionner
PUSH dwBytes
PUSH lpMem
PUSH dwFlags
PUSH hHeap
CALL _HeapReAlloc@16
Code : Tout sélectionner
chaine1$ = "chaine num 1"
chaine2$ = "chaine suivante"
;On récupère la taille exacte nécessaire à la chaîne...
LenghtOf=StringByteLength(chaine1$, #PB_Ascii)
*MemoryID = AllocateMemory(LenghtOf+1) ; Alloue un bloc mémoire de LenghtOf octets + 1 pour le caractère de fin de chaîne
If *MemoryID
PokeS(*MemoryID, chaine1$,#PB_Default, #PB_Ascii ) ; Ecriture d'une chaîne de caractères dans le bloc mémoire
EndIf
If CreateFile(0, "D:\Documents and Settings\Jacobus\Mes documents\TexteTest.txt") ; Création du fichier
WriteData(0, *MemoryID, SizeOf(Character)*LenghtOf); On écrit les caractères du bloc mémoire dans le fichier
CloseFile(0)
EndIf
FreeMemory(*MemoryID)
Debug "Ok chaine 1"
;On recommence pour la chaîne suivante
LenghtOf=StringByteLength(chaine2$, #PB_Ascii)
*MemoryID = AllocateMemory(LenghtOf+1)
If *MemoryID
PokeS(*MemoryID, chaine2$,#PB_Default, #PB_Ascii )
EndIf
If CreateFile(1, "D:\Documents and Settings\Jacobus\Mes documents\TexteTest.txt")
WriteData(1, *MemoryID, SizeOf(Character)*LenghtOf)
CloseFile(1)
EndIf
FreeMemory(*MemoryID)
Debug "Ok chaine 2"
Code : Tout sélectionner
Structure MilleVingtQuatre_Octets
ANDmask.b[1024]
EndStructure
Code : Tout sélectionner
Protected ANDmask.MilleVingtQuatre_Octets
Dans le cas ou la variable est protected, un long est réservé sur la pile, les 40000 espaces sont alloués avec les fonctions d'allocation de mémoire.tonton a écrit :Result1$= Space(40000)
lolololol