begin process at 2010 02 10 08:53:22
  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 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 Sendkeys et options pour une combo [ par bubuchette ] Salut tout le monde! Me voila reparti pour une nouvelle journée d'Access 2007 avec deux trois petites questions!! Bon la premiere: A propos des Sen


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,218 sec (4)

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