- AnsiString TFrmFindDrive::FindDrive(AnsiString Device)
- {
- /*############################################################################
- ## ~~ Fonction FindDrive By Xanders ~~ ##
- ##--------------------------------------------------------------------------##
- ## Recherche la lettre logique d'un type de disque présent sur le PC ##
- ## Si Device est null la fct retourne tt les lecteurs logique du PC ##
- ## Device accepte: "",REMOVABLE, HD, REMOTE, CDROM et RAMDISK. ##
- ############################################################################*/
- struct TDrive
- {
- AnsiString Lettre;
- AnsiString Type;
- };
- TDrive Lecteur[26];//on déclare 26(comme l'alphabét) structure de type TDrive
- AnsiString ReturnStr;//Chaine de retour de la fct
- int IdDrv = 0;// Identifiant de structure donc de disque
-
- //on détermine le type des lecteurs de 'A' à 'Z' donc de 65 à 90 en hexa
- for(int CharDrv = 65; CharDrv <= 90; CharDrv++)
- {
- //On complete le champs Lettre de nos TDrive et formatage du champs
- Lecteur[IdDrv].Lettre = (char)CharDrv;
- Lecteur[IdDrv].Lettre = Lecteur[IdDrv].Lettre +":";
-
- //on traduit la valeur de retour de GetDriveType
- switch(GetDriveType(Lecteur[IdDrv].Lettre.c_str()))
- {
- case 0:
- //on complète le champs Type d'une TDrive
- Lecteur[IdDrv].Type = "INDET";break;
- case 1:
- Lecteur[IdDrv].Type = "ROOT";break;
- case 2:
- Lecteur[IdDrv].Type = "REMOVABLE";break;
- case 3:
- Lecteur[IdDrv].Type = "HD";break;
- case 4:
- Lecteur[IdDrv].Type = "REMOTE";break;;
- case 5:
- Lecteur[IdDrv].Type = "CDROM";break;
- case 6:
- Lecteur[IdDrv].Type = "RAMDISK";break;
- }
- //ici on traite le paramètre de la fct et le retour
- if(Device != "")//Si présence d'un paramètre
- {
- if(Lecteur[IdDrv].Type == Device)//retour du lecteur avec le type demandé
- {
- if(ReturnStr != "")
- //Si chaine de retour contient déjà des lecteurs logiques
- //placer un espace avant d'ajouté un autre lecteur
- ReturnStr = ReturnStr + " " +Lecteur[IdDrv].Lettre;
- else
- ReturnStr = Lecteur[IdDrv].Lettre;
- }
- }
- else//Sinon retourner tout les lecteurs logiques présent sur la machine
- {
- //Sauf les types Indéterminés et Root
- if((Lecteur[IdDrv].Type != "INDET") && (Lecteur[IdDrv].Type != "ROOT"))
- {
- if(ReturnStr != "")
- ReturnStr = ReturnStr + " " +Lecteur[IdDrv].Lettre;
- else
- ReturnStr = Lecteur[IdDrv].Lettre;
- }
- }
- IdDrv++;
- }
- return ReturnStr;//Fin ...
AnsiString TFrmFindDrive::FindDrive(AnsiString Device)
{
/*############################################################################
## ~~ Fonction FindDrive By Xanders ~~ ##
##--------------------------------------------------------------------------##
## Recherche la lettre logique d'un type de disque présent sur le PC ##
## Si Device est null la fct retourne tt les lecteurs logique du PC ##
## Device accepte: "",REMOVABLE, HD, REMOTE, CDROM et RAMDISK. ##
############################################################################*/
struct TDrive
{
AnsiString Lettre;
AnsiString Type;
};
TDrive Lecteur[26];//on déclare 26(comme l'alphabét) structure de type TDrive
AnsiString ReturnStr;//Chaine de retour de la fct
int IdDrv = 0;// Identifiant de structure donc de disque
//on détermine le type des lecteurs de 'A' à 'Z' donc de 65 à 90 en hexa
for(int CharDrv = 65; CharDrv <= 90; CharDrv++)
{
//On complete le champs Lettre de nos TDrive et formatage du champs
Lecteur[IdDrv].Lettre = (char)CharDrv;
Lecteur[IdDrv].Lettre = Lecteur[IdDrv].Lettre +":";
//on traduit la valeur de retour de GetDriveType
switch(GetDriveType(Lecteur[IdDrv].Lettre.c_str()))
{
case 0:
//on complète le champs Type d'une TDrive
Lecteur[IdDrv].Type = "INDET";break;
case 1:
Lecteur[IdDrv].Type = "ROOT";break;
case 2:
Lecteur[IdDrv].Type = "REMOVABLE";break;
case 3:
Lecteur[IdDrv].Type = "HD";break;
case 4:
Lecteur[IdDrv].Type = "REMOTE";break;;
case 5:
Lecteur[IdDrv].Type = "CDROM";break;
case 6:
Lecteur[IdDrv].Type = "RAMDISK";break;
}
//ici on traite le paramètre de la fct et le retour
if(Device != "")//Si présence d'un paramètre
{
if(Lecteur[IdDrv].Type == Device)//retour du lecteur avec le type demandé
{
if(ReturnStr != "")
//Si chaine de retour contient déjà des lecteurs logiques
//placer un espace avant d'ajouté un autre lecteur
ReturnStr = ReturnStr + " " +Lecteur[IdDrv].Lettre;
else
ReturnStr = Lecteur[IdDrv].Lettre;
}
}
else//Sinon retourner tout les lecteurs logiques présent sur la machine
{
//Sauf les types Indéterminés et Root
if((Lecteur[IdDrv].Type != "INDET") && (Lecteur[IdDrv].Type != "ROOT"))
{
if(ReturnStr != "")
ReturnStr = ReturnStr + " " +Lecteur[IdDrv].Lettre;
else
ReturnStr = Lecteur[IdDrv].Lettre;
}
}
IdDrv++;
}
return ReturnStr;//Fin ...