Trouver la Lettre d'un dossier

jihelb85 Messages postés 4 Date d'inscription jeudi 10 mars 2016 Statut Membre Dernière intervention 25 septembre 2021 - 21 sept. 2021 à 10:13
AbeBar27 Messages postés 28 Date d'inscription mardi 14 septembre 2021 Statut Membre Dernière intervention 18 décembre 2022 - 26 sept. 2021 à 16:25
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

AbeBar27 Messages postés 28 Date d'inscription mardi 14 septembre 2021 Statut Membre Dernière intervention 18 décembre 2022 8
22 sept. 2021 à 14:38
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;

1
AbeBar27 Messages postés 28 Date d'inscription mardi 14 septembre 2021 Statut Membre Dernière intervention 18 décembre 2022 8
24 sept. 2021 à 12:24
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
1
AbeBar27 Messages postés 28 Date d'inscription mardi 14 septembre 2021 Statut Membre Dernière intervention 18 décembre 2022 8
25 sept. 2021 à 14:42
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.
1
AbeBar27 Messages postés 28 Date d'inscription mardi 14 septembre 2021 Statut Membre Dernière intervention 18 décembre 2022 8
26 sept. 2021 à 16:25
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 !
1

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

Posez votre question
jihelb85 Messages postés 4 Date d'inscription jeudi 10 mars 2016 Statut Membre Dernière intervention 25 septembre 2021
Modifié le 24 sept. 2021 à 19:45
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)
0
jihelb85 Messages postés 4 Date d'inscription jeudi 10 mars 2016 Statut Membre Dernière intervention 25 septembre 2021
24 sept. 2021 à 20:46
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)
0
AbeBar27 Messages postés 28 Date d'inscription mardi 14 septembre 2021 Statut Membre Dernière intervention 18 décembre 2022 8
24 sept. 2021 à 22:36
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 ???
0
jihelb85 Messages postés 4 Date d'inscription jeudi 10 mars 2016 Statut Membre Dernière intervention 25 septembre 2021
25 sept. 2021 à 11:42
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 ...
0
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 :)
0
Rejoignez-nous