?? umain.~pas
字號:
unit umain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FileCtrl,uthdthread;
type
TMain = class(TForm)
dcb: TDriveComboBox;
cbbBlockSize: TComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
edtMax: TEdit;
Button1: TButton;
Button2: TButton;
cbbFileSize: TComboBox;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
edtAvr: TEdit;
edtMin: TEdit;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Memo1: TMemo;
ckRepeat: TCheckBox;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
FMaxSpeed: integer;
FAvrSpeed: integer;
FMinSpeed: integer;
procedure SetAvrSpeed(const Value: integer);
procedure SetMaxSpeed(const Value: integer);
procedure SetMinSpeed(const Value: integer);
private
{ Private declarations }
IsAbort :boolean;
TotalSize,TotalTime :DWord;
strlist :TStringlist;
thd :TTHDThread;
// procedure WriteAFile(filename :string;blocksize:integer;filesize:integer);
// procedure TestDriver(Driver :Char;IsRepeat:boolean);
procedure SetControlEnable(Enable:boolean);
public
{ Public declarations }
property MaxSpeed :integer read FMaxSpeed write SetMaxSpeed;
property AvrSpeed :integer read FAvrSpeed write SetAvrSpeed;
property MinSpeed :integer read FMinSpeed write SetMinSpeed;
end;
var
Main: TMain;
implementation
uses uabout;
{$R *.dfm}
{
procedure TMain.WriteAFile(filename: string; blocksize, filesize: integer);
var
hfile :THandle;
buf :array of char;
wrtnlen :dword;
len :dword;
i :integer;
count :integer;
begin
try
hfile := CreateFile(pchar(filename),GENERIC_WRITE,FILE_SHARE_READ ,nil,CREATE_ALWAYS,
FILE_ATTRIBUTE_ARCHIVE,0);
count := filesize*1024 div blocksize;
len := 1024*blocksize;
SetLength(Buf,len);
FillMemory(buf,len,random(255));
for i := 0 to count - 1 do
begin
if IsAbort then
break;
WriteFile(hfile,buf[0],len,wrtnlen,nil);
if IsAbort then
break;
end;
finally
closehandle(hfile);
end;
end;
}
procedure TMain.Button1Click(Sender: TObject);
begin
SetControlEnable(false);
button1.Enabled := false;
IsAbort := False;
// TestDriver(dcb.Drive,ckRepeat.Checked);
thd.Driver := dcb.Drive;
thd.IsRepeat := ckrepeat.Checked;
thd.iBlockSize := strtoint(cbbBlockSize.Text);
thd.iFileSize := strtoint(cbbFileSize.Text);
thd.IsTest := true;
// button1.Enabled := true;
// SetControlEnable(true);
end;
{
procedure TMain.TestDriver(Driver: Char;IsRepeat:boolean);
var
speed :integer;
startTick,EndTick:DWord;
count,i :integer;
dwdiskfree :int64;
filename :string;
begin
repeat
TotalSize := 0;
TotalTime := 0;
maxspeed := 0;
minspeed := 160;
avrspeed := 0;
dwdiskfree := DiskFree(ord(driver) -ord('a')+1);
dwDiskfree := dwDiskFree div 1024 div 1024;
count := dwDiskFree div strtoint(cbbfilesize.text);
for i := 0 to count - 1 do
begin
if IsAbort then
break;
starttick := gettickcount();
filename := driver+':\'+formatdatetime('yymmddh24mnss',now())+'.hdt';
WriteAFile(filename,strtoint(cbbblockSize.text),strtoint(cbbfilesize.text));
strlist.Add(filename);
endtick := gettickcount();
speed := strtoint(cbbfilesize.text) div ((endtick-starttick)div 1000);
if speed > maxspeed then maxspeed := speed;
if Speed < MinSpeed then Minspeed := speed;
TotalSize := TotalSize + strtoint(cbbfilesize.text);
TotalTime := TotalTime + ((endtick-starttick) div 1000);
AvrSpeed := TotalSize div TotalTime ;
if IsAbort then
break;
end;
memo1.Lines.Add(datetimetostr(now())+':');
memo1.Lines.Add('平均速度:'+inttostr(AvrSpeed));
memo1.Lines.Add('最大速度:'+inttostr(MaxSpeed));
memo1.Lines.Add('最小速度:'+inttostr(MinSpeed));
memo1.Lines.Add('');
for i := 0 to strlist.Count - 1 do
begin
deletefile(strlist.Strings[0]);
strlist.Delete(0);
end;
until (not IsRepeat) or (IsAbort)
end;
}
procedure TMain.FormCreate(Sender: TObject);
begin
IsAbort := False;
strlist := TStringList.Create;
thd := TTHDThread.Create(false);
end;
procedure TMain.Button2Click(Sender: TObject);
begin
thd.IsTest := false;
CancelIO(thd.hfile);
button1.Enabled := true;
SetControlEnable(true);
end;
procedure TMain.SetAvrSpeed(const Value: integer);
begin
FAvrSpeed := Value;
edtAvr.Text := inttostr(FAvrSpeed);
end;
procedure TMain.SetMaxSpeed(const Value: integer);
begin
FMaxSpeed := Value;
edtMax.Text := inttostr(FMaxSpeed);
end;
procedure TMain.SetMinSpeed(const Value: integer);
begin
FMinSpeed := Value;
edtMin.Text := inttostr(FMinSpeed);
end;
procedure TMain.SetControlEnable(Enable: boolean);
begin
dcb.Enabled := enable;
cbbblocksize.Enabled := enable;
cbbfilesize.Enabled := enable;
end;
procedure TMain.FormDestroy(Sender: TObject);
begin
strlist.Clear;
strlist.Free;
thd.IsTest := False;
thd.Terminate;
CancelIO(thd.hfile);
thd.Free;
end;
procedure TMain.Button3Click(Sender: TObject);
begin
about := TAbout.Create(self);
about.ShowModal;
about.Free;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -