Unit1.cpp
上传用户:lhxd_sz
上传日期:2014-10-02
资源大小:38814k
文件大小:3k
源码类别:

VC书籍

开发平台:

C++ Builder

  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "Unit1.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. #pragma resource "*.dfm"
  8. TForm1 *Form1;
  9. //---------------------------------------------------------------------------
  10. __fastcall TForm1::TForm1(TComponent* Owner)
  11.         : TForm(Owner)
  12. {
  13. }
  14. //---------------------------------------------------------------------------
  15. void __fastcall TForm1::DoCutFile(AnsiString sfilename,AnsiString dfilename)
  16. {
  17.   int sfile,count;
  18.   int rt;
  19. //打开文件
  20.   sfile=FileOpen(sfilename,fmOpenRead);
  21.   if(sfile==-1)return;
  22.   count=1;
  23.   do{
  24.     rt=CopyOne(sfile,dfilename,count);
  25.     count++;
  26.   }while(rt==0);
  27.   FileClose(sfile);
  28.   Application->MessageBox("文件分割完毕!","提示",MB_OK);
  29. }
  30. //---------------------------------------------------------------------------
  31. int __fastcall TForm1::CopyOne(int sfile,AnsiString dfilename,int no)
  32. {
  33.   char * MyBuff;
  34.   int rt;
  35.   AnsiString ass;
  36.   int bn,ii,nn;
  37.   MyBuff=new char[10010];
  38.   if(MyBuff==NULL)
  39.   {
  40.     Application->MessageBox("系统内存不够!","提示",MB_OK);
  41.     return -1;
  42.   }
  43.   ass="生成第 "+IntToStr(no)+" 个分割文件";
  44.   Application->MessageBox(ass.c_str(),"提示",MB_OK);
  45.   while(!TestDiskFree())
  46.   {
  47.     ass="磁盘空间不够!n要求空间为1,400,300字节!n继续吗?";
  48.     bn=Application->MessageBox(ass.c_str(),"提示",MB_YESNO);
  49.     if(bn!=IDYES)return -1;
  50.   }
  51.   bn=FileCreate(dfilename+"."+IntToStr(no));
  52.   rt=0;
  53.   for(ii=0;ii<140;ii++)
  54.   {
  55.     nn=FileRead(sfile,MyBuff,10000);
  56.     FileWrite(bn,MyBuff,nn);
  57.     if(nn!=10000)
  58.     {
  59.       rt=1;
  60.       break;
  61.     }
  62.   }
  63.   FileClose(bn);
  64.   delete MyBuff;
  65.   return rt;
  66. }
  67. //---------------------------------------------------------------------------
  68. bool __fastcall TForm1::TestDiskFree(void)
  69. {
  70.   __int64 ll;
  71.   ll=DiskFree(0);
  72.   if(ll<1403000L)return False;
  73.   else return True;
  74. }
  75. //---------------------------------------------------------------------------
  76. void __fastcall TForm1::Button1Click(TObject *Sender)
  77. {
  78.   if(OpenDialog1->Execute())
  79.   {
  80.     Edit1->Text=OpenDialog1->FileName;
  81.   }
  82. }
  83. //---------------------------------------------------------------------------
  84. void __fastcall TForm1::Button2Click(TObject *Sender)
  85. {
  86.   int ll,ii;
  87.   AnsiString ass;
  88.   if(SaveDialog1->Execute())
  89.   {
  90.     Edit2->Text=SaveDialog1->FileName;
  91.     ass=Edit2->Text;
  92.     ll=ass.Length();
  93.     for(ii=ll;ii>0;ii--)
  94.     {
  95.       if(ass.SubString(ii,1)==".")
  96.       {
  97.         ass=ass.SubString(1,ii-1);
  98.         Edit2->Text=ass;
  99.         break;
  100.       }
  101.     }
  102.   }
  103. }
  104. //---------------------------------------------------------------------------
  105. void __fastcall TForm1::Button3Click(TObject *Sender)
  106. {
  107.   DoCutFile(Edit1->Text,Edit2->Text);
  108. }
  109. //---------------------------------------------------------------------------