使用API函数获取磁盘空间及磁盘类型
2004-12-22 23:43
531 查看
procedure TForm1.Button1Click(Sender: TObject);
var
RootPath : string;
Sed_Cluster, Bytes_Sec, Free_Clusters, Total_Clusters : DWord;
begin
Memo1.Clear;
RootPath := 'C:/';
if RootPath<>'' then
begin
GetDiskFreeSpace(PChar(RootPath), Sed_Cluster, Bytes_Sec, Free_Clusters, Total_Clusters);
Memo1.Lines.Add('C盘总空间:'+FloatToStrF(Sed_Cluster* Bytes_Sec*Total_Clusters/1024/1024/1024,ffNumber,8,2)+'G');
Memo1.Lines.Add('C盘可用空间:'+FloatToStrF(Sed_Cluster* Bytes_Sec*Free_Clusters/1024/1024/1024,ffNumber,8,2)+'G');
end;
end;
GetDiskFreeSpace函数不适合磁盘空间超过2GB情况,在此情况应使用GetDiskFreeSpaceEx函数,参考笔者以下代码(GetDriveType函数可以读取磁盘类型):
procedure TForm1.Button1Click(Sender: TObject);
var
RootPath, DriveInfo : string;
Total_Space, Free_Available : Int64;
intDrvTypeID : integer;
dblFree, dblTotal : double;
begin
Memo1.Clear;
RootPath := UpperCase(Copy(DriveComboBox1.Text,1,1));
if RootPath<>'' then
begin
GetDiskFreeSpaceEx(PChar(RootPath + ':/'), Free_Available, Total_Space, nil);
DriveInfo := RootPath + '盘总空间为';
dblTotal := Total_Space/1024/1024/1024;
if dblTotal >= 1 then
DriveInfo := DriveInfo + FloatToStrF(dblTotal,ffNumber,8,2)+'GB。'
else
DriveInfo := DriveInfo + FloatToStrF(dblTotal*1024,ffNumber,8,0)+'MB。';
Memo1.Lines.Add(DriveInfo);
DriveInfo := RootPath + '盘可用空间为';
dblFree := Free_Available/1024/1024/1024;
if dblFree >= 1 then
DriveInfo := DriveInfo + FloatToStrF(dblFree,ffNumber,8,2)+'GB。'
else
DriveInfo := DriveInfo + FloatToStrF(dblFree*1024,ffNumber,8,0)+'MB。';
Memo1.Lines.Add(DriveInfo);
intDrvTypeID := GetDriveType(PChar(RootPath + ':/'));
case intDrvTypeID of
0 : Memo1.Lines.Add('无法获取磁盘类型。' );
1 : Memo1.Lines.Add('磁盘不存在。' );
DRIVE_REMOVABLE : Memo1.Lines.Add('类型:可移动磁盘。' );
DRIVE_FIXED : Memo1.Lines.Add('类型:本地磁盘。' );
DRIVE_REMOTE : Memo1.Lines.Add('类型:网络驱动器。' );
DRIVE_CDROM : Memo1.Lines.Add('类型:CDROM。' );
DRIVE_RAMDISK : Memo1.Lines.Add('类型:RAM存储器。' );
end;
end;
end;
var
RootPath : string;
Sed_Cluster, Bytes_Sec, Free_Clusters, Total_Clusters : DWord;
begin
Memo1.Clear;
RootPath := 'C:/';
if RootPath<>'' then
begin
GetDiskFreeSpace(PChar(RootPath), Sed_Cluster, Bytes_Sec, Free_Clusters, Total_Clusters);
Memo1.Lines.Add('C盘总空间:'+FloatToStrF(Sed_Cluster* Bytes_Sec*Total_Clusters/1024/1024/1024,ffNumber,8,2)+'G');
Memo1.Lines.Add('C盘可用空间:'+FloatToStrF(Sed_Cluster* Bytes_Sec*Free_Clusters/1024/1024/1024,ffNumber,8,2)+'G');
end;
end;
GetDiskFreeSpace函数不适合磁盘空间超过2GB情况,在此情况应使用GetDiskFreeSpaceEx函数,参考笔者以下代码(GetDriveType函数可以读取磁盘类型):
procedure TForm1.Button1Click(Sender: TObject);
var
RootPath, DriveInfo : string;
Total_Space, Free_Available : Int64;
intDrvTypeID : integer;
dblFree, dblTotal : double;
begin
Memo1.Clear;
RootPath := UpperCase(Copy(DriveComboBox1.Text,1,1));
if RootPath<>'' then
begin
GetDiskFreeSpaceEx(PChar(RootPath + ':/'), Free_Available, Total_Space, nil);
DriveInfo := RootPath + '盘总空间为';
dblTotal := Total_Space/1024/1024/1024;
if dblTotal >= 1 then
DriveInfo := DriveInfo + FloatToStrF(dblTotal,ffNumber,8,2)+'GB。'
else
DriveInfo := DriveInfo + FloatToStrF(dblTotal*1024,ffNumber,8,0)+'MB。';
Memo1.Lines.Add(DriveInfo);
DriveInfo := RootPath + '盘可用空间为';
dblFree := Free_Available/1024/1024/1024;
if dblFree >= 1 then
DriveInfo := DriveInfo + FloatToStrF(dblFree,ffNumber,8,2)+'GB。'
else
DriveInfo := DriveInfo + FloatToStrF(dblFree*1024,ffNumber,8,0)+'MB。';
Memo1.Lines.Add(DriveInfo);
intDrvTypeID := GetDriveType(PChar(RootPath + ':/'));
case intDrvTypeID of
0 : Memo1.Lines.Add('无法获取磁盘类型。' );
1 : Memo1.Lines.Add('磁盘不存在。' );
DRIVE_REMOVABLE : Memo1.Lines.Add('类型:可移动磁盘。' );
DRIVE_FIXED : Memo1.Lines.Add('类型:本地磁盘。' );
DRIVE_REMOTE : Memo1.Lines.Add('类型:网络驱动器。' );
DRIVE_CDROM : Memo1.Lines.Add('类型:CDROM。' );
DRIVE_RAMDISK : Memo1.Lines.Add('类型:RAM存储器。' );
end;
end;
end;
相关文章推荐
- 使用IOCTL_DISK_GET_LENGTH_INFO控制码获取磁盘空间大小
- SQL Server--获取磁盘空间使用情况
- 获取磁盘使用空间和剩余空间(代码)
- SQL Server获取磁盘空间使用情况
- 获取磁盘类型及剩余空间 GetDiskFreeSpaceEx GetDriveTypeW GetVolumeInformation
- SQL Server--获取磁盘空间使用情况
- C#在Linux下获取文件夹信息(所在磁盘总大小,使用空间,已用空间,使用率)
- 获取磁盘使用空间和剩余空间
- 让你省写大量重复代码的方法 使用PropertyInfo类 反射获取类 的类型
- 使用StatFs用于获取系统/sdcard存储空间信息 api18中增加的方法
- 使用MFC的API函数获取Window下的特殊目录(例如CSIDL_PERSONAL 我的文档)
- Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据
- qt 获取系统磁盘空间大小
- 获取磁盘类型
- 使用用户控件时,网站运行没有问题,但生成网站时却出错:命名空间“ASP”中不存在类型或命名空间名称“ascx_ub_weightbar_ascx” 的解决方法
- asp.net 获取机器硬件信息(cpu频率、磁盘可用空间、内存容量等)
- 使用表达式树访问对象、类型及成员(上):获取类型和成员的信息
- UNIX系统下监视磁盘空间和使用情况
- SQL Servr 2008空间数据应用系列五:数据表中使用空间数据类型 推荐
- C# 获取磁盘的空间大小