begin process at 2012 02 16 02:20:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

General

 > 

Remplacement de copymemory


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Remplacement de copymemory

mercredi 14 janvier 2009 à 14:38:09 | Remplacement de copymemory

popeye63

Bonjour,
je recherche une solution pour utiliser copymemory voici mon code :

j'ai une structure du type qui se situe dans la classe C_Struc

Public

Structure ST1

   Public Int1 AsInteger

   Public long1 AsLong

   Public long2 AsLong

EndStructure

je souhaite réaliser un copymemory de cette structure pour cela je fait :

Dim tab_Byte() AsByte

Dim St1 As C_Struc.ST1

'je renseigne ma structure
St1.Int1 = 14

St1.long1 = -140

St1.long2 = -33

ReDim tab_Byte(9)

'et je réalise la copy
CopyMemory(tab_Byte(0), St1, 10)

Je ne retrouve pas mes éléments de ma structure sous tab_byte!!!!???
Help Me.

Merci



Pop
mercredi 14 janvier 2009 à 14:44:48 | Re : Remplacement de copymemory

popeye63

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( ByVal Destination As Object , ByVal Source As C_Struc.STRUCTURE1, ByVal Length As Long )

Pop
mercredi 14 janvier 2009 à 23:59:05 | Re : Remplacement de copymemory

Charles Racaud

Membre Club
Salut,

Avec les outils du framework :
'Imports System
'Imports System.Runtime.InteropServices

Private Function StructToByteArray(ByVal Struct As ObjectAs Byte()
  Dim StructSize As Integer = Marshal.SizeOf(Struct)
  Dim StructPrt As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(Struct))
  Dim StructBytes() As Byte = CType(Array.CreateInstance(GetType(Byte), StructSize), Byte())
  Marshal.StructureToPtr(Struct, StructPrt, False)
  Marshal.Copy(StructPrt, StructBytes, 0, StructSize)
  Marshal.FreeHGlobal(StructPrt)
  Return StructBytes
End Function
Coloration syntaxique vb/vba/vb.net

__________
  Kenji

jeudi 15 janvier 2009 à 01:40:46 | Re : Remplacement de copymemory

PCPT

Administrateur CodeS-SourceS
pas mal kenji! bon à savoir
codyx t'attend si tu as le temps, çà peut être utile
jeudi 15 janvier 2009 à 10:37:24 | Re : Remplacement de copymemory
jeudi 15 janvier 2009 à 10:45:16 | Re : Remplacement de copymemory

popeye63

Ouaip merci pour ton aide....
J'ai écris la fonction inverse pour ceux que ca interesse à savoir passer d'un tableau de byte en une structure...

Public

Function ByteArrayToStruct(ByVal tableauByte() AsByte, ByVal StrucTType As Type, ByVal size AsInteger) AsObject

Dim p As IntPtr = Marshal.AllocHGlobal(size)

Dim Result AsObject

Marshal.Copy(tableauByte, 0, p, size)

Result = Marshal.PtrToStructure(p, StrucTType)

Marshal.FreeHGlobal(p)

Return Result

EndFunction


Pop
jeudi 15 janvier 2009 à 11:01:00 | Re : Remplacement de copymemory

Charles Racaud

Membre Club
J'aurais plutôt fait ainsi :

Private Function ByteArrayToStruct(Of T)(ByVal StructSrc() As ByteAs T
  Dim StructSize As Integer = Marshal.SizeOf(GetType(T))
  Dim StructPrt As IntPtr = Marshal.AllocHGlobal(StructSize)
  Dim Struct As T
  Marshal.Copy(StructSrc, 0, StructPrt, StructSize)
  Struct = CType(Marshal.PtrToStructure(StructPrt, GetType(T)), T)
  Marshal.FreeHGlobal(StructPrt)
  Return Struct
End Function
Coloration syntaxique vb/vba/vb.net


__________
  Kenji



Cette discussion est classée dans : tab, byte, structure, copymemory, st1


Répondre à ce message

Sujets en rapport avec ce message

Structure VB et C++ [ par fzpitt ] Bonjour,j'ai développé une Dll en C qui récupère des valeurs d'un fichier pour alimenter, entre autre, une structure est définie comme suit :typedef s Structure TYPE [ par gmelapet ] BonjourJe souhaite faire une grosse structure TYPE avec un tableau de 512 octets.Mais etant donné qu il y a beaucoup de variables, je voudrais utilise Allocation mémoire d'une structure passée en pointeur à une DLL C++ [ par Feanor06 ] Bonjour ! Bon, désolé mais je dois pas être dans le bon thème, mais j'en ai pas trouvé qui collait bien (style "truc de ouf" [^^clinoeil3]). J'ai un CopyMemory, Len, LenB et la structure, comment tout faire fonctionner ? [ par NHenry ] Bonjour,J'ai actuellement la maintenance d'un projet professionnel codé en VB6.Ce projet est composé de plusieurs applications communicantes entre ell Déclarer une variable tableau selon l'informations des dimensions contenue dans un array sans connaitre le nombre de dimensions dans l'array [ par jeremiesauve ] Bonjour à tous !Je veux faire ces deux chose :1. Dimensionner une variable tableau dynamique avec des dimensions dont les informations (des dimensions Problème avec : Liste(Of [ par pingouin84k ] Bonjour,J'essaye de faire une sorte de mailleur.J'ai donc déclaré sous forme de structure "Noeud" chaque noeud dans le maillage. On trouve dans la str mes objets se décalent !!!! [ par Aurel62190 ] Bonjour à tous, J'ai un souci de décalage. Dans une form, j'ai mis un sstab avec l'ajout de tab en dynamique. Le truc, c'est que, à l'ajout d'un tab, Problème avec une List(Of [ par pingouin84k ] Bonjour, J'ai une structure [i]Struct[/i], ensuite je definit une liste de cette structure en faisant : Dim MaListe as New List(Of Struct) Ensuite j Comment faire appel à un control [ par Aurel62190 ] Bonjour, J'ai un souci avec des controles que j'ai ajouté avec la méthode "controls.add(vb.textbox, nom_de la_textbox)" Le truc, c'est que j'ai fait Tableau Mutli Dimensionel en parametre a une Function [ par CodeIX ] Bonjour, j'essaie de faire une simulation biologique avec laquelle je doit travailler dans un tableau a 2 dimensions. Je pense avoir un probleme lors


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales