Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Listar unidades disponibles con Filtro (https://www.clubdelphi.com/foros/showthread.php?t=43633)

MaMu 16-05-2007 17:13:08

Listar unidades disponibles con Filtro
 
Como puedo hacer para listar en un ComboBox, todas las unidades de disco que tengo en mi compu, osea A:, C:, D:, etc.
Y ahora lo complicado, como puedo hacer para filtrar la lista de unidades, es decir, quiero listar todas las unidades de disco que no sean del disco rígido, ni C: ni ninguna otra asignada si es que hay particiones. Por ejemplo, solo quiero listar disketeras, unidades de CD, lector de memorias, etc.
Se como hacer para saber si hay un CD o Diskette en la unidad, pero hacer este filtro no se me ocurre como.

Alguna idea?

Saludos y Gracias

MaMu 16-05-2007 17:46:43

Esto me servirá, si tengo conectado por USB un lector de memorias? Es lo unico que se me ocurrió en base a lo que anduve leyendo en el foro.

Código Delphi [-]
procedure GetDrivers;
var
  i ,j, nUnidad: integer;
  cRutaIni : String;
  DType : Integer;
  DriveString : String;
 begin
  j := 0;
  for i:=65 to 90 do
  begin
    cRutaIni:= chr(i) + ':\';
    DType := GetDriveType(Pchar(cRutaIni));
    case DType of
         0               : DriveString := ' Disco No Reconocido';
         1               : DriveString := ' Sin Directorio Raiz';
         DRIVE_REMOVABLE : DriveString := ' Unidad de Diskette';
         DRIVE_FIXED     : DriveString := ' Unidad de Disco';
         DRIVE_REMOTE    : DriveString := ' Unidad de Red';
         DRIVE_CDROM     : DriveString := ' Unidad de CD-ROM';
         DRIVE_RAMDISK   : DriveString := ' Unidad de Disco RAM';
    end;
      //Filtro las unidades, use los string, pero lo puedo hacer segun el valor de Dtype, con integers
       if (DriveString<>' Sin Directorio Raiz') and  (DriveString<>' Unidad de Disco') and (DriveString<>' Unidad de Red')
    then begin
       Form1.Memo1.Lines.Add(cRutaIni+' '+DriveString);
       end;
   end;
end;

Nota: el lector de memorias, lo tengo fijo, no lo desconecto nunca.

Saludos y Gracias

cHackAll 16-05-2007 21:51:30

Mmmm
 
Lo mismo que lo tuyo:

Código Delphi [-]
procedure GetDrives;
var Drive: Char;
begin
 for Drive := 'A' to 'Z' do
  begin
   if GetDriveType(PChar(Drive + ':\')) in [DRIVE_REMOVABLE, DRIVE_CDROM, DRIVE_RAMDISK] then
    Form1.Memo1.Lines.Add(Drive + ':');
   end;
end;

No entiendo lo que quieres concretamente. tu mismo te respondiste!

MaMu 17-05-2007 00:15:33

Jeje, es cierto. Pero mi duda, radica en si esto me sirve para las unidades del lector usb de memorias, de la camara de fotos, si me va a funcionar si problemas. Osea, que tipo de unidad seria, removible?

Saludos

seoane 17-05-2007 00:35:25

Cita:

Empezado por mamu
Jeje, es cierto. Pero mi duda, radica en si esto me sirve para las unidades del lector usb de memorias, de la camara de fotos, si me va a funcionar si problemas. Osea, que tipo de unidad seria, removible?

Pues depende, no todos los dispositivos usb son "removibles". Aunque hablando de cámaras digitales y tarjetas de memoria, lo mas probable es que estén marcados como "removibles".


La franja horaria es GMT +2. Ahora son las 07:01:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi