Trouver la Lettre d'un dossier

Signaler
Messages postés
4
Date d'inscription
jeudi 10 mars 2016
Statut
Membre
Dernière intervention
25 septembre 2021
-
Messages postés
16
Date d'inscription
mardi 14 septembre 2021
Statut
Non membre
Dernière intervention
12 octobre 2021
-
Bonjour,
J'ai un dossier en réseau connu comme '\\NOM\Dossier'.
Comment trouver la lettre qui lui est attribuée ?
Merci.

9 réponses

Messages postés
16
Date d'inscription
mardi 14 septembre 2021
Statut
Non membre
Dernière intervention
12 octobre 2021
4
Voila une possibilité :
1- Ajouter les unités Winapi.Windows et System.IOUtils dans la clause USES.
2- Rechercher parmis les disques logiques de la manière suivante
var d: byte; Drives: Cardinal; disc: ANSICHAR;
begin
    Drives:=GetLogicalDrives;  // chaque bit indique si le disque est déclaré (1) ou pas (0)
   d:=0; // le bit de poids 0 correspond au lecteur 'A'
   for disc := 'A' to 'Z' do  begin
    if ((Drives shr d) and 1 =1) AND DirectoryExists(disc+':\Dossier') then  begin 
       // trouvé ! mettre le code voulu
      break; // supprimer si on ne cherche que le premier disque logique
    end;
    inc(d);
  end;

Messages postés
16
Date d'inscription
mardi 14 septembre 2021
Statut
Non membre
Dernière intervention
12 octobre 2021
4
la fonction GetVolumePathNamesForVolumeName déclarée dans Winapi.Windows doit répondre à ça.
Par contre, son utilisations est une peu difficile car les infos sont renvoyées dans un buffer sous forme de chaines à #0 terminal...
Voir ici sa description : https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getvolumepathnamesforvolumenamew
Messages postés
16
Date d'inscription
mardi 14 septembre 2021
Statut
Non membre
Dernière intervention
12 octobre 2021
4
Tu peux télécharger "Delphi community edition" ici : https://www.embarcadero.com/fr/
(dans la rubrique outils gratuits)
Tu auras ainsi la dernière version complète et gratuite. Seul inconvénient, il faut renouveler tous les ans.
Messages postés
16
Date d'inscription
mardi 14 septembre 2021
Statut
Non membre
Dernière intervention
12 octobre 2021
4
J'avais installé la version 10.3.3 (Rio) en mars, sur Win10 64 bits et je ne me souviens pas d'un tel problème.
La seule idée qui me viens est d'exécuter l'installateur en mode administrateur... si tu ne la pas déjà fait !
Courage !
Messages postés
4
Date d'inscription
jeudi 10 mars 2016
Statut
Membre
Dernière intervention
25 septembre 2021

Merci AleBar27 !
J'ai essayé ceci qui marche aussi :

function TesterReseau(alettre: char): boolean;
//true si Drive Reseau
  var nuserie: strM;
begin
  adrivetype:= GetDriveType(pchar(alettre+':\'));
  Result:= (adrivetype in [4]) and
           GetNuSerie(alettre,nuserie) and
           (nuserie <> '0');
end;
........
 var  i: integer;
  for i:= ord('Z') downto ord('P')
  do if TesterReseau(char(i))
     then ...;//c'est OK

Mais je me demandais si il n'y avait pas une fonction donnant la lettre à partir du chemin (dans les Api par exemple)
Messages postés
4
Date d'inscription
jeudi 10 mars 2016
Statut
Membre
Dernière intervention
25 septembre 2021

Encore Merci AleBar27 !
Bravo. Réponse très documentée.
Je vais essayer de traduire l'exemple donné en Delphi.
Je tiendrai au courant.

(Merci @caramel pour la mise en forme de ma 1ère réponse - ce que je ne sais pas faire sur ce site)
Messages postés
16
Date d'inscription
mardi 14 septembre 2021
Statut
Non membre
Dernière intervention
12 octobre 2021
4
Ouais , c'est top si tu arrives en une fonction Delphi qui envoies par exemple une chaine nulle si c'est trouvée !
Le problème, je pense, c'est qu'il ya plusieurs possibilités (réponses) alors comment cchoisir ???
Messages postés
4
Date d'inscription
jeudi 10 mars 2016
Statut
Membre
Dernière intervention
25 septembre 2021

Re-bonjour,
Je n'arrive pas à utiliser "GetVolumePathNamesForVolumeName" car pas trouvé dans mon Delphi Personnel 7.0.
Je n'ai pas d'unité Winapi.Windows (oubien je ne sais pas comment l'obtenir)
(L'unité ShellApi ne me sert pas pour ce problème)
Les aides du menu "Aide" ne sont pas prises en charge par W10 (pas ce problème en w7).
Ou existe-t-il une version de Delphi (gratuite) qui me permettrait d'acceder à cette fonction ???
Merci d'avance pour toute réponse ...
J'ai suivi ton conseil AbeBar27.
Il me télécharge l'installeur de Delphi 10.4 (Sydney) et me mail un n° de série.
1) L'installateur me dit qu'il ne peut pas installer sur mon W10 (à jour). Je passe outre comme proposé.
2) Le N° de série n'est pas reconnu.
Je dois être maudit !!!
Comme je compte passer en W10 64 bits, je vais attendre pour creuser d'avantage mon problème. Je posterai une solution si j'en trouve une.
Merci pour tes conseils :)