API Getusername et string -_- [Résolu]

KokoJacK 14 Messages postés dimanche 10 juillet 2005Date d'inscription 31 janvier 2009 Dernière intervention - 22 janv. 2009 à 15:29 - Dernière réponse : PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention
- 22 janv. 2009 à 17:00
Bonjour j'vous montre mon problème qui est incompréhensible pour ma part -_-

Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Dim username_len As Long
Dim username As String
Dim music_path As String
username = Space(255)
username_len = Len(username)
GetUserName username, username_len
music_path = "C:\Documents And Settings" & username & "\Mes Documents\Ma Musique"

Le problème c'est que la variable music_path ne contient que "C:\Documents And Settings\le_nom_d'utilisateur"

Quoi que je rajoute après ça ne marche pas -____-"
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 22 janv. 2009 à 16:10
3
Merci
La chaine de caractère retournée par GetUserName est de type NullTerminated (elle est terminée par un caractère Null)

Tu dois donc prendre tous les caractères avant le caractère Null.
La longueur que retourne GetUserName, est justement la longueur de la chaine, caractère Null compris, donc :

GetUserName username, username_len
username = Left$(username,username_len-1)
music_path = "C:\Documents And Settings" & username & "\Mes Documents\Ma Musique"

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 85 internautes ce mois-ci

Commenter la réponse de cs_casy
KokoJacK 14 Messages postés dimanche 10 juillet 2005Date d'inscription 31 janvier 2009 Dernière intervention - 22 janv. 2009 à 16:13
0
Merci
Merci ^^ C'est un peu con les api des fois ^^
Commenter la réponse de KokoJacK
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 22 janv. 2009 à 16:23
0
Merci
C'est VB qui est mal foutu.

Les chaines de caractères sont toujours terminées par un caractère Null qui indique justement la fin de la chaine. La plupart des langages gèrent cela correctement. Si tu travaille en C, tu te pose même pas la question, tu es habitué à ce type de chaine.

VB fonctionne pareil en interne mais pas au niveau de l'utilisateur (développeur). Ce qui fait que si tu laisse traine un caractère Null dans une chaine, cela sera considéré comme la fin de la chaine en interne dans les fonctions de VB
Toutes les chaines venant du système via les API sont normalement systématiquement terninées par un caractère Null

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Commenter la réponse de cs_casy
KokoJacK 14 Messages postés dimanche 10 juillet 2005Date d'inscription 31 janvier 2009 Dernière intervention - 22 janv. 2009 à 16:24
0
Merci
Ok ! Merci de l'info :)
Commenter la réponse de KokoJacK
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 22 janv. 2009 à 17:00
0
Merci
salut,
attention : "Mes Documents" n'existe pas forcément....
autre OS que XP, version non FR, chemin perso, etc....

il y a d'autres moyens pour avoir le VRAI chemin !
++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Commenter la réponse de PCPT

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.