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

VB.NET Discussion :

problème avec ByVal..


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Déssinateur industriel - Programmeur VB.NET & VBA
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déssinateur industriel - Programmeur VB.NET & VBA
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut problème avec ByVal..
    Salut à tous
    Je ne suis pas un crack en VB.net et j’essaie de m'améliorer tous les jours. Mais la j'ai besoin d'aide.

    L'objet et de transformé un bout de code de VB6 en VB.Net
    En fait, on m'a passé un bout de code dont j'ai besoin en VB6 et moi je suis plus a l'aise en VB.net, donc je le modifie pour pouvoir faire ce que j'ai besoin derrière.

    Alors le bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function GetFloat(ByVal Adress As Long) As Single
            On Error Resume Next
     
            hProcess = OpenProcess(PROCESS_READ_WRITE_QUERY, False, pid)
            Test = ReadProcessMemory(hProcess, ByVal Address, sngbuffer, ByVal 4, 0)
            CloseHandle(hProcess)
            GetFloat = sngbuffer
     
        End Function
    J'ai donc une erreur sur les "ByVal" ou VB Express 2010 me dit ==>
    Expression attendu
    Et je ne sais pas quoi faire

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Je ne vois pas pourquoi il te dit ça sur tes ByVal, la syntaxe semble correcte.

    Cependant tu n'as aucun return dans te Function, or une Function doit obligatoirement retourner quelque chose, sinon tu dois faire des Sub.
    Peut être que c'est ce qui le gène...

    EDIT : Au temps pour moi, je suppose que tes erreurs sont sur les byval a l'intérieur de ton code, ceux là en effet n'ont pas à être là, supprime les simplement

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    ByVal s'utilise dans la déclaration de la fonction, pas lors de l'appel. Ton appel à ReadProcessMemory devrait s'écrire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Test = ReadProcessMemory(hProcess, Address, sngbuffer, 4, 0)

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par asmduty Voir le message
    Cependant tu n'as aucun return dans te Function, or une Function doit obligatoirement retourner quelque chose, sinon tu dois faire des Sub.
    Si, la fonction renvoie bien une valeur :

    En VB tu peux affecter une valeur au nom de la fonction, ce sera la valeur retournée à la fin (oui c'est horrible )

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    oO

    Ok, merci de m'avoir éclairé alors.
    Je vais ajouter ça a ma liste avec les "exit for", "exit sub", etc ^^

  6. #6
    Membre habitué
    Homme Profil pro
    Déssinateur industriel - Programmeur VB.NET & VBA
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déssinateur industriel - Programmeur VB.NET & VBA
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut
    Effectivement j'ai trouvé la solution.

    Je place le ByVal ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Single, ByRef nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
    et dans la procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public Function GetFloat(ByVal Address As Integer) As Single
            On Error Resume Next
     
            hProcess = OpenProcess(PROCESS_READ_WRITE_QUERY, False, pid)
            Test = ReadProcessMemory(hProcess, Address, sngbuffer, 4, 0)
            CloseHandle(hProcess)
            GetFloat = sngbuffer
     
        End Function
    Mais j'ai un un autre problème concernant les ListViews
    Toujours en convertions de VB6 vers VB.Net.

    Voila le code dont j'ai le problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Function ViewTimes(ByVal LstView As ListView, ByVal Entree As String, ByVal Key As Integer)
            On Error Resume Next
     
            Dim itmx As ListItems
            itmx = LstView.listItems
            itmx.Item(itmx.count).SubItems(Key) = Entree
     
        End Function
    ListItems non défini ?

  7. #7
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    ListItems n'est pas un type en VB.

    Voilà comment je remplacerais tes 3 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LstView.Items(LstView.Items.Count).SubItems(key) = Entree

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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