这是一个测试驱动器空间的程序,可是他得出的结果怎么不合实际的一样,百分比都是百分之一百多。请问错在那里?
unit disdtest;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin;type
TForm1 = class(TForm)
SpinEdit1: TSpinEdit;
procedure SpinEdit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
s1,s2,ss:string;
AmtFree,Total,N_parameter:integer;
implementation{$R *.dfm}procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
N_parameter:=spinedit1.Value;
AmtFree:=DiskFree(N_parameter);
total:=DiskSize(N_parameter);
case N_parameter of
0: ss:='当前';
1: ss:='A';
2: ss:='C';
3: ss:='D';
4: ss:='E';
5: ss:='F';
6: ss:='G';
else
ss:='无次驱动器';
end;
if ss='无次驱动器' then
showmessage(ss)
else
s1:=ss+'驱动器上有'+floatToStr(round(AmtFree/Total*100))+'%的剩余空间';
s2:=IntToStr(AmtFree div 1024)+ 'k bytes free';
canvas.TextOut(60,10,s1+s2);
end;end.
unit disdtest;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin;type
TForm1 = class(TForm)
SpinEdit1: TSpinEdit;
procedure SpinEdit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
s1,s2,ss:string;
AmtFree,Total,N_parameter:integer;
implementation{$R *.dfm}procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
N_parameter:=spinedit1.Value;
AmtFree:=DiskFree(N_parameter);
total:=DiskSize(N_parameter);
case N_parameter of
0: ss:='当前';
1: ss:='A';
2: ss:='C';
3: ss:='D';
4: ss:='E';
5: ss:='F';
6: ss:='G';
else
ss:='无次驱动器';
end;
if ss='无次驱动器' then
showmessage(ss)
else
s1:=ss+'驱动器上有'+floatToStr(round(AmtFree/Total*100))+'%的剩余空间';
s2:=IntToStr(AmtFree div 1024)+ 'k bytes free';
canvas.TextOut(60,10,s1+s2);
end;end.
解决方案 »
- MDIform的菜单显示小问题
- 大量图书出让(包括计算机、科普、文学、历史等),有同好者不妨进来看看。
- 哪位知道在dbgrid中对数据库进行编辑的时候,其过程具体是怎样的?
- ★★求教:Microsoft Speech SDK5.1语音识别问题★★★★★★
- adoquery中的sql语句,当where后面有多个条件时,引号怎么分配?
- 高手看过来,一个简单的定时器(闹钟)问题
- 要去浙江了~~~散分!!!
- 挑战设计界面极限
- 在dbgrid或dbgridEh中怎样实现第一行是整行,而第二行分成两列或几列这样的标题呢?
- 在DBGrid的OnTitleClick事件中这样写:select * from users order by column.fieldname 好象不行
- 基本问题:DELPHI程序发布要设置什么吗?
- 请教TClientSocket及TServerSocket用法
1、n_parameter=2 ss = 'B', 以此类推
2、超过100%是因为溢出的问题,把total, amtfree改成Int64类型就可以了