...enumerate Drives on a Computer?

Author: Thomas Stutz

Category: Files

{
  Adds all fixed drives into Combobox1.
  To enumerate another type of drive,
  i.e all CD-ROMs just change the DRIVE_FIXED constant to DRIVE_CDROM.

  Fügt all fixen Laufwerke in Combobox1 ein.
  Um z.B alle CD-Rom Laufwerke zu ermitteln,
  einfach DRIVE_CDROM anstatt die Konstante DRIVE_FIXED nehmen.
}

procedure List_Drives;
const
  
DRIVE_UNKNOWN = 0;
  DRIVE_NO_ROOT_DIR = 1;
  DRIVE_REMOVABLE = 2;
  DRIVE_FIXED = 3;
  DRIVE_REMOTE = 4;
  DRIVE_CDROM = 5;
  DRIVE_RAMDISK = 6;
var
  
r: LongWord;
  Drives: array[0..128] of char;
  pDrive: PChar;
begin
  
r := GetLogicalDriveStrings(SizeOf(Drives), Drives);
  if r = 0 then Exit;
  if r > SizeOf(Drives) then
    raise 
Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
  pDrive := Drives;
  while pDrive^ <> #0 do
  begin
    if 
GetDriveType(pDrive) = DRIVE_FIXED then
      
Form1.ComboBox1.Items.Add(pDrive);
    Inc(pDrive, 4);
  end;
end;

 

printed from
www.swissdelphicenter.ch
developers knowledge base