Copier une structure "type" dans une autres

0/5 (7 avis)

Snippet vu 3 512 fois - Téléchargée 43 fois

Contenu du snippet

Mettre la source dans un module et définir "sub main" en démarrage

Source / Exemple :


Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
' Un type bidon
Type tmpEx
    Ex1 As Long
    VBfrance As String
    Pe As Boolean
    MPP As Integer
End Type

Sub main()
    Dim t1 As tmpEx
    Dim t2 As tmpEx
    ' Initialise t1 avec des valeurs bidons
    With t1
        .Ex1 = 3465
        .VBfrance = "Codes-Sources"
        .Pe = True
        .MPP = -6954
    End With
    ' On copy la mémoire -> on copy t1 sur t2
    CopyMemory t2, t1, Len(t1)
    
    ' on voit le résultat
    With t2
        MsgBox "Ex1=" & .Ex1 & vbNewLine & _
            "VBFrance=" & .VBfrance & vbNewLine & _
            "Pe=" & .Pe & vbNewLine & _
            "MPP=" & .MPP, vbInformation, "Contenu de la copie t2"
    End With
End Sub

Conclusion :


Je n'ai testé cette source qu'avec des types simples simples. Merci de me prévenir si il y a des bugs

A+

A voir également

Ajouter un commentaire Commentaires
cs_Capo Messages postés 2 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 19 février 2003
19 févr. 2003 à 14:02
Grâce à ton code source (très simple), j'ai enfin compris comment utiliser CopyMemory.

Merci
cs_zappy Messages postés 161 Date d'inscription mardi 19 juin 2001 Statut Membre Dernière intervention 10 avril 2007 1
8 janv. 2003 à 13:04
Sympa le code :)
fredb26 Messages postés 1 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 6 janvier 2003
6 janv. 2003 à 18:43
J'ai utilise ton source pour comparer deux donnees du meme type :
* copie des type dans des strings
* et comparaison des 2 types
Ca a l'ai de marcher sauf qu'il faut utitliser LenB a la place Len pour etre sur de son coup ( pbl d'alignement de structure )
vbmore Messages postés 18 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 8 mars 2004
6 janv. 2003 à 17:26
Aie !, désolé, je ne savais que VB6 le faisait automatiquement

Enfin, l'important, c'est de montrer l'API copymemory

Pour ceux qui ne l'on pas compris :
le 1er arguments est la variable destination
le 2e arg. est la variable source
le 3e est la longueur


Avec cet Api, je pense faire un MemView, Mais c'est pour plus tard

A+

VBMore
celiphane Messages postés 466 Date d'inscription samedi 16 février 2002 Statut Membre Dernière intervention 20 avril 2007
6 janv. 2003 à 13:12
sans te vexer, même si c'est très bien, VB6 peut lui même affecter une variable d'un type utilisateur dans une variable du même type.
Dans ton exemple donc,

CopyMemory t2, t1, Len(t1) ' et tout le reste

se remplace par :

t2 = t1


tchao ;)
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.