Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > WinDev
WinDev Forum d'entraide sur la programmation en WinDev
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/01/2013, 18h36   #1
benjahwest
Invité de passage
 
Inscription : 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.
benjahwest est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 09h13   #2
wimbish
Membre Expert
 
Avatar de wimbish
 
Homme Christophe Vibert
Développeur informatique
Inscription : octobre 2006
Messages : 409
Détails du profil
Informations personnelles :
Nom : Homme Christophe Vibert
Âge : 38
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 : 1 043
Points : 1 043
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/
wimbish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 10h02   #3
OnePoint
Membre expérimenté
 
Inscription : septembre 2010
Messages : 208
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : septembre 2010
Messages : 208
Points : 535
Points : 535
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]]

OnePoint est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 09/01/2013, 08h07   #4
benjahwest
Invité de passage
 
Inscription : février 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 7
Points : 2
Points : 2
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.
benjahwest est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 10h41   #5
OnePoint
Membre expérimenté
 
Inscription : septembre 2010
Messages : 208
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : septembre 2010
Messages : 208
Points : 535
Points : 535
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.
OnePoint est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h31.


 
 
 
 
Partenaires

Hébergement Web