AliReza Vafakhah
چهارشنبه 04 آذر 1388, 20:31 عصر
سلام دوستان عزیز
من در برنامه باید 317 فایل رو جستجو کنم که این کار را با Thread کردم و می خوام در هین جستجو یک Progress هم به کاربر اعلام کنه صبر کنید و دائم به مقدار Max برسه و سپس صفر بشه ، خوب مشکل من اینجاست که وقتی از این Progress استفاده می کنم زمان کار Thread هم بیشتر میشه ! از دوستان پیشنهادی دارن که سرعت کار Thread پایین نیاد
آیا کار کرد Progress روی Thread تاثیر میگذاره ؟
{ ThrSearchFile }
procedure ThrSearchFile.Execute;
function GetNumberPage(const S:string):Integer;
var
i:Integer;
StrResult,Sm:string;
begin
for i:= 1 to Length(s) do
begin
Sm:=MidStr(s,i,1);
if ((Sm='-')or(Sm='.')) then Break;
StrResult:=StrResult+MidStr(s,i,1);
end;
Result:=StrToInt(StrResult);
end;
procedure SortArray();
var
i,j:Integer;
si,sj:Integer;
sTemp:string;
begin
for I := 0 to High(PageAddress) do
begin
ProgressA;
for j := 0 to High(PageAddress) do
begin
si:=GetNumberPage(PageAddress[i]);
sj:=GetNumberPage(PageAddress[j]);
if (si<sj) then
begin
sTemp:=PageAddress[i];
PageAddress[i]:=PageAddress[j];
PageAddress[j]:=sTemp
end;
end;
end;
end;
var
FindRec:TSearchRec;
i:Integer;
begin
i:=0;
if (FindFirst(GetCurrentDir+'\Book Scan\*.jpg',faAnyFile,FindRec)=0)then
begin
repeat
if (FindRec.Attr and faAnyFile)=FindRec.Attr then
begin
PageAddress[i]:=FindRec.Name;
inc(i);
ProgressA;
end;
until (FindNext(FindRec)<>0);
end;
FindClose(FindRec);
SortArray;
TForm1(Form1).sPanel1.Visible:=False;
TForm1(Form1).Enabled:=True;
end;
procedure ThrSearchFile.ProgressA;
begin
TForm1(Form1).PrgLoad.Position:=TForm1(Form1).PrgL oad.Position+50;
if (TForm1(Form1).PrgLoad.Position=TForm1(Form1).PrgL oad.Max) then
TForm1(Form1).PrgLoad.Position:=0
end;
من در برنامه باید 317 فایل رو جستجو کنم که این کار را با Thread کردم و می خوام در هین جستجو یک Progress هم به کاربر اعلام کنه صبر کنید و دائم به مقدار Max برسه و سپس صفر بشه ، خوب مشکل من اینجاست که وقتی از این Progress استفاده می کنم زمان کار Thread هم بیشتر میشه ! از دوستان پیشنهادی دارن که سرعت کار Thread پایین نیاد
آیا کار کرد Progress روی Thread تاثیر میگذاره ؟
{ ThrSearchFile }
procedure ThrSearchFile.Execute;
function GetNumberPage(const S:string):Integer;
var
i:Integer;
StrResult,Sm:string;
begin
for i:= 1 to Length(s) do
begin
Sm:=MidStr(s,i,1);
if ((Sm='-')or(Sm='.')) then Break;
StrResult:=StrResult+MidStr(s,i,1);
end;
Result:=StrToInt(StrResult);
end;
procedure SortArray();
var
i,j:Integer;
si,sj:Integer;
sTemp:string;
begin
for I := 0 to High(PageAddress) do
begin
ProgressA;
for j := 0 to High(PageAddress) do
begin
si:=GetNumberPage(PageAddress[i]);
sj:=GetNumberPage(PageAddress[j]);
if (si<sj) then
begin
sTemp:=PageAddress[i];
PageAddress[i]:=PageAddress[j];
PageAddress[j]:=sTemp
end;
end;
end;
end;
var
FindRec:TSearchRec;
i:Integer;
begin
i:=0;
if (FindFirst(GetCurrentDir+'\Book Scan\*.jpg',faAnyFile,FindRec)=0)then
begin
repeat
if (FindRec.Attr and faAnyFile)=FindRec.Attr then
begin
PageAddress[i]:=FindRec.Name;
inc(i);
ProgressA;
end;
until (FindNext(FindRec)<>0);
end;
FindClose(FindRec);
SortArray;
TForm1(Form1).sPanel1.Visible:=False;
TForm1(Form1).Enabled:=True;
end;
procedure ThrSearchFile.ProgressA;
begin
TForm1(Form1).PrgLoad.Position:=TForm1(Form1).PrgL oad.Position+50;
if (TForm1(Form1).PrgLoad.Position=TForm1(Form1).PrgL oad.Max) then
TForm1(Form1).PrgLoad.Position:=0
end;