Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Inscrit en
    février 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 7
    Points : 2
    Points
    2

    Par défaut Erreur de syntax System.Array.Copy

    Bonjour,

    Ayant besoin de traduire un code C# .net en WLanguage, j'ai inséré les assemblages Mscorlib et Sytem dans mon projet.

    Le problème étant que dans le code ci-dessous, j'obtiens une erreur de syntax pour System.Array.Copy, quelque soit la façon dont je déclare mes variables.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    ByteTest est un tableau de byte
    ByteFichier est un tableau de byte
    sNom_Exe est une chaîne
    
    sNom_Exe = "testeur.exe"
    ByteFichier = System.IO.File.ReadAllBytes(sNom_Exe)
    
    System.Array.Copy(ByteFichier, 0x3C, ByteTest , 0, 2)
    Même si j'utilise la fonction HexaVersEntier("3C"), j'obtiens toujours une erreur de syntax.

    Merci de vos réponses.

  2. #2
    Membre émérite Avatar de wimbish
    Homme Profil pro Christophe Vibert
    Développeur informatique
    Inscrit en
    octobre 2006
    Messages
    409
    Détails du profil
    Informations personnelles :
    Nom : Homme Christophe Vibert
    Âge : 40
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2006
    Messages : 409
    Points : 987
    Points
    987

    Par défaut

    Bonjour,

    Pourquoi ne pas envoyer un entier (int32) comme demandé ?
    http://msdn.microsoft.com/fr-fr/libr...(v=vs.80).aspx ?
    Christophe.

    Tous les chemins mènent à Rome http://doc.pcsoft.fr/fr-FR/

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    septembre 2010
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2010
    Messages : 269
    Points : 654
    Points
    654

    Par défaut

    Bonjour nejahwest,
    Citation Envoyé par benjahwest Voir le message
    Ayant besoin de traduire un code C# .net en WLanguage, j'ai inséré les assemblages Mscorlib et Sytem dans mon projet.

    Le problème étant que dans le code ci-dessous, j'obtiens une erreur de syntax pour System.Array.Copy, quelque soit la façon dont je déclare mes variables.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    ByteTest est un tableau de byte
    ByteFichier est un tableau de byte
    sNom_Exe est une chaîne
    
    sNom_Exe = "testeur.exe"
    ByteFichier = System.IO.File.ReadAllBytes(sNom_Exe)
    
    System.Array.Copy(ByteFichier, 0x3C, ByteTest , 0, 2)
    Ce que tu présentes, ce n'est pas une traduction en WLangage.
    C'est l'utilisation de fonctions .NET en WLangage... tu perçois la différence.

    Traduire un code écrit dans un "langage source" dans un "langage cible", c'est utiliser les types de données et des fonctionnalités "équivalentes" du langage cible.
    Il y a souvent plusieurs possibilités de traduction.

    Voilà un exemple de traduction en WLangage (pas de .NET), basée sur le type Buffer.
    Code WLangage :
    1
    2
    3
    4
    5
    6
    7
    ByteTest, ByteFichier est un Buffer
    sNom_Exe est une chaîne
    
    sNom_Exe = "testeur.exe"
    ByteFichier = fChargeBuffer(sNom_Exe)
    ByteTest = ByteFichier[[0x3C sur 2]]


  4. #4
    Invité de passage
    Inscrit en
    février 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 7
    Points : 2
    Points
    2

    Par défaut

    Citation Envoyé par wimbish Voir le message
    Bonjour,

    Pourquoi ne pas envoyer un entier (int32) comme demandé ?
    http://msdn.microsoft.com/fr-fr/libr...(v=vs.80).aspx ?
    En fait, j'ai essayé pas mal de types différents, mais rien y fait. Un int32 en Windev, c'est juste un entier... je comprends pas trop et je me dit que Windev ne connait pas la syntax "Array.Copy, méthode (Array, Int32, Array, Int32, Int32)" peut être.

    @OnePoint: C'est pourquoi en effet que le fait d'utiliser les fonctions équivalente en Wlanguage serait mieux. Merci pour ce bout de code déjà car je n'aurais jamais su que fChargeBuffer et le type buffer était ce que je recherchais.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    septembre 2010
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2010
    Messages : 269
    Points : 654
    Points
    654

    Par défaut

    Bonjour benjahwest,

    Citation Envoyé par benjahwest Voir le message
    En fait, j'ai essayé pas mal de types différents, mais rien y fait. Un int32 en Windev, c'est juste un entier... je comprends pas trop et je me dit que Windev ne connait pas la syntax "Array.Copy, méthode (Array, Int32, Array, Int32, Int32)" peut être.
    Je n'ai pas de certitude, mais je situerai le problème plutôt du côté des paramètres de type tableau.

    Citation Envoyé par benjahwest Voir le message
    @OnePoint: C'est pourquoi en effet que le fait d'utiliser les fonctions équivalente en Wlanguage serait mieux. Merci pour ce bout de code déjà car je n'aurais jamais su que fChargeBuffer et le type buffer était ce que je recherchais.
    Je ne connais pas le contexte dans lequel tu as besoin de réaliser cette traduction.
    Alors je t'ai donné une traduction possible, mais pas forcément "la bonne".

    En passant, une remarque sur le type Buffer du WLangage.
    Le type Buffer convient bien quand on a besoin de travailler sur des "blocs d'octets", et aussi comme type des paramètres d'appels aux API Windows et autres DLL.
    L'opérateur d'accès [[ ]] est très puissant, avec plusieurs syntaxes. Il permet d'accéder à une fraction du buffer, tant en lecture, qu'en écriture.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •