Copier une structure "type" dans une autres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 279 fois - Téléchargée 41 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

Messages postés
2
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
19 février 2003

Grâce à ton code source (très simple), j'ai enfin compris comment utiliser CopyMemory.

Merci
Messages postés
161
Date d'inscription
mardi 19 juin 2001
Statut
Membre
Dernière intervention
10 avril 2007

Sympa le code :)
Messages postés
1
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
6 janvier 2003

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 )
Messages postés
18
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
8 mars 2004

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
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007

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.