全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1358
推到 Plurk!
推到 Facebook!

為什么嗎,我要复制的文件不能完全复制,總是剩下2個?

答題得分者是:tonytop
WWW999
一般會員


發表:18
回覆:19
積分:7
註冊:2005-09-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-12-08 15:03:55 IP:222.161.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-12-10 16:10:40 IP:219.81.xxx.xxx 未訂閱
哇!好長滴程式,下回麻煩用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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-12-12 08:15:20 IP:222.160.xxx.xxx 未訂閱
哇!好長滴程式,下回麻煩用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;能使用吗?怎么做呢?多谢!
系統時間:2024-05-05 13:29:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!