線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1248
推到 Plurk!
推到 Facebook!

如何指定一個目錄,再改變目錄的名稱?

答題得分者是:hagar
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-03 02:49:14 IP:61.231.xxx.xxx 未訂閱
如c:\dir1\dir2\(dir2是在c:\dir1下的目錄) 要把dir2改名為dir3 請問要如何作? 「堅持」從洗馬桶做起 Aric
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-03 07:45:58 IP:202.39.xxx.xxx 未訂閱
function SetCurrentDir(const Dir: string): Boolean; Description The SetCurrentDir function sets the current directory. The return value is True if the current directory was successfully changed, or False if an error occurred. ex: SetCurrentDir('c:\dir1\dir3\'); --- Everything I say is a lie.
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-03 08:05:35 IP:61.231.xxx.xxx 未訂閱
hagar大大 小弟主要是想改變目錄的名稱(rename a directory) 您說的這個涵數是不是指向一個目錄的位置? 「堅持」從洗馬桶做起 Aric
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-03 08:14:18 IP:202.39.xxx.xxx 未訂閱
uses 
  ShellApi;     procedure RenameDir(DirFrom, DirTo: string); 
var 
  shellinfo: TSHFileOpStruct; 
begin 
  with shellinfo do 
  begin 
    Wnd    := 0; 
    wFunc  := FO_RENAME; 
    pFrom  := PChar(DirFrom); 
    pTo    := PChar(DirTo); 
    fFlags := FOF_FILESONLY or FOF_ALLOWUNDO or 
              FOF_SILENT or FOF_NOCONFIRMATION; 
  end; 
  SHFileOperation(shellinfo); 
end;     procedure TForm1.Button1Click(Sender: TObject); 
begin 
  RenameDir('C:\Dir1\Dir2', 'C:\Dir1\Dir3'); 
end; 
--- Everything I say is a lie.
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-03 08:19:37 IP:61.231.xxx.xxx 未訂閱
原來SHFileOperation rename不只對檔案而以 肛恩 「堅持」從洗馬桶做起 Aric
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-04 00:25:11 IP:211.76.xxx.xxx 未訂閱
不好意思,我試過目錄底下目錄可以 但是根目錄下面的就不行耶 例如 RenameDir('d:\tmp1', 'd:\tmp123'); JackTasy
------
JackTasy
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-04 08:36:54 IP:202.39.xxx.xxx 未訂閱
小弟試是可以的, 可用如下的方式來檢查為何不成功:
procedure TForm1.Button4Click(Sender: TObject);
begin
  if not MoveFile(PChar('C:\temp1'), PChar('C:\temp123')) then
    ShowMessage(SysErrorMessage(GetLastError))
  else
    ShowMessage('更改目錄名成功');
end;
--- Everything I say is a lie.
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-04 13:03:59 IP:61.231.xxx.xxx 未訂閱
小弟也做了測試 如下所showmessage才會正確 不過其怪的很昨日也用 renamedir('c:\temp1','c:\temp123'); 確實不能改 但今日卻能改 這應該又是個我不知道原因的系統資源問題
procedure TForm1.Button1Click(Sender: TObject);
begin
 renamedir('c:temp1\temp1','c:temp1\temp123');//磁碟名後不能有'\'字元
//或renamedir('c:temp1','c:temp123');
  if not MoveFile(PChar('c:\temp1\temp1'), PChar('c:\temp1\temp123')) then
    ShowMessage(SysErrorMessage(GetLastError))
  else
    ShowMessage('更改目錄名成功');
end;
「堅持」從洗馬桶做起 Aric
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-11-12 23:18:51 IP:211.76.xxx.xxx 未訂閱
剛才又試了一次
RenameDir('d:tmp1', 'd:tmp123');  還是不行
換成下面的就可以了....
 if not MoveFile(PChar('d:\tmp1'), PChar('d:\tmp123')) then
    ShowMessage(SysErrorMessage(GetLastError))
  else
    ShowMessage('更改目錄名成功');    不知名的原因...不過就用 MoveFile 吧!    
JackTasy
------
JackTasy
系統時間:2024-07-01 11:41:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!