MoveMemory()

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

MoveMemory()

Message 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
Ombres
Messages : 51
Inscription : sam. 24/janv./2004 12:46
Contact :

Message par Ombres »

il y a

Code : Tout sélectionner

RtlMoveMemory_(*destination,*source,lenght)
en attendant...
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Merci Ombres , je vais tester ça tout de suite :)

Merci Dri ,c'est bien essayé ,mais ombres a mieux :)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

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