IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] Copier des données en mémoire


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Ingénieur de développement
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur de développement

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 96
    Points
    96
    Par défaut [C#] Copier des données en mémoire
    Bonjour.

    J'ai une variable (pointeur) "IntPtr pData1" qui représente un tableau de byte.
    Une seconde variable (pointeur) "IntPtr pData2" qui représente un tableau de byte.

    Comment copier 500 octets à partir de l'adresse pData1 vers l'adresse pData2.

    Actuellement, j'utilise

    System.Runtime.InteropServices.Marshal.Copy(pData1 , TableauLocal, 0, 500);
    System.Runtime.InteropServices.Marshal.Copy(TableauLocal, 0, pData2 , 500);


    avec byte[] TableauLocal= new byte[500];

    Qqun a t il une idée pour éviter de passer par un tableau managé intermédiaire ?

  2. #2
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Renseigne-toi sur l'utilisation des pointeurs en C# (si si, ça existe)
    Ainsi que sur les conditions de sécurité nécessaires pour faire tourner du code unsafe.
    Copie de mémoire = code non managé = code unsafe = pas la philosophie de .Net

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 13
    Points
    13
    Par défaut Marshall.Copy
    En C# tu peux toujours travailler avec des pointeurs.
    Il faut juste déclarer la méthodes (ou la classe) unsafe.
    PS: si tu utilisez unsafe il faut déclarer utiliser le code Unsafe dans les propriétés de ton projet.

    ex: public unsafe class Toto { }
    ou: public unsafe bool Load() {}

    pour ton problème de copie de tableau:

    fixed(void* p = Tableau2)Marshal.Copy(Tableau1, 0, (IntPtr) p , (int)LaTaille);

    voilà ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/03/2009, 11h03
  2. [VBA-A]Copier des données d'Excel vers Word
    Par soad029 dans le forum VBA Word
    Réponses: 15
    Dernier message: 16/03/2006, 11h56
  3. Copier des données dans le presse papier
    Par Orakle dans le forum Access
    Réponses: 11
    Dernier message: 06/12/2005, 14h11
  4. [ADO.Net][VB.NET] Comment copier des données entre deux BDD différentes ?
    Par maddog2032 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/06/2005, 11h01
  5. Persistance des données en mémoire
    Par giviz dans le forum Architecture
    Réponses: 13
    Dernier message: 21/12/2004, 09h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo