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

XP 系統下即時偵測硬碟容量

缺席
renth555
一般會員


發表:32
回覆:65
積分:19
註冊:2003-02-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-05 18:59:53 IP:61.56.xxx.xxx 未訂閱
當我將一個 600MB 檔案烤到 C: 我要用那個函數即時的 知道硬碟容量呢 XP 系統好像無法即時顯示硬碟容量 98 系統可以馬上知道現在檔案拷貝多少Byte 硬碟就即時反應剩多少Byte 請問前輩們為什麼架構有何不同呢
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-05 20:29:37 IP:61.221.xxx.xxx 未訂閱
引言: 當我將一個 600MB 檔案烤到 C: 我要用那個函數即時的 知道硬碟容量呢 XP 系統好像無法即時顯示硬碟容量 98 系統可以馬上知道現在檔案拷貝多少Byte 硬碟就即時反應剩多少Byte 請問前輩們為什麼架構有何不同呢
renth555 你好: 試試看用 Win32 API GetDiskFreeSpaceEx 達到目的 < class="code"> #include "stdio.h" ULARGE_INTEGER liAvailable; ULARGE_INTEGER liTotal; ULARGE_INTEGER liFree; ::GetDiskFreeSpaceEx("C:\\", &liAvailable, &liTotal, &liFree); char szBuf[256]={0}; sprintf(szBuf, "C:\\\nAvailable: %lX%lX\nTotal: %lX%lX\nFree: %lX%lX", liAvailable.HighPart, liAvailable.LowPart, liTotal.HighPart, liTotal.LowPart, liFree.HighPart, liFree.LowPart); ShowMessage(szBuf); 備註: 建議你參考 M$DN 中的說明 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/getdiskfreespaceex.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/getdiskfreespace.asp -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/08/05 20:33:39
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
renth555
一般會員


發表:32
回覆:65
積分:19
註冊:2003-02-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-08 01:20:49 IP:61.56.xxx.xxx 未訂閱
RaynorPao 前輩 還是無法動態知道目前接收檔案磁碟機的剩餘容量 謝謝你的 post 教學
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-08 08:42:41 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao 前輩 還是無法動態知道目前接收檔案磁碟機的剩餘容量 謝謝你的 post 教學
renth555 你好:
(1)「無法動態知道目前接收檔案磁碟機的剩餘容量」?? 小弟我被你搞得一頭霧
   水了,上面的 Win32 API 不是可以傳回該磁碟機的剩餘容量嗎 (liFree)??
(2)你可以在 CopyFile 之前,先取得檔案的大小,再利用上述的 Win32 API 取
   得接收磁碟機的剩餘容量,比對檔案大小跟磁碟機的剩餘容量之後,再決定
   要不要 CopyFile
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
renth555
一般會員


發表:32
回覆:65
積分:19
註冊:2003-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-10 21:05:44 IP:61.56.xxx.xxx 未訂閱
還是感謝 RaynorPao 前輩教導 我在 xp 下拷貝一個檔案 600mb 到 c: 當正在複製中 xp 以知道我複製的檔案有多大了所以他 會直接顯示 HD-File=剩下多少容量 而不會說檔案正拷貝100mb了 hd-100=目前剩下多少容量 hd-200=目前剩下多少容量 hd-300=目前剩下多少容量 我的意思是這樣 對不起 表達不清楚
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-11 23:19:47 IP:61.221.xxx.xxx 未訂閱
引言: 還是感謝 RaynorPao 前輩教導 我在 xp 下拷貝一個檔案 600mb 到 c: 當正在複製中 xp 以知道我複製的檔案有多大了所以他 會直接顯示 HD-File=剩下多少容量 而不會說檔案正拷貝100mb了 hd-100=目前剩下多少容量 hd-200=目前剩下多少容量 hd-300=目前剩下多少容量 我的意思是這樣 對不起 表達不清楚
renth555 你好: 小弟我還是不太了解你的意思,請問?? 你是利用什麼「工具」做複製檔案的工 作呢?? 是利用「檔案總管」還是「自己寫的應用程式」?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
renth555
一般會員


發表:32
回覆:65
積分:19
註冊:2003-02-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-13 00:37:43 IP:61.56.xxx.xxx 未訂閱
我用 copyto() 這個函購 謝謝 RaynorPao 我已經放棄了我自己作了一個拷貝方式 我會重新 post 請各位前輩幫我看看 因為我想作有進度棒的拷貝所以才會利用偵測硬碟剩餘容量
shchen
一般會員


發表:12
回覆:27
積分:7
註冊:2003-08-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-14 06:31:37 IP:202.52.xxx.xxx 未訂閱
不要灰心,我想你所要"動態",指的是即時的意思,所謂動態也就跟Timer有關. 請使用TTimer元件,這元件可依設定在一定的時間內不停的重覆自動執行 OnTimer事件內的程式碼,屬性interval,是設定執行OnTimer事件的時間間隔, 你可搭配GetDiskFreeSpaceEx(),把它放在OnTimer事件內,就可即時不斷的取得資料了. 以下是TTimer範例,結果是在100毫秒內,不斷的移動Form的位置. void __fastcall TForm1::Timer1Timer(TObject *Sender) { Timer1->Interval = 100; if (ActiveControl) ActiveControl->Left = ActiveControl->Left 1; } 善用TTimer元件,希望對你有幫助,如果還有需要的地方,請再提出,我再寫一個即時取得 目前記憶體使用量的範例給你.
renth555
一般會員


發表:32
回覆:65
積分:19
註冊:2003-02-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-14 23:55:29 IP:61.56.xxx.xxx 未訂閱
謝謝各位前輩
系統時間:2024-07-31 14:51:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!