mdelahais
Messages postés30Date d'inscriptionmercredi 24 mars 2004StatutMembreDernière intervention16 juin 2009
-
23 févr. 2005 à 15:15
mdelahais
Messages postés30Date d'inscriptionmercredi 24 mars 2004StatutMembreDernière intervention16 juin 2009
-
23 févr. 2005 à 16:52
Bonjour,
Je travaille avec en VB6. Grâce à un DriveListBox, un DirListBox et un FileListBox, je sélectionne un fichier dans un répertoire. Le problème est que je travaille avec des disques réseaux. Or sur chaque poste, le nom des disques est différents (parfois c'est D, parfois c'est E...). Je voudrais donc travailler avec des chemins relatifs du type [file://\\Monserveur\MesDonnees\MesDocs\ \\Monserveur\MesDonnees\MesDocs\] plutôt qu'avec un chemin du type D:\MesDonness\MesDocs.
Pourriez vous me donner un coup de main?
Un grand merci d'avance.
Matthieu
mdelahais
Messages postés30Date d'inscriptionmercredi 24 mars 2004StatutMembreDernière intervention16 juin 20091 23 févr. 2005 à 16:52
J'ai trouvé de mon côté une solution un peu bancale mais qui me convient tout à fait.
En fait, je sélectionne mon fichier (disque, répertoire, nom fichier) avec un nom de répertoire absolu.
Ensuite, je récupère la variable Drive1.drive qui me donne quelque chose dans le style :
"e: [\\MonDisque]". A partir de cette valeur et en bidouillant les chaines de caractères, j'arrive à m'y retrouver. je vous donne la formule que j'utilise pour avoir mon nom de chemin relatif.
cheminRelatif=Mid(Drive1.Drive, 5, Len(Drive1.Drive) - 6) & Mid(File1.Path, 3) & "" & File1.FileName
Donc, si j'ai sélectionné le fichier suivant E:\MonDossier\MonFichier.doc, grâce à ma "fonction", cheminRelatif prend la valeur \\MonDisque\MonDossier\MonFichier.doc.
Un grand merci quand même pour votre aide. J'espère que ceci pour aider quelqu'un un jour.
cbnet
Messages postés176Date d'inscriptionvendredi 29 octobre 2004StatutMembreDernière intervention 7 mars 2005 23 févr. 2005 à 16:06
Je ne suis pas certain qu'on puisse se servir des chemins UNC.
D'ailleurs si quelqu'un sait ce serait interessant. Quand a ton prog,
je ne vois pas trop le probleme concernant les lecteurs reseaux, ton
DriveListBox est dynamique, il s'adaptera donc a la configuration des
lettres de lecteurs specifiques a chaque PC.
Il doit cependant y avoir un moyen de connaitre le nom du PC et son
equivalent en lettre de lecteur par les API, un peu comme lorsqu'on
liste les lecteurs reseaux d'un PC avec la commande "net use".
Pour les API, je connais pas les declarations exactes, mais si tu
regardes sur cette page, tu trouveras probablement ce que tu cherches.
mdelahais
Messages postés30Date d'inscriptionmercredi 24 mars 2004StatutMembreDernière intervention16 juin 20091 23 févr. 2005 à 16:15
Le problème est que j'utilise cette application (avec les treeview et tout le bataclan) pour récupérer des fichiers avec leur chemin d'accès que je mémorise dans une table. Donc, pour pouvoir utiliser mes fichiers depuis n'importe quel poste, il me faut des chemins relatifs.
jmp77
Messages postés1119Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention 4 octobre 20067 23 févr. 2005 à 16:39
Hello,
Désolé mais je ne suis pas programmeur visual mais delphi. Cependant je
cherchais des infos sur un truc et je suis tombé sur ton message. En
delphi je fais effectivement cette transformation d'un chemin absolu
vers un chemin relatif. Je te donne la procedure que j'utilise pour le
faire j'espere qu'elle pourra t'aiguiller sur la bonne voie :
Avec
Drive : Le chemin par exemple F:\Data\MonFichier.xls
NetWorkDrive : Renvoie le nom relatif de F:\
Messages : Renvoie les messages d'erreur eventuels
Result : Dis si tout c'est bien déroulé.
procedure NetworkName(Drive : String;var NetworkDrive,Messages : String;var Result : Boolean);
var
HandleEnum:THandle;
NbRessources:DWord;
Buffer:array[1..50]of Netresource; // attention à le dimensionner correctement en fonction de votre réseau
TailleBuffer : DWord;
NumErreur,I : Integer;
begin
Result := False;
Drive := Copy(Drive,1,2);
NbRessources:=$FFFFFFFF;
TailleBuffer:=SizeOf(Buffer);
If WNetOpenEnum(RESOURCE_CONNECTED,RESOURCETYPE_ANY,0,nil,HandleEnum)<>NO_ERROR then
Messages := 'Impossible de définir le lecteur réseau'