Page 1 sur 1

MoveMemory()

Publié : ven. 18/juin/2004 12:14
par comtois
Je viens de me faire avoir pour faire un décalage , je faisais un copymemory((*a, *a+5, 50) sans me rendre compte que j'écrasais tout :oops:

donc maintenant je fais une boucle .Depuis , j'ai vu qu'une demande a été faite sur le forum anglais ;est-ce qu'il serait possible d'ajouter une commande de ce type ?
The MoveMemory-Command could come very handy if you try to move a memory block to a destination that is part of the memory block itself (i.e. it's overlapping). Source->Buffer->Dest instead of Source->Dest
Code:

MoveMemory(*a, *a+5, 50) ;shifting 50 Bytes 5 Bytes to the right
http://purebasic.myforums.net/viewtopic.php?t=11128

Publié : ven. 18/juin/2004 12:26
par Ombres
il y a

Code : Tout sélectionner

RtlMoveMemory_(*destination,*source,lenght)
en attendant...

Publié : ven. 18/juin/2004 13:01
par Dr. Dri
ou en attendant tu te fais une fonction

Code : Tout sélectionner

Procedure MoveMemory(*source, *cible, taille)
  if *source=0 or *cible=0
    ProcedureReturn 0
  endif
  *ptr=AllocateMemory(taille)
  if *ptr=0 : ProcedureReturn 0 : endif
  CopyMemory(*source, *ptr, taille)
  CopyMemory(*ptr, *cible, taille)
  FreeMemory(*ptr)
  ProcedureReturn 1
EndProcedure
Enfin je suis persuadé que tu sais faire... C'est sûr que ce serait pratique que ce soit directement une fonction PB

Dri

PS. codé au boulot donc pas sûr...

Publié : ven. 18/juin/2004 14:27
par comtois
Merci Ombres , je vais tester ça tout de suite :)

Merci Dri ,c'est bien essayé ,mais ombres a mieux :)

Publié : ven. 18/juin/2004 15:15
par Dr. Dri
C'est sûr... On a bô critiquer microsoft j'aurai jamais la prétention de faire mieux...

Dri ;)

PS. son code marche pas sous linux :P