Format de "String" à modoifier pour copie de fichiers ????

Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010 - 17 janv. 2009 à 11:59
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010 - 18 janv. 2009 à 11:04
bonjour,

HELP >j'ai une exception que mon niveau ne me permet pas de comprendre  :
je fais de la copie de fichiers avec My.Computer.FileSystem

et quand je defini directement les chemins comme ceci par exemple : 
Dim src
As
String = "D:\temp"

Dim dest
As
String = "C:\temp"

cela fonctionne tres bien,

mais je veux utiliser "src" et "dest" dà partir d'un fichier INI
que je parcours avec la fonction GetPrivateProfileString

c'est le drame > j'ai l'erreur "caracteres non conformes dans le chemin d'acces"

pourtant les strings semble correctement (je les affiches par messagebox avant pour m'en assurer)
je recupere bien "c:\temp" et "\d:\temp" en tant que string dans le fichier INI
mais ya qlqchose qui passe pas avec cette methode et je ne trouve pas quoi

merci d'avance pour votre aide

_____________
 (débutant inside)

7 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
17 janv. 2009 à 13:15
Si tu récupère réellement ceci "\d:\temp" il y a effectivement un caractère non conforme pour un chemin

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
17 janv. 2009 à 13:22
non il n'y a pas le 1er "" > c'est une erreur de frappe de ma part

_____________
 (débutant inside)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 janv. 2009 à 13:30
Salut
Mon idée serait que tu ne supprimes pas le 0 à la fin de la chaine que te renvoies GetPrivateProfileString
GetPrivateProfileString est une API et son utilisation n'est pas directe.
Elle te fournit la chaine voulue mais aussi la longueur de la chaine.
Il faut ensuite découper la chaine reçue pour ne garder que les X caractères réels.

Extrait de code exemple de "API-Guide" à propos des APIs :
(NC est le nombre de caractères renvoyés dans la variable Ret)
NC = GetPrivateProfileString(App.Title, "KeyName", "Default", Ret, 255, "C:\test.ini")
If NC <> 0 Then Ret = Left$(Ret, NC)

PS : Je pense qu'avec VB.Net, il doit y avoir des méthodes plus propre dans le Framework pour accéder aux fichiers INI.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 janv. 2009 à 13:31
Aussi : Il faudrait que tu copies/colles ton code pour quon voit éventuellement les erreurs
0

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

Posez votre question
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
17 janv. 2009 à 14:38
bon ça y est ça marche. je ne comprend pas vraiment pourquoi, c'est à force de tatonner avec ce que je trouve sur le ouaib...

pour commencer j'avais recuperé le code suivant :

Private
Declare 

Function GetPrivateProfileString
Lib
"Kernel32"
Alias
"GetPrivateProfileStringA" (
ByVal lpApplicationName
As
String,
ByVal lpKeyName
As
String,
ByVal lpDefault
As
String,
ByVal lpReturnedString
As
String,
ByVal nSize
As
Short,
ByVal lpFileName
As
String)
As
Integer

je l'ai remplacé par celui ci  (difference avec lpReturnedString):

Private
Declare
Function GetPrivateProfileString
Lib
"kernel32.dll"
Alias
"GetPrivateProfileStringA" (
ByVal lpApplicationName
As
String,
ByVal lpKeyName
As
String,
ByVal lpDefault
As
String,
ByVal lpReturnedBuffer
As IntPtr,
ByVal nSize
As
Integer,
ByVal lpFileName
As
String)
As
Integer

_____________
 (débutant inside)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 janv. 2009 à 17:23
Ok
Deuxième différence : Lib "Kernel32" et Lib "Kernel32.dll"
Comme tu n'as jamais coller de code, difficile de trouver la réponse.
Essaye d'être plus précis la prochaine fois. Nous, on n'a pas ton code sous les yeux.
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
18 janv. 2009 à 11:04
ok ! merci quand meme d'avoir essayé

_____________
 (débutant inside)
0
Rejoignez-nous