Ver Mensaje Individual
  #5  
Antiguo 09-03-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Reputación: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Como funcionar... parece que funciona. Sin embargo, me queda la espinita de no saberme quitar de encima el "mapa de unidades" que conformo "directamente" y que creo que puede hacerse de otra forma más elegante. Por lo demás, lo mío, lamentablemente, no son las matemáticas, así que sigo son comprender muy bien qué ocurre a nivel de "bits", quizá algún día... sea como sea, el código podría quedar más o menos así, a modo de ejemplo:

Código Delphi [-]
procedure TForm2.StShellNotification1DriveSpaceChange(
 Sender: TObject; Drive: Cardinal);

const
  DRIVES : array[ 0..25 ] of char =
  (
    'A', 'B', 'C', 'D', 'E', 'F',
    'G', 'H', 'I', 'J', 'K', 'L',
    'M', 'N', 'O', 'P', 'Q', 'R',
    'S', 'T', 'U', 'V', 'W', 'X',
    'Y', 'Z'
  );

var
  i : byte;
  s : string;

begin
  s := '';

  for i := Low( DRIVES ) to High( DRIVES ) do
  begin
    if Drive shr i and 1 = 1 then
    begin
      if s = '' then
        s := DRIVES[ i ]
      else
        s := s +' # '+ DRIVES[ i ];
    end;
  end;

  ShowMessage( 'Drive Space Change in : ' + s );
end;

Por supuesto, cualquier sugerencia será bienvenida.
Responder Con Cita