ça ne devrai plus planter ....
puisque je prepare la variable qui reçois en lui ajoutant des espaces (space(1024))
heu ... tu lis les messages avant de repondre ??
le principe
tu as une variable A , et une autre B
pour que B puisse s'ecrire dans A
il faut deja formater A (c'est ce que je fais avec le Space(1024 ) )
ensuite toute les opération de memoire dans la procedure, ne plantent plus

(a condition de ne pas depasser 1024 caracteres ... pour cet exemple )
rappel du nouveau code :
Code : Tout sélectionner
Declare.a incLettre (lettre)
calldebugger
toto$ = "A" +space(1024) ; ajout de place pour pouvoir remplir uterieurement....
debug "avant l'appel de la procedure toto ="+toto$
incLettre (@toto$)
; comme le debugger est limité en longueur de chaine , je vais utiliser message requester
;debug "Apres l'appel de la procedure toto="+toto$
MessageRequester("toto", toto$)
Procedure.a incLettre (lettre)
; Invalid memory access
Debug "adresse de Toto ="+str(lettre)
Debug "contenue de Toto= "+peeks(lettre)
; on va changer le contenu de toto
t$="rien ne sert de courir , il faut partir a point , je pourrai ainsi ajouter la longueur que je veux, parcequ'il n'y a pas de raison, que ça bloque , j'ai prevu de la place pour 1024 caracteres de plus ... "
MoveMemory(@t$, lettre, len(t$)) ; marche car on a prevu de la place au depart !!
; du coup on peut aussi utiliser CopyMemory()
; CopyMemory(@t$, lettre, len(t$)) ;marche car j'ai prevu de la place des le debut !!
EndProcedure
; Epb