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

抱歉我用的簡體中文,沒有轉換過來。如何在复制中,同時選擇兩類我需要的文件?

尚未結案
WWW999
一般會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-07 12:57:21 IP:221.9.xxx.xxx 未訂閱
抱歉我用的簡體中文,沒有轉換過來。 抱歉我用的簡體中文,沒有轉換過來。 如何在复制中,同時選擇兩類我需要的文件? 文件: *-*-6???-* *-*-7???-* procedure TForm1.BitBtn5Click(Sender: TObject); var F:TShFileOpStruct; begin F.wnd:=Handle; F.wFunc:=FO_COPY; {操作方式} F.pFrom:=pchar(edit1.text '\*-*-6???-*'); F.pTo:= pchar(edit2.text); F.fFlags:=FOF_ALLOWUNDO OR FOF_RENAMEONCOLLISION; {操作選項} if ShFileOperation(F)<>0 then ShowMessage('文件拷貝失敗!'); end;
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-07 19:53:44 IP:211.22.xxx.xxx 未訂閱
你的文件格式我不懂,我用我的方式表示。 因為> > 所以 < class="code"> F.pFrom:=pchar(edit1.text '\*.zip' #0 '*.rar' #0 #0 ); 如此應該會套用了吧! ---------------------------------------------- We will either find a way, or make one. -Hannibal -。 發表人 - stallion 於 2005/10/07 19:54:43
WWW999
一般會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-08 12:04:27 IP:222.160.xxx.xxx 未訂閱
你的文件格式我不懂,我用我的方式表示。 因為SDK文件上說: pFrom Pointer to a buffer that specifies one or more source file names. Multiple names must be null-separated. The list of names must be double null-terminated. 所以 F.pFrom:=pchar(edit1.text '\*.zip' #0 '*.rar' #0 #0 ); 如此應該會套用了吧! ---------------------------------------------- We will either find a way, or make one. -Hannibal -。 發表人 - stallion 於 2005/10/07 19:54:43 我是剛學delphi7,多謝指教。 可不可以向您請教另一個問題 *-*-6???-*.1005 *-*-8???-*.0923 *-*-6???-*.0910 以上文件我想通過判斷它們的擴展名,复制到分別為m01~m12文件下的01~31文件夾中。 如何來判斷將它們擴展名?是用ExtractFileExt? 多謝!
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-08 12:51:12 IP:211.22.xxx.xxx 未訂閱
引言: 如何來判斷將它們擴展名?是用ExtractFileExt?
Yes!!! ----------------------------------------------
WWW999
一般會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-08 17:40:55 IP:221.9.xxx.xxx 未訂閱
引言: Yes!!! ---------------------------------------------- We will either find a way, or make one. -Hannibal -。 如何判斷,能不能用我的這文件,舉個例子? 要判斷的文件每一次有很多,我不知道怎么寫代碼。 也可以不寫。 您能回答我,我万分感激!多謝指教!
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-08 18:41:13 IP:211.22.xxx.xxx 未訂閱
var
   Name:AnsiString;
begin
     Name := '235.0923';
     Name := ExtractFileExt(Name);
     if Name ='.1005' then
        ShowMessage('1005')
     else if Name ='.0923' then
        ShowMessage('.0923')
     else
        ShowMessage('none');
end;
---------------------------------------------- We will either find a way, or make one. -Hannibal -。
WWW999
一般會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-10-09 10:28:36 IP:221.9.xxx.xxx 未訂閱
var Name:AnsiString; begin Name := '235.0923'; Name := ExtractFileExt(Name); if Name ='.1005' then ShowMessage('1005') else if Name ='.0923' then ShowMessage('.0923') else ShowMessage('none'); end; 多謝您的回答,謝謝。 可能您理解錯了,我想用這個函數來讀取如*.1005 前兩位的數即10來判斷它應到從k01→k12文件夾中的k10文件夾, 后再取如*.1005后兩位的數即05從01文件夾→31文件夾中的→05文件夾 從k01→k12文件夾每個文件夾都有01→31文件夾 這個問題也許很難,您可以不的回答,再次感謝!!!
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-10-09 13:40:04 IP:61.219.xxx.xxx 未訂閱
引言: 前兩位的數即10來判斷它應到從k01→k12文件夾中的k10文件夾, k01->k12 就是 代表 1->12個月, 每個月的專屬資料夾 后再取如*.1005后兩位的數即05從01文件夾→31文件夾中的→05文件夾 從k01→k12文件夾每個文件夾都有01→31文件夾 就是日期嘍 這個問題也許很難,您可以不的回答,再次感謝!!! 這句話讓人啼笑皆非....
應該是您發問的方式有問題, 借stallion 大大的程式碼改一下
var
  Name:AnsiString;
  mm,dd: String;
begin
  Name := '235.0923';
  Name := ExtractFileExt(Name);
  mm := Copy(Name,2,2); // 取出'09'
  dd := Copy(Name.4,2); // 取出'23'
  edit2.text := '(目的主目錄)' '\k' mm '\' dd '(目的檔名)';
end;
WWW999
一般會員


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-10-10 12:14:39 IP:222.161.xxx.xxx 未訂閱
引言: -------------------------------------------------------------------------------- 前兩位的數即10來判斷它應到從k01→k12文件夾中的k10文件夾, k01->k12 就是 代表 1->12個月, 每個月的專屬資料夾 后再取如*.1005后兩位的數即05從01文件夾→31文件夾中的→05文件夾 從k01→k12文件夾每個文件夾都有01→31文件夾 就是日期嘍 這個問題也許很難,您可以不的回答,再次感謝!!! 這句話讓人啼笑皆非.... -------------------------------------------------------------------------------- 應該是您發問的方式有問題, 借stallion 大大的程式碼改一下 var Name:AnsiString; mm,dd: String; begin Name := '235.0923'; Name := ExtractFileExt(Name); mm := Copy(Name,2,2); // 取出'09' dd := Copy(Name.4,2); // 取出'23' edit2.text := '(目的主目錄)' '\k' mm '\' dd '(目的檔名)'; end; 多謝您的指教! 小弟愚笨 procedure TForm1.BitBtn1Click(Sender: TObject); var strcaption,strdirectory: string; Wstrboot:WideString; begin strcaption:='請選擇一個文件夾'; Selectdirectory(strcaption,Wstrboot,strdirectory); edit1.Text:= strdirectory; if DirectoryExists(Edit1.Text) then FileListBox1.Directory := Edit1.Text; FileListBox2.Directory := Edit1.Text; edit1.Text:= strdirectory; end; procedure TForm1.BitBtn2Click(Sender: TObject); var strcaption,strdirectory: string; Wstrboot:WideString; begin strcaption:='請選擇一個文件夾'; Wstrboot:=''; Selectdirectory(strcaption,Wstrboot,strdirectory); edit2.Text:= strdirectory; end; procedure TForm1.BitBtn5Click(Sender: TObject); var F:TShFileOpStruct; begin F.wnd:=Handle; F.wFunc:=FO_COPY; {操作方式} F.pFrom:=pchar(edit1.text '\*-*-6???-*'); F.pTo:= pchar(edit2.text); F.fFlags:=FOF_ALLOWUNDO OR FOF_RENAMEONCOLLISION; {操作?禎} if ShFileOperation(F)<>0 then ShowMessage('文件拷最失???onst AnsiStrin!'); end; 要在复制程序完成后來執行,是不是要添加子程序? Procedure ExtractFileExt(const AnsiString, FileName); Var Name:AnsiString; mm,dd: String; begin Name := pchar((edit1.text) '\*-*-6???-*.*'); With ExtractFileExt(Name) do mm := Copy(Name,2,2); dd := Copy(Name,4,2); edit2.text := strdirectory '\k' mm '\' dd; end; end. 為什么不能執行?
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-10-10 15:54:10 IP:210.68.xxx.xxx 未訂閱
開新專案, 並在專案所在目錄建立 TestSrc, TestDest 資料夾 將你要 複製的檔案都放到 TestSrc 資料夾下 執行程式....and Good Luck!!  
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellAPI;    type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    var
  StrDirectory: String;
  StrDirectory_From: String;
  StrDirectory_To: String;    function CheckAndCreateDirectory(DestDir: String): Boolean;
begin
  Result := False;
  if not DirectoryExists(DestDir) then
    Result := ForceDirectories(DestDir)
  else
    Result := True;
end;    function CheckFileFormat(sFile: String): Boolean;
begin
  //在這裡檢查檔案格式是不是符合需求
  Result := True;
end;    procedure TForm1.FormShow(Sender: TObject);
var
  tmpStr: String;
  i,j: Integer;
begin
  StrDirectory := ExtractFileDir(ParamStr(0));
  StrDirectory := IncludeTrailingBackslash(StrDirectory);
  StrDirectory_From := IncludeTrailingBackslash(StrDirectory 'TestSrc');
  StrDirectory_To := IncludeTrailingBackslash(StrDirectory 'TestDest');
end;    procedure TForm1.Button1Click(Sender: TObject);
var
  SearchRec: TSearchRec;
  ExtName: String;
  mm,dd: String;
  toPath: String;
  fFrom,fTo: String;
begin
  if DirectoryExists(StrDirectory_From) then
  begin //若指定目錄存在時才做
    if FindFirst(StrDirectory_From   '*.*', faAnyFile, SearchRec) = 0 then
    begin
      repeat
        if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
        begin
          //如果是檔案才做
          if (SearchRec.Attr and faArchive) = faArchive then
          begin
            // 檔案名稱符合規格才做
            if CheckFileFormat(SearchRec.Name) then
            begin
              ExtName := ExtractFileExt(SearchRec.Name);
              mm := Copy(ExtName,2,2); // 取出月份
              dd := Copy(ExtName,4,2); // 取出日期
              if (''<>mm) and (''<>dd) then
              begin
                toPath := IncludeTrailingBackslash(StrDirectory_To 'k' mm) dd;
                // 檢查並建立目的目錄
                if CheckAndCreateDirectory(toPath) then
                begin
                  fFrom := StrDirectory_From SearchRec.Name;
                  fTo := IncludeTrailingBackslash(toPath) SearchRec.Name;
                  try
                    CopyFile(PChar(fFrom), PChar(fTo), false);
                  except
                  end;
                end;
              end;
            end;
          end;
        end;
      until FindNext(SearchRec) <> 0;
    end;
    FindClose(SearchRec);
  end;
end;    end.
WWW999
一般會員


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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-10-10 18:00:07 IP:222.160.xxx.xxx 未訂閱
引言:
開新專案, 並在專案所在目錄建立 TestSrc, TestDest 資料夾 將你要 複製的檔案都放到 TestSrc 資料夾下 執行程式....and Good Luck!! unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShellAPI; type TForm1 = class(TForm) Button1: TButton; procedure FormShow(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var StrDirectory: String; StrDirectory_From: String; StrDirectory_To: String; function CheckAndCreateDirectory(DestDir: String): Boolean; begin Result := False; if not DirectoryExists(DestDir) then Result := ForceDirectories(DestDir) else Result := True; end; function CheckFileFormat(sFile: String): Boolean; begin //在這裡檢查檔案格式是不是符合需求 Result := True; end; procedure TForm1.FormShow(Sender: TObject); var tmpStr: String; i,j: Integer; begin StrDirectory := ExtractFileDir(ParamStr(0)); StrDirectory := IncludeTrailingBackslash(StrDirectory); StrDirectory_From := IncludeTrailingBackslash(StrDirectory 'TestSrc'); StrDirectory_To := IncludeTrailingBackslash(StrDirectory 'TestDest'); end; procedure TForm1.Button1Click(Sender: TObject); var SearchRec: TSearchRec; ExtName: String; mm,dd: String; toPath: String; fFrom,fTo: String; begin if DirectoryExists(StrDirectory_From) then begin //若指定目錄存在時才做 if FindFirst(StrDirectory_From '*.*', faAnyFile, SearchRec) = 0 then begin repeat if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then begin //如果是檔案才做 if (SearchRec.Attr and faArchive) = faArchive then begin // 檔案名稱符合規格才做 if CheckFileFormat(SearchRec.Name) then begin ExtName := ExtractFileExt(SearchRec.Name); mm := Copy(ExtName,2,2); // 取出月份 dd := Copy(ExtName,4,2); // 取出日期 if (''<>mm) and (''<>dd) then begin toPath := IncludeTrailingBackslash(StrDirectory_To 'k' mm) dd; // 檢查並建立目的目錄 if CheckAndCreateDirectory(toPath) then begin fFrom := StrDirectory_From SearchRec.Name; fTo := IncludeTrailingBackslash(toPath) SearchRec.Name; try CopyFile(PChar(fFrom), PChar(fTo), false); except end; end; end; end; end; end; until FindNext(SearchRec) <> 0; end; FindClose(SearchRec); end; end; end. 多謝您的回答!
系統時間:2024-05-03 18:31:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!