硬盘分区容量计算原理详见http://blog.csdn.net/dfyy88/archive/2009/10/07/4640228.aspx
程序界面:
Delphi源码如下:
unit Fdisk;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Math, ShellAPI;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
GroupBox1: TGroupBox;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Label3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label3MouseLeave(Sender: TObject);
procedure Label3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Gvol, MFvol, MNvol :real;
begin
if (Edit1.Text='') or (strtofloat(Edit1.Text)<0.004) then
begin
Label2.Font.Color:= clRed;
Label2.Caption:='请输入正确的分区容量';
end
else
begin
Label2.Font.Color:= clBlue; //设置字体颜色为蓝色
Gvol:=strtofloat(Edit1.Text); //读取输入的分区容量
MFvol:=(Gvol-1)*4+Gvol*1024; //FAT32格式分区设置容量
MNvol:=ceil(ceil(Gvol*1024/7.84423828125)*7.84423828125); //NTFS格式分区设置容量。512Byte×255×63=8225280Byte=7.84423828125 MB
Label2.Caption:='FAT32格式 '+floattostr(MFvol)+' MB'+#10+'NTFS 格式 '+floattostr(MNvol)+' MB';
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (pos('.',Edit1.Text)>0) and (Key='.') then //控制文本框内只能输入一个小数点
begin
Key:=#0;
exit;
end;
if not (Key in ['0'..'9','.',#8]) then //控制文本框内只能输入≥0的实数
Key:=#0;
end;
procedure TForm1.Label3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Label3.Font.Color:=clBlue; //设置Label3的字体颜色为蓝色
Label3.Font.Style:=[fsUnderline]; //设置Label3的字体带下划线
Label3.Cursor:=crHandpoint; //设置Label3鼠标形状为手型
end;
procedure TForm1.Label3MouseLeave(Sender: TObject);
begin
Label3.Font.Color:=clWindowText; //恢复Label3的字体颜色
Label3.Font.Style:=[]; //恢复Label3的字体(去掉下划线)
Label3.Cursor:=crDefault; //恢复Label3鼠标形状为默认
end;
procedure TForm1.Label3Click(Sender: TObject);
begin
ShellExecute(Handle, 'open', 'http://blog.csdn.net/dfyy88', nil, nil, SW_SHOWNORMAL); //当点击Label3时打开我的博客主页
end;
end.