Msgbox problème d'affichage

Résolu
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 - 21 déc. 2004 à 12:36
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 - 21 déc. 2004 à 15:58
Bonjour j'ai le code ci dessous et à l'affichage, je n'ai que la première ligne.

Quelqu'un saurait me dire pourquoi?

MsgBox "Utilisateur: " & NomUtilisateur & vbCrLf & _
"Nom de l'ordinateur: " & ComputerName & vbCrLf & _
"Adresse IP: " & LocalIPAddress & vbCrLf & _
"Adresse MAC de la carte réseau: " & GetMACAddress & vbCrLf & _
"Ports et réseaux ouverts: " & GetPorts & vbCrLf & _
"Liaison réseau: " & msg & vbCrLf & _
"Nombre de couleurs :" & NbCouleurs & vbCrLf & _
"Touches activées: " & NumL & vbCrLf & CapsL & vbCrLf & _
"Carte son: " & Sound & vbCrLf & _
"Lecteurs de CD: " & Lect, vbInformation, "Récapitulatif Informations Système"

Merci bcp :)

18 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 déc. 2004 à 14:14
il y a différentes méthodes avec les fonctions de manipulation de chaîne, Instr pour trouver le premier chr$(0) et Left$ pour ne prendre que la partie gauche ou alors avec Replace, remplacer les zéros par des espaces et ensuite les supprimer avec Rtrim$.
une autre méthode consiste à mettre la zone dans un TexBox ou un Label et on la récupère sans les zéros.

exemples:

NomUtilisateur = Replace(NomUtilisateur, Chr$(0), " ")
NomUtilisateur = RTrim$(NomUtilisateur)

Dim x As Integer
x = InStr(LocalIPAddress, Chr$(0))
LocalIPAddress = Left$(LocalIPAddress, x - 1)

Text1.Text = ComputerName
ComputerName = Text1.Text

Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 déc. 2004 à 12:53
je suppose que tes zones NomUtilisateur ,ComputerName, etc...
proviennent de fonctions APi donc il doit rester des chr$(0) à la fin
c'est pourquoi ce qui suit n'est pas affiché.

Daniel
0
zifnig Messages postés 69 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 4 mars 2013
21 déc. 2004 à 13:11
Essaye a=msgbox "... (a étant un integer)

Car lorsque que l'on met des opérateurs, il faut en général mettre msgbox dans une expression.

Zifnig
0
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 1
21 déc. 2004 à 13:23
Comment dois je faire pour afficher toutes ces données?
:question)

----------------------------------------------------
PS : Sympa ton nouvel avatar !
----------------------------------------------------
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 déc. 2004 à 13:25
si c'est le cas que j'ai invoqué, il faut enlever les zéros de la fin avant d'afficher.

Daniel
0
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 1
21 déc. 2004 à 13:26
Désolé Zifnig, mais ca ne fonctionne pas

:shock)
0
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 1
21 déc. 2004 à 14:13
Gobillot,

Peux - tu me dire comment faire pour supprimer le Chr$(0) à la fin des retours de fonctions d'API?

Merci

:)
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 déc. 2004 à 14:22
Gobillot on pourrait meme tout simplement remplacer les vbNullChar par ... rien du tout.

NomUtilisateur = Replace$(NomUtilisateur,vbNullChar,"")

Comme ca, c'est plus rapide et plus clair.

Zifnig < Faudra que tu m'expliques ton argument "Car lorsque que l'on met des opérateurs, il faut en général mettre msgbox dans une expression.", car cela m'interpelle quelque part et je voudrais bien savoir ou tu as été péché cette idée la ??? De plus le "En général" est rarement le bien venu en programmation :soit ce que tu dis est un fait constant (sous réserve que les conditions soit vérifié, et il te faut alors bien les connaitre) soit cela n'est pas juste : Rien n'est "en général" en programmation !! Il faut t'ôter cette idée de la tête. Si tu as cru comprendre cela d'expériences de codage passées, je te conseille de bien revoir la doc VB.

Christophe R.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 déc. 2004 à 14:30
crenaud76 >> tout à fait d'accord j'avais pas pensé merci !

NomUtilisateur = Replace$(NomUtilisateur,vbNullChar, vbNullString)

Daniel
0
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 1
21 déc. 2004 à 14:34
Merci pour vos réponses.

j'ai utilisé la méthode de remplacement par vbNullString pour la première donnée pour essayer et à l'affichage j'ai obtenu toutes les autres données sauf la première!

Comment cela est il possible :question)
Merci
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 déc. 2004 à 14:42
Ne remplace par vbNullchar par vbNullString !! Car en VB, une chaine vide, càd "", ce n'est pas la même chose que vbNullString !
vbNullString ne doit être utiliser que dans des cas extrèmes et lors d'utilisation de fonction provenant de DLL -codé en C- qui ne comprenne pas toujours bien la façon de représenter les chaine de VB, car le C et VB ne représente pas du tout les chaine de la même façon en mémoire. Mais c'est une très longue histoire ...
Fait le Replace() avec "", cela marchera mieux.

Christophe R.
0
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 1
21 déc. 2004 à 14:46
J'avais fait cette manip et c'est le résultat que j'ai obtenu (voir post précédent)

;)
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 déc. 2004 à 14:50
En remplacant vbnullchar par vbNullString, il te manque ta data ? Cela est normal

Et remplacant vbnullchar par "", ca marche non ? En tout cas, cela devrait marcher !!

Christophe R.
0
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 1
21 déc. 2004 à 14:55
Oui oui il me manque la data avec ce code:

    wNomUtilisateur = Replace(NomUtilisateur, Chr$(0), "")
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 déc. 2004 à 15:27
à moins que NomUtilisateur soit vide
quand tu appelles l'API est-ce que tu remplis ta zone avec des chr$(0) ?
si oui essayes de mettre des espaces à la place
NomUtilisateur = space$(255)

Daniel
0
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 1
21 déc. 2004 à 15:31
Lorsque j'utilise une Msgbox pour chaque data, ça fonctionne correctement.

Mais c'est dès que je groupe tout que ca déconne!
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 déc. 2004 à 15:46
vérifie la longueur de NomUtilisateur après le replace
et vérifie chaque caractère avec la valeur ASCII

Daniel
0
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 1
21 déc. 2004 à 15:58
après le Replace, NomUtilisateur est vide.

Mais
j'ai utilisé la méthode du transfert dans un textbox puis de la récup de toutes les data dans un Msgbox et ca marche!

Merci pour votre aide..

@+

8-)
0
Rejoignez-nous