Ver Mensaje Individual
  #9  
Antiguo 17-10-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Saliéndome un poco del planteo inicial de danielmj...

Código Delphi [-]
...
procedure TForm1.FormCreate(Sender: TObject);
var
  Device  : DWORD;
  U  : string;
  i  : Integer;
begin
  Device := GetLogicalDrives;
  for i := 1 to 32 do
    if Device shr i and 1 = 1 then
    begin
      U:= Chr(Ord('A') + i) + ':';
      if GetDriveType(PChar(U)) in [DRIVE_REMOVABLE, DRIVE_FIXED] then
        ComboBox1.Items.Add(U);
    end;
  ComboBox1.ItemIndex := 0;
end;


function DriveReady(Drv: string): Boolean;
var
  MaxLen, SysFlags: DWORD;
  SNumber: DWORD;
  OldErr,Error : DWORD;
  Msg   : string;
begin
  OldErr := SetErrorMode(SEM_FAILCRITICALERRORS);
  try
    if GetVolumeInformation(PChar(Drv+'\'),nil,0,@SNumber,MaxLen,SysFlags,nil,0) then
     Result:= True
    else
    begin
      Error := GetLastError;
      case Error of
          ERROR_INVALID_NAME       : Msg := 'Nobre de archivo, de directorio o etiqueta de volumen inválido';
          ERROR_PATH_NOT_FOUND     : Msg := 'Ruta no encontrada';
          ERROR_TOO_MANY_OPEN_FILES: Msg := 'Demasiados archivos abiertos';
          ERROR_ACCESS_DENIED      : Msg := 'Acceso denegado';
          ERROR_WRITE_PROTECT      : Msg := 'Unidad protegida contra escritura';
          ERROR_NOT_READY          : Msg := 'La unidad no esta lista';
          ERROR_NOT_DOS_DISK       : Msg := 'El disco especificado no puede ser accedido';
          ERROR_HANDLE_DISK_FULL   : Msg := 'Disco lleno';
          ERROR_INVALID_DRIVE,
          ERROR_BAD_UNIT           : Msg := 'No se puede encontrar la unidad especificada';
          // ...
       end;
       raise Exception.Create(Msg);
    end;
  finally
    SetErrorMode(OldErr);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if DriveReady(ComboBox1.Text) then
  begin
    // Guardar contenido del Memo
  end;
end;

Para contemplar mas errores revisa: System Error Codes

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita