為什么嗎,我要复制的文件不能完全复制,總是剩下2個? |
答題得分者是:tonytop
|
WWW999
一般會員 發表:18 回覆:19 積分:7 註冊:2005-09-26 發送簡訊給我 |
private
{ Private declarations }
function MyMoveFile:boolean; public
{ Public declarations } end;
var
Form1: TForm1; function GetDensityDir:string;
implementation {$R *.dfm}
function GetDensityDir:string;
var
sysTime:TSystemTime;
strTemp:string;
begin
GetLocalTime(sysTime);
strTemp:=IntToStr(SysTime.wDay);
if SysTime.wDay<10 then strTemp:='0' strTemp;
Result:='\d' StrTemp;
StrTemp:=IntToStr(SysTime.wMonth);
if SysTime.wMonth<10 then StrTemp:='0' StrTemp;
Result:='\m' StrTemp Result;
end; procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if not DirectoryExists(Edit1.text) then
showmessage('错误!不存在此目录')
else
if MyMoveFile then showMessage('Ok')
else showMessage('Failed');
end; procedure TForm1.BitBtn2Click(Sender: TObject);
var
strTemp:string;
begin
if selectdirectory('请选择目录','',strTemp) then
edit1.Text:=strTemp; end; function TForm1. MyMoveFile: boolean;
var
iFindResult1,i: integer;
SearchRec1: TSearchRec;
mylist:Tstringlist;
sourcedir,densitydir:string;
bFailed:bool;
begin
bFailed:=false; //失败
mylist:=Tstringlist.Create;
sourcedir:= Edit1.Text;
densitydir:= Edit2.Text GetDensityDir; if not DirectoryExists(Edit2.text) then
begin
bFailed:=true;
showmessage('不存在路径:' Edit2.Text);
end; if not directoryexists(SourceDir) then
begin
bFailed:=true;
showmessage('不存在路径:' SourceDir);
end; if not DirectoryExists(DensityDir) then
begin
//bFailed:=true;
//showMessage('不存在路径:' DensityDir);
i:=LastDelimiter('\',DensityDir);
if not DirectoryExists(Copy(DensityDir,1,i-1)) then
CreateDir(Copy(DensityDir,1,i-1));
if not DirectoryExists(DensityDir) then
CreateDir(DensityDir);
end;
if not bFailed then
begin
iFindResult1 := FindFirst(sourcedir '\' '88888-*-*-*.????',faAnyFile, SearchRec1);
FindNext(SearchRec1);
while FindNext(SearchRec1) = 0 do
begin
//iFindResult1 := FindNext(SearchRec1);
MyList.Append(SearchRec1.Name);
end;
//MyList.Delete(MyList.Count-1);
FindClose(SearchRec1);
filelistbox1.Items.Clear;
filelistbox1.Items.AddStrings(MyList);
for i:=0 to mylist.Count-1 do
begin
if bFailed then Break;
begin
if not CopyFile(pchar(sourcedir '\' mylist.Strings[i]),
pchar(densitydir '\' mylist.Strings[i]),false) then bFailed:=true;
if not DeleteFile(sourcedir '\' mylist.strings[i]) then bFailed:=true;
filelistbox1.Update;
end;
end;
end;
result:= not bFailed;
end; procedure TForm1.FileListBox1Change(Sender: TObject);
begin
if DirectoryExists(Edit1.Text) then
FileListBox1.Directory := Edit1.Text;
end; procedure TForm1.Timer1Timer(Sender: TObject); var
SearchRec1: TSearchRec;
sourcedir:string; begin
sourcedir:=Edit1.Text ; FindFirst( sourcedir '\' '*.*',faAnyFile, SearchRec1);
findnext(SearchRec1);
if FindNext(SearchRec1)=0 then Beep;
FindClose(SearchRec1); end;
|
tonytop
中階會員 發表:6 回覆:114 積分:89 註冊:2003-12-04 發送簡訊給我 |
哇!好長滴程式,下回麻煩用code方式貼唷!
仔細看看你的程式,你在MyList.Append(SearchRec1.Name); 這指令前執行了兩次FindNext(SearchRec1)指令,因為每執行一次FindNext(SearchRec1)指令就會找到下一個檔案,你執行兩次所以會少兩個檔案囉!瞭解了嗎?看看底下新的那段吧!
{把這段改掉 iFindResult1 := FindFirst(sourcedir '\' '88888-*-*-*.????', faAnyFile, SearchRec1); FindNext(SearchRec1); while FindNext(SearchRec1) = 0 do begin //iFindResult1 := FindNext(SearchRec1); MyList.Append(SearchRec1.Name); end; } //以下是新的 if FindFirst(sourcedir '\' '88888-*-*-*.????', faAnyFile, SearchRec1) = 0 then begin repeat if (SearchRec1.Attr and faAnyFile) = SearchRec1.Attr then MyList.Append(SearchRec1.Name); until FindNext(SearchRec1) <> 0; end;☆俺要升級啊☆ |
WWW999
一般會員 發表:18 回覆:19 積分:7 註冊:2005-09-26 發送簡訊給我 |
哇!好長滴程式,下回麻煩用code方式貼唷!
仔細看看你的程式,你在MyList.Append(SearchRec1.Name); 這指令前執行了兩次FindNext(SearchRec1)指令,因為每執行一次FindNext(SearchRec1)指令就會找到下一個檔案,你執行兩次所以會少兩個檔案囉!瞭解了嗎?看看底下新的那段吧! {把這段改掉
iFindResult1 := FindFirst(sourcedir '\' '88888-*-*-*.????', faAnyFile, SearchRec1);
FindNext(SearchRec1);
while FindNext(SearchRec1) = 0 do
begin
//iFindResult1 := FindNext(SearchRec1);
MyList.Append(SearchRec1.Name);
end;
}
//以下是新的
if FindFirst(sourcedir '\' '88888-*-*-*.????', faAnyFile, SearchRec1) = 0 then
begin
repeat
if (SearchRec1.Attr and faAnyFile) = SearchRec1.Attr then
MyList.Append(SearchRec1.Name);
until FindNext(SearchRec1) <> 0;
end; ☆俺要升級啊☆ 多谢您的回答,问题解决了。 我想再次使用function MyMoveFile: boolean;能使用吗?怎么做呢?多谢!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |