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

請問怎麼改變檔案的修改時間

尚未結案
millerh
一般會員


發表:10
回覆:10
積分:4
註冊:2004-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-22 20:32:57 IP:61.230.xxx.xxx 未訂閱
有人可以給我一個範例嗎 謝謝
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-22 21:17:17 IP:61.64.xxx.xxx 未訂閱
引言: 有人可以給我一個範例嗎 謝謝
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  // 修改C:\123.txt 的最後修改時間
  HANDLE hFile = CreateFile("C:\\123.txt", GENERIC_WRITE, 0, NULL,
                            OPEN_EXISTING, 0, NULL);
  if (hFile != INVALID_HANDLE_VALUE)
  {
    SYSTEMTIME SystemTime;
    FILETIME FileTime;
    GetSystemTime(&SystemTime); //取得目前系統時間
    SystemTimeToFileTime(&SystemTime, &FileTime); //轉換SYSTEMTIME為FILETIME
    //修改C:\123.txt 的最後修改時間為目前系統時間
    SetFileTime(hFile,
                NULL,
                NULL,
                &FileTime);
  }
}
發表人 - zard 於 2005/01/22 21:22:55
millerh
一般會員


發表:10
回覆:10
積分:4
註冊:2004-12-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-22 21:35:48 IP:61.230.xxx.xxx 未訂閱
引言:
引言: 有人可以給我一個範例嗎 謝謝
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  // 修改C:\123.txt 的最後修改時間
  HANDLE hFile = CreateFile("C:\\123.txt", GENERIC_WRITE, 0, NULL,
                            OPEN_EXISTING, 0, NULL);
  if (hFile != INVALID_HANDLE_VALUE)
  {
    SYSTEMTIME SystemTime;
    FILETIME FileTime;
    GetSystemTime(&SystemTime); //取得目前系統時間
    SystemTimeToFileTime(&SystemTime, &FileTime); //轉換SYSTEMTIME為FILETIME
    //修改C:\123.txt 的最後修改時間為目前系統時間
    SetFileTime(hFile,
                NULL,
                NULL,
                &FileTime);
  }
}
發表人 - zard 於 2005/01/22 21:22:55
我試了一下 但是為什麼Button只有在按第一次有效 按第二次就沒效了?? 還有這一段是幹麻的 SetFileTime(hFile, NULL, NULL, &FileTime); 謝謝~~
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-22 21:41:43 IP:61.64.xxx.xxx 未訂閱
SetFileTime是用來設定檔案時間的
The SetFileTime function sets the date and time that a file was created, last accessed, or last modified.    BOOL SetFileTime(
  HANDLE hFile,
  const FILETIME* lpCreationTime, //產生時間
  const FILETIME* lpLastAccessTime, // 最後存取時間
  const FILETIME* lpLastWriteTime // 最後修改時間
);    只按第一次有效是錯覺, 因為我是用目前系統時間來做為檔案最後修改時間, 所
以你至少要過一分鐘再按才看的出效果(例如經程式修改為9:00, 在這一分鐘內
你按按鈕也看不出效果, 至少要等到9:01才看的出來).
發表人 - zard 於 2005/01/22 22:05:01
millerh
一般會員


發表:10
回覆:10
積分:4
註冊:2004-12-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-22 22:33:28 IP:61.230.xxx.xxx 未訂閱
引言:
SetFileTime是用來設定檔案時間的
The SetFileTime function sets the date and time that a file was created, last accessed, or last modified.    BOOL SetFileTime(
  HANDLE hFile,
  const FILETIME* lpCreationTime, //產生時間
  const FILETIME* lpLastAccessTime, // 最後存取時間
  const FILETIME* lpLastWriteTime // 最後修改時間
);    只按第一次有效是錯覺, 因為我是用目前系統時間來做為檔案最後修改時間, 所
以你至少要過一分鐘再按才看的出效果(例如經程式修改為9:00, 在這一分鐘內
你按按鈕也看不出效果, 至少要等到9:01才看的出來).
發表人 - zard 於 2005/01/22 22:05:01
可是我過了三分鐘再按然後看檔案時間也沒有改變 要把執行檔關掉從跑再按他才會有改變 是因為開檔沒有關檔的關係嗎??? 還有能把所指定的時間存在檔案中嗎 我希望用下列程式所取出來的修改時間放到另一個檔案中 FormatDateTime("yyyy-mm-dd hh:nn:ss", FileDateToDateTime(FileAge(FileName))) 請問要怎麼用 謝謝~~ 發表人 - millerh 於 2005/01/22 22:51:06
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-23 10:48:56 IP:61.64.xxx.xxx 未訂閱
引言: 可是我過了三分鐘再按然後看檔案時間也沒有改變 要把執行檔關掉從跑再按他才會有改變 是因為開檔沒有關檔的關係嗎??? 還有能把所指定的時間存在檔案中嗎 我希望用下列程式所取出來的修改時間放到另一個檔案中 FormatDateTime("yyyy-mm-dd hh:nn:ss", FileDateToDateTime(FileAge(FileName))) 請問要怎麼用 謝謝~~
真抱歉, 突然發現我忘了關閉檔案, 所以第二次按的時候無法開檔, 修正如下 < class="code"> void __fastcall TForm1::Button1Click(TObject *Sender) { // 修改C:\123.txt 的最後修改時間 HANDLE hFile = CreateFile("C:\\123.txt", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hFile != INVALID_HANDLE_VALUE) { SYSTEMTIME SystemTime; FILETIME FileTime; GetSystemTime(&SystemTime); //取得目前系統時間 SystemTimeToFileTime(&SystemTime, &FileTime); //轉換SYSTEMTIME為FILETIME //修改C:\123.txt 的最後修改時間為目前系統時間 SetFileTime(hFile, NULL, NULL, &FileTime); CloseHandle(hFile); } } // 取得c:\123.txt的檔案時間並存到c:\time.txt範例 void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString szFileName = "c:\\123.txt", szFileTime; szFileTime = FormatDateTime("yyyy-mm-dd hh:nn:ss", FileDateToDateTime(FileAge(szFileName))); TStringList* slTime = new TStringList(); slTime->Add(szFileTime); slTime->SaveToFile("c:\\time.txt"); delete slTime; }
millerh
一般會員


發表:10
回覆:10
積分:4
註冊:2004-12-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-23 13:54:19 IP:61.230.xxx.xxx 未訂閱
引言: 真抱歉, 突然發現我忘了關閉檔案, 所以第二次按的時候無法開檔, 修正如下 < class="code"> // 取得c:\123.txt的檔案時間並存到c:\time.txt範例 void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString szFileName = "c:\\123.txt", szFileTime; szFileTime = FormatDateTime("yyyy-mm-dd hh:nn:ss", FileDateToDateTime(FileAge(szFileName))); TStringList* slTime = new TStringList(); slTime->Add(szFileTime); slTime->SaveToFile("c:\\time.txt"); delete slTime; }
我試了一下 但是他只把c:\\time.txt的修改日期和存取日期改成電腦目前的時間 奇怪 怎麼會這樣???@@ 幫忙一下 急救 謝謝~~~~ 發表人 - millerh 於 2005/01/23 20:05:00
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-24 09:04:00 IP:210.243.xxx.xxx 未訂閱
引言:
引言: 真抱歉, 突然發現我忘了關閉檔案, 所以第二次按的時候無法開檔, 修正如下 < class="code"> // 取得c:\123.txt的檔案時間並存到c:\time.txt範例 void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString szFileName = "c:\\123.txt", szFileTime; szFileTime = FormatDateTime("yyyy-mm-dd hh:nn:ss", FileDateToDateTime(FileAge(szFileName))); TStringList* slTime = new TStringList(); slTime->Add(szFileTime); slTime->SaveToFile("c:\\time.txt"); delete slTime; }
我試了一下 但是他只把c:\\time.txt的修改日期和存取日期改成電腦目前的時間 奇怪 怎麼會這樣???@@ 幫忙一下 急救 謝謝~~~~ 發表人 - millerh 於 2005/01/23 20:05:00
我試是沒問題的, 我是用c:\123.txt來測試的, 請先確定c:\123.txt存在, 我加
上下面紅字的碼用來判斷c:\123.txt是否存在. 若找到c:\123.txt會把它的檔案
時間字串放到c:\time.txt.    void __fastcall TForm1::Button2Click(TObject *Sender)
{
  AnsiString szFileName = "c:\\123.txt", szFileTime;
  if (!FileExists(szFileName))
  {
    ShowMessage(szFileName   " Not Found!");
    return;
  }      szFileTime = FormatDateTime("yyyy-mm-dd hh:nn:ss",
                              FileDateToDateTime(FileAge(szFileName)));
  TStringList* slTime = new TStringList();
  slTime->Add(szFileTime);
  slTime->SaveToFile("c:\\time.txt");
  delete slTime;
}
系統時間:2024-05-19 18:53:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!