KokoJacK
Messages postés14Date d'inscriptiondimanche 10 juillet 2005StatutMembreDernière intervention31 janvier 2009
-
22 janv. 2009 à 15:29
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
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 -____-"
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 22 janv. 2009 à 16:10
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 :
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 22 janv. 2009 à 16:23
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