怎么获取本机上所有的硬盘分区的盘符

jefferwind 2005-09-06 09:48:50
怎么获取本机上所有的硬盘分区的盘符
...全文
161 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
风中草帽 2005-09-07
  • 打赏
  • 举报
回复
使用函数BOOL GetDiskFreeSpace(

LPCTSTR lpRootPathName, // address of root path
LPDWORD lpSectorsPerCluster, // address of sectors per cluster
LPDWORD lpBytesPerSector, // address of bytes per sector
LPDWORD lpNumberOfFreeClusters, // address of number of free clusters
LPDWORD lpTotalNumberOfClusters // address of total number of clusters
);

这里有一个例子:
function TsysInfo.GetDrive(drive:String):String;
Var
i:integer;
buffer :String;
spc, bps, nofc,tnoc:dword; //用于存放磁盘容量的变量
Begin
i:=getdrivetype(pchar(drive+':\'));
buffer:=' '+drive+': ';
case i of
DRIVE_UNKNOWN : buffer:=buffer+'未知类型';
DRIVE_REMOVABLE: buffer:=buffer+'软盘';
DRIVE_FIXED : begin
buffer:=buffer+'硬盘';
if getdiskfreespace(pchar(drive+':\'),spc,bps,nofc,tnoc) then
begin
buffer:=buffer+'总容量: '+inttostr((spc*bps*tnoc) div (1024*1024))+'MB';
buffer:=buffer+'剩余: '+inttostr((spc*bps*nofc) div (1024*1024))+'MB';
end;
end;
DRIVE_REMOTE : buffer:=buffer+'网络驱动器';
DRIVE_CDROM :buffer:=buffer+'CD-ROM驱动器';
DRIVE_RAMDISK:buffer:=buffer+'RAM虚拟驱动器';
end;
result := buffer;
End;
xixuemao 2005-09-06
  • 打赏
  • 举报
回复
var
i: Integer;
C: String;
DType: Integer;
DriveString: String;
begin
ListBox1.Clear;
for i := 65 to 90 do
begin
C := chr(i)+':\';
DType := GetDriveType(PChar(C));
case DType of
0: DriveString := C+' 驱动器类型不确定';
1: DriveString := C+' 系统目录不存在';
DRIVE_REMOVABLE: DriveString :=C+' 是可移动驱动器';
DRIVE_FIXED: DriveString :=C+' 是固定驱动器';
DRIVE_REMOTE: DriveString :=C+' 是网络驱动器';
DRIVE_CDROM: DriveString := C+' 是CD-ROM驱动器';
DRIVE_RAMDISK: DriveString := C+' 是虚拟驱动器';
end;
if not ((DType = 0) or (DType = 1)) then
ListBox1.Items.AddObject(DriveString, Pointer(i));
end;
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧