有關檔案分割的一段程式碼,有兩點疑惑…… |
尚未結案
|
wnnnnnn6
一般會員 發表:5 回覆:11 積分:3 註冊:2004-11-24 發送簡訊給我 |
下面是一段檔案分割的程式碼,我有兩點疑惑,請大家幫幫我!
procedure TForm1.Button3Click(Sender: TObject); //分割檔案 //下面程式中edit1.text是分割單位、edit2.Text是要分割的檔案、edit3.Text是分割後存放的位置 var i,k,rest,len:integer; af,bf:TFileStream; Fn:string; //檔名 buf:integer;//單卷容量 begin if (edit2.Text='') or (edit3.Text='') then begin beep; exit; end; // 單卷容量計算爲位元組 buf:=strtoint(edit1.Text)*1024; i:=1; try AF:=TFileStream.Create(edit2.Text,fmopenread); k:=Af.Size div buf; Rest:=af.Size-k*buf; for i:=1 to k do begin fn:=edit3.Text inttostr(i) '.spt'; //設定檔名 bf:=Tfilestream.Create(fn,fmcreate); bf.CopyFrom(af,buf); listbox1.Items.Add(fn); bf.Free; end; if rest>0 then begin fn:=edit3.Text inttostr(i) '.spt'; bf:=tfilestream.Create(fn,fmcreate); bf.CopyFrom(af,rest); bf.Free; listbox1.Items.Add(fn); end; finally af.Free; end; end;我的問題是: 1、rest=0和rest>0分別指哪兩種情況?{我的理解是:依上面k:=Af.Size div buf; Rest:=af.Size-k*buf;來看:rest一定等於0。怎麼還有>0的情況呢?我認爲rest>0的情況根本就不會執行。爲什麼教科書上還要寫上rest>0的情況呢?而且去掉rest>0的這段程式碼,程式將提示:Division by Zero的錯誤!莫名其妙!} 2、程式執行後,選擇每一個分割後的WORD文檔都無法開啓。提示:文檔的名稱和路徑無效。而且所有分割後的文檔的總位元數與分割前的哪個文檔的大小不一樣。 哪位大哥能幫我解釋一下?先謝謝了! |
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
wnnnnnn6
一般會員 發表:5 回覆:11 積分:3 註冊:2004-11-24 發送簡訊給我 |
謝謝您!我理解這段程式碼的含義了。
能否借此機會再問您一個問題呀?
有一段程式碼,是關於檔案時間格式轉換的。裡面有幾個“時間”的概念,我不太理解,您能給我解釋一下嗎?
//轉換檔案的時間格式 function covFileDate(FileDate:FileTime): TDateTime; var Tct:systemtime; Temp:filetime; begin begin FileTimeToLocalFileTime(filedate,temp); //function FileTimeToLocalFileTime(const lpFileTime: TFileTime; var lpLocalFileTime: TFileTime): BOOL; stdcall; filetimeTosystemtime(temp,tct); covfileDate:=systemTimetoDateTime(tct); end; end;有幾個時間:FileTime(dos時間)、LocalFileTime、SystemTime、DateTime(Delphi時間)、DosDateTime.請問這幾個時間的含義是什麼?它們都有什麼區別呢? |
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
FileTime 為檔案儲存的時間格式。
使用UTC(Coordinated Universal Time)來記載時間(以千萬分之一秒為單位),從1601.1.1開始使用兩個DWORD來記錄時間。 LocalFileTime 指的是本時區的檔案時間。 SystemTime 系統時間
結構。是以 年份、月份、週期、日、時、分秒、百萬秒 WORD來記錄時間。 DateTime
Delphi 常用的為日期時間單位。結構為 Double 型態。
即 整數部分為 日期,小數點為 時間。 因此,需要轉換一下格式。 FileTimeToLocalFileTime
將檔案時間轉換為本時區的檔案時間。
FileTimeToSystemTime
將檔案時間轉換為系統時間。
SystemTimetoDateTime
將TSystemTime轉換為TDateTime格式。 大致上是這樣,其餘您可以參考 Help 有說明。 發表人 - wameng 於 2004/12/01 15:05:50
|
wnnnnnn6
一般會員 發表:5 回覆:11 積分:3 註冊:2004-11-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |