VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

使用 WIN API 更改檔案建立修改日期

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 1 樓

發表發表於: 星期六 四月 24, 2004 12:19 pm    文章主題: 使用 WIN API 更改檔案建立修改日期 引言回覆

DECLARE INTEGER GetLastError IN kernel32 && 如果有錯誤的話可用這個 api 取得錯誤訊息
DECLARE INTEGER CloseHandle IN kernel32 INTEGER hObject && 宣告關閉檔案
DECLARE GetSystemTime IN kernel32 STRING @lpSystemTime && 取得系統日期
&& 把系統日期轉成檔案日期,在api中系統日期和檔日期的格式不同
DECLARE INTEGER SystemTimeToFileTime IN kernel32;
STRING @ lpSystemTime, STRING @ lpFileTime

DECLARE INTEGER SetFileTime IN kernel32; && 寫入新日期
INTEGER hFile, ;
STRING @lpCreationTime,; && 檔案建立時間
STRING @lpLastAccessTime, ;&& 最後寫入時間
STRING @lpLastWriteTime && 最後存取時間

DECLARE INTEGER OpenFile IN kernel32; && 開啟檔案
STRING lpFileName, STRING @lpReOpenBuff,;
INTEGER wStyle

lcFileTime = REPLI (Chr(0), 8 ) && 宣告成檔案日期
lcSystemTime = REPLI (Chr(0), 16) && 系統日期

= GetSystemTime (@lcSystemTime) && 取得系統日期
= SystemTimeToFileTime (@lcSystemTime, @lcFileTime) && 轉成檔案日期

lcFile = "c:DEFSTRUCT.BAK" && 要處理的檔案名稱
lcBuff = REPLI (Chr(0), 250)
hFile = OpenFile (lcFile, @lcBuff, 1) && 開檔

IF hFile > 0 && 檢查是否開成功
= SetFileTime (hFile, @lcFileTime, @lcFileTime, @lcFileTime) && 寫入至檔案
= CloseHandle (hFile) && 關閉檔案
ELSE
MESSAGEbox("錯誤: "+GetLastError(),0+16,"錯誤!...")
ENDIF

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.


garfield 在 星期三 八月 04, 2004 11:01 pm 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
ms0800



註冊時間: 2004-07-23
文章: 65


第 2 樓

發表發表於: 星期三 八月 04, 2004 5:53 pm    文章主題: 引言回覆

請問前輩,
= GetSystemTime (@lcSystemTime) && 取得系統日期
我不要以系統日期 而要以 取得其它檔案日期 或自已定義日期,寫入檔案的日期
上述的範例的我測試了,可以 c:DEFSTRUCT.BAK 的日期改成系統日期,但如果要把日期改成 2000.01.01 應如何,拜託前輩
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 3 樓

發表發表於: 星期三 八月 04, 2004 11:17 pm    文章主題: 引言回覆

從msdn查的
SYSTEMTIME

The SYSTEMTIME structure represents a date and time using individual members for the month, day, year, weekday, hour, minute, second, and millisecond.


typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
Members
wYear
The year (1601 - 30827).
wMonth
The month.

January = 1
February = 2
March = 3
April = 4
May = 5
June = 6
July = 7
August = 8
September = 9
October = 10
November = 11
December = 12


wDayOfWeek
The day of the week.

Sunday = 0
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6


wDay
The day of the month (0-31).
wHour
The hour (0-23).
wMinute
The minute (0-59).
wSecond
The second (0-59).
wMilliseconds
The millisecond (0-999).

*************************
所以要自己寫個轉換程式
func date2system
lpara mdatetime
local mret
mret = ''
mret = mret + num2word( year( mdatetime ))
mret = mret + num2word( month( mdatetime ))
mret = mret + num2word( dow( mdatetime ))
mret = mret + num2word( day( mdatetime ))
mret = mret + num2word( val(subs( ttoc(mdatetime,1),9,2) )- Cool &&--taiwan AREA +0800, 因為時區的關係所以要-8,但在早上8點前就不適用,請自行想方法解決
mret = mret + num2word( val(subs( ttoc(mdatetime,1),11,2) ))
mret = mret + num2word( val(subs( ttoc(mdatetime,1),13,2) ))
mret = mret + chr(0)+chr(0)
return mret
******
FUNCTION num2word (lnValue)
RETURN CHR(MOD(m.lnValue,256)) + CHR(INT(m.lnValue/256))

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
ms0800



註冊時間: 2004-07-23
文章: 65


第 4 樓

發表發表於: 星期三 八月 04, 2004 11:49 pm    文章主題: 引言回覆

感謝前輩的解答,雖然看不太懂,但已解決我的問題,再度的感謝
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 5 樓

發表發表於: 星期五 五月 04, 2007 10:45 am    文章主題: 引言回覆

改寫檔案日期函數
http://fox.wikis.com/wc.dll?Wiki~UdfTouch~VFP

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作