利用C++ Builder設計實現文件切割機 |
|
axsoft
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
利用C Builder設計實現文件切割機Keywords: 文件切割 Author: yesky 馬明臣 資料來源: http://www.ccrun.com/![]() ![]() int FileHandle; // 文件名柄變量 int FileLength; file://源文件大小變量 int num; file://源文件被分割後的文件數目 int iBytesRead; file:// char *pszBuffer;// int buf; // 文件緩衝區變量 int buf1;//文件緩衝區變量雙擊FileListBox組件編寫該組件的響應事件如下: void __fastcall TForm1::FileListBox1Change(TObject *Sender) { Edit1->Text=FileListBox1->FileName; Edit3->Text=FileListBox1->FileName '0'; buf=((ComboBox1->Text).ToInt()); buf1=buf*1024l; FileHandle=FileOpen(Edit1->Text, fmOpenRead); FileLength=FileSeek(FileHandle,0,2); num=FileLength/buf1 1; Edit4->Text="分割成" IntToStr(num) "個文件"; FileClose(FileHandle); ListBox1->Items->Clear(); for (int i=1;i<=num;i ) { ListBox1->Items->Add(ChangeFileExt(Edit3->Text,"." IntToStr(i))); } }file://------------------------------------------------------------- 雙擊ComboBox1組件編寫如下響應代碼:(並把OnChange、OnEnter的響應代碼也設為該段代碼) void __fastcall TForm1::ComboBox1Click(TObject *Sender) { buf=(ComboBox1->Text.ToInt()); buf1=buf*1024l; num=FileLength/(buf*1024L) 1; Edit4->Text=num; ListBox1->Items->Clear(); for (int i=0;i { ListBox1->Items->Add(ChangeFileExt(Edit3->Text,"." IntToStr(i))); } }file://--------------------------------- 雙擊切割按鈕編寫切割按鈕的響應函數如下: void __fastcall TForm1::BitBtn1Click(TObject *Sender) { if (FileLength<=buf1) file://判斷欲分割的文件是否小於要分割的字節大小 {ShowMessage("文件小於要分割的大小,不用分割"); return;} ProgressBar1->Max=num;//初始化進度條 ProgressBar1->Position=1; int i=1; pszBuffer = new char [buf1]; file://設置讀寫文件緩衝區 int temp=buf1; for (i=1;i<=num;i ) { if (i==num) pszBuffer = new char [FileLength-buf1*(num-1)]; if (i==num) temp=FileLength-buf1*(num-1); FileHandle=FileOpen(Edit1->Text,fmOpenRead); file://打開文件名柄 FileSeek(FileHandle,buf1*(i-1),0); if (FileRead(FileHandle, pszBuffer,temp)!=temp) ShowMessage("Read error!"); FileClose(FileHandle); ProgressBar1->Position=i; Label5->Caption="已進行:" AnsiString(ProgressBar1->Position*100/num) ""; int Handle=FileCreate((ChangeFileExt(Edit3->Text,"." IntToStr(i)))); if (FileWrite(Handle,pszBuffer,temp)!=temp) ShowMessage("Write error!"); FileClose(Handle); } ProgressBar1->Position=1; Label5->Caption="完成分割";file://------------------------------------ 生成合併文件時的自動批處理文件代碼 AnsiString name="/b"; for (int i=num;i>=1;i--) { AnsiString nn=ChangeFileExt(Edit3->Text,"." IntToStr(i)); if (ExtractFileName(FileListBox1->FileName).Length()>12) {nn=ExtractShortPathName(FileListBox1->FileName); nn=ChangeFileExt(nn,"." IntToStr(i)); } if (i==1) {name=ExtractFileName(nn) name;} else { name="/b " ExtractFileName(nn) name;} } AnsiString hbbat="copy " name " " ExtractFileName(FileListBox1->FileName); fstream file; file.open(ChangeFileExt(Edit3->Text,".bat").c_str()); file< file.close(); }雙擊"關於程序"位圖按鈕編寫"關於程序"的響應代碼如下: void __fastcall TForm1::BitBtn2Click(TObject *Sender) { ShellAbout(Handle,"","\n明臣文件切割機(V1.00) 版權所有(C)馬明臣\n地址:黑龍江省五大連池市統計局 2002.6\n聯繫電話:6322348 Email:MMC@0451.com",NULL); file://利用api函數顯示版板信息 } 雙擊"退出程序"位圖按鈕編寫"退出程序"的響應代碼如下: void __fastcall TForm1::BitBtn3Click(TObject *Sender) { Close(); }網路志工聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |