Ir ao topo

Tecnobyte

Logomarca da Tecnobyte
Contato por WhatsApp

WhatsApp

(69) 3421-6756

Contato por Telefone

(69) 3421-6756

(69) 3421-6757

Enviar mensagem

Enviar

mensagem

Contato por Facebook

Facebook

Vídeos

Vídeos

Atendimento de segunda a sexta, das 08h00 às 19h00 (horário de Brasília).

Banner

Delphi - Arquivos, Diretórios e Discos

Como listar as unidades de armazenamento disponíveis (discos/drives)?

As três funções mostradas abaixo retornam as unidades de armazenamento disponíveis no computador, sendo que as duas primeiras são equivalentes, enquanto que a terceira tem um retorno um pouco diferente.

  • Inclua na seção uses: Windows, SysUtils, Dialogs
  • Copie e cole as funções a seguir logo abaixo da palavra implementation no teu código-fonte.
function PegaUnidades1: string;
var
  Drives: DWord;
  I: Byte;
begin
  Result := '';
  Drives := GetLogicalDrives;
  if Drives <> 0 then
  begin
    for I := 0 to 25 do { A..Z }
    begin
       if Drives and (1 shl I) <> 0 then
         Result := Result + Char(65 + I) { 65='A' }
    end;
  end;
end;

function PegaUnidades2: string;
var
  Unidade: AnsiChar;
begin
  Result := '';
  for Unidade := 'A' to 'Z' do
  begin
    if GetDriveType(PAnsiChar(Unidade + ':\')) > 1 then
      Result := Result + Unidade;
  end;
end;

function PegaUnidades3: string;
var
  Retorno: Cardinal;
  Unidades: array[0..104] of AnsiChar; { 26 * 4 + 1 bytes }
  Unidade: PAnsiChar;
begin
  Result := '';
	Retorno := GetLogicalDriveStrings(SizeOf(Unidades) - 1, Unidades);
  if Retorno > 0 then
  begin
    Unidade := Unidades;
    while Unidade^ <> #0 do
    begin
      if Result <> '' then
        Result := Result + #13;
      Result := Result + string(Unidade);
      Inc(Unidade, 4);
    end;
  end else
    RaiseLastOSError;
end;

Para testar...

  • Coloque um botão no formulário.
  • Programe o evento OnClick deste botão como segue.

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Retorno de PegaUnidades1:'#13 + PegaUnidades1);
  ShowMessage('Retorno de PegaUnidades2:'#13 + PegaUnidades2);
  ShowMessage('Retorno de PegaUnidades3:'#13 + PegaUnidades3);
end;

O conteúdo desta página pode ajudar alguém? Compartilhe!