procedure GetDrvs; 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; I : Integer; 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_UNKNOWN then WriteLn(pDrive); Inc(pDrive, 4); end; end; end;