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

C# Discussion :

problème pointeur avec C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 84
    Par défaut problème pointeur avec C#
    Bonjour à tous j'implémente cette fonction de copiage avec le code ci joint:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
     static unsafe void Copy(char* src, int srcIndex, char* dst, int dstIndex, int count)
            {
                if (src == null || srcIndex < 0 ||
                    dst == null || dstIndex < 0 || count < 0)
                {
                    throw new System.ArgumentException();
                }
     
                //byte[] src1 = System.Text.Encoding.Default.GetBytes(src);
                //byte[] dst1 = System.Text.Encoding.Default.GetBytes(dst);
     
                int srcLen = src.Length;
                int dstLen = dst.Length;
                if (srcLen - srcIndex < count || dstLen - dstIndex < count)
                {
                    throw new System.ArgumentException();
                }
     
                // The following fixed statement pins the location of the src and dst objects
                // in memory so that they will not be moved by garbage collection.
                fixed (byte* pSrc = src, pDst = dst)
                {
                    byte* ps = pSrc;
                    byte* pd = pDst;
     
                    // Loop over the count in blocks of 4 bytes, copying an integer (4 bytes) at a time:
                    for (int i = 0; i < count / 4; i++)
                    {
                        *((int*)pd) = *((int*)ps);
                        pd += 4;
                        ps += 4;
                    }
     
                    // Complete the copy by moving any bytes that weren't moved in blocks of 4:
                    for (int i = 0; i < count % 4; i++)
                    {
                        *pd = *ps;
                        pd++;
                        ps++;
                    }
                }
            }
    et lorsque je compile je recois l'erreur suivante:

    Operator '.' cannot be applied to operand sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     int srcLen = src.Length;
    d'ou vient le problème?
    Merci par avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    1) On joue pas avec les pointeurs normalement
    2) un pointeur n'a pas de taille (ben tu peux faire un sizeof() mais ca va pas te donner le résultat que tu penses )

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    1) On joue pas avec les pointeurs normalement
    Bien sur que si, en C++ c'est même tres utiles pour certaine fonction de chaine

    Citation Envoyé par BenoitM Voir le message
    2) un pointeur n'a pas de taille (ben tu peux faire un sizeof() mais ca va pas te donner le résultat que tu penses )
    Et heureusement q'un pointeur à une taille!!

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Citation Envoyé par gcorbineau Voir le message
    Bien sur que si, en C++ c'est même tres utiles pour certaine fonction de chaine



    Et heureusement q'un pointeur à une taille!!
    on est en c# pas en c++

    un pointeur a une taille mais ca taille c'est l'espace qu'il occupe pour stocker l'adresse mémoire vers l'endroit où il pointe.
    Je pense qu'il préférait avoir la taille de sont tableau plutot que la taille du pointeur...

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 84
    Par défaut
    exactement je veux la taille du tableau plutot que la taille du pointeur, je suis bloqué et j'ai pas trouvé une solution pour ça :/

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Août 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 84
    Par défaut
    je tourne la question autrement:
    comment convertir un char* en un char[] ?
    Merci.

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Je pense qu'il faut que tu utilises src->Length ou (*src).Length vu que tu manipules un pointeur.
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Août 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 84
    Par défaut
    Merci pour vos réponse:
    1) pourquoi le sizeof() ne me donne pas le résultat que je pense?
    2) j'ai essayé le (*src).length mais ça ne marche pas aussi

    on peut pas essayer de convertir le char * src en byte [] src ? si oui comment on procède?
    Merci par avance.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/05/2008, 00h55
  2. Problème de pointeurs avec un tableau
    Par Tom_Tom_RoF dans le forum Fortran
    Réponses: 8
    Dernier message: 05/10/2007, 17h34
  3. problème de pointeur avec les listes chainees
    Par innosang dans le forum C
    Réponses: 9
    Dernier message: 30/12/2005, 15h46
  4. Problèmes de pointeurs avec les arbres
    Par thierry57 dans le forum C
    Réponses: 17
    Dernier message: 22/12/2005, 23h35
  5. Problème de pointeur avec un TQuery
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/01/2005, 13h57

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