谁有文件切割的代码?! 发一个来试试,如果能用,立刻给分!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 文件切割器 界面设计:创建主窗体 XCutForm,保存应用程序为 Xcut.dpr1.选取文件选取文件就是要弹出一个文件选取对话框给用户一个选择的机会,在Delphi中很容易实现,在Dialog对话框选取项中选取OpenDialog放到窗体中,名称为OpenDialog.编辑OpenDialog的Filter 属性,如下图所示:2.文件切割大小放置一个PageControl 控件在主窗体中,添加两个 TabSheet ,分别为 Tbs1和Tbs2.在Tbs1上放一个RadioGroup,名称为rdgCut,编辑RadioGroup控件的属性,如下图所示:给用户一个选取常用文件大小的列表在Tbs2上放一个输入框,让用户可以自己设定文件大小:3.指定切割文件存放位置(目标文件夹)对于选取一个目标文件夹的对话框,在Delphi中没有直接支持,我们可以启用Com扩展打开Windows的标准打开文件夹对话框。为了方便使用,我们把它封装成一个方便使用的单元BrowseFolder(详见程序清单),在调用的时候只需要几行代码Procedurevardlg: TBrowseForFolderDialog;DestPath:string;begindlg := TBrowseForFolderDialog.Create;dlg.Title := '请选取目标文件夹:';if dlg.Execute thenbeginDestPath := dlg.Path;end;dlg.Free;end;4.开始切割根据上边步骤的选择,确定了待切割的原始文件,切割大小和存放位置,下边就可以开始了。首先我们用一个“文件流”以只读方式打开原始文件varfs:TFileStream;beginfs:=TfileStream.create(“文件名称”,fmOpenRead)……………然后我们创建一个“内存流”varms:TmemoryStream;beginms:=TmemoryStream.create;……………根据文件切割的大小计算字节数,从“文件流”中向“内存流”中拷贝指定的大小,将内存流存储到目标文件夹下,文件扩展名累计创建(方便合并)分析切割大小:case rdgCut.ItemIndex of0: filesize := 2000 * 1024; //2000 K1: filesize := 1440 * 1024; //1440 K2: filesize := 1200 * 1024; //1200 K3: filesize := 1000 * 1024; //1000 K4: filesize := 720 * 1024; //720 K5: filesize := 500 * 1024; //500 K6: filesize := 300 * 1024; //300 K7: filesize := 200 * 1024; //200 Kelse filesize := 100 * 1024; //100 K在切割过程中应该显示一个进度,让用户了解进度,放置一个ProgressBar控件到主窗体中,设置属性。在切割开始时根据文件大小设定最大最小值和步长,在切割过程中不断根据实际情况修改当前位置,给用户一个运动的状态。代码如下所示:过程化显示切割进程fs := TFileStream.Create(filename, fmopenread);ms := TMemoryStream.Create;FileCount := 1;prbCut.Min := 0; prbCut.Max := (fs.size div filesize) + 1;prbCut.step := 1;while fs.Position < fs.Size - 1 dobeginms.position := 0;ms.size := 0;if fs.size - fs.Position < FileSizethen FileSize := fs.size - fs.position;ms.CopyFrom(fs, FileSize);application.ProcessMessages;prbCut.StepIt;ms.SaveToFile(DestPath + '\' + extractfilename(filename) + '.' + inttostr(FileCount));memCut.lines.add('正在生成第 ' + inttostr(FileCount) + ' 个文件!');inc(FileCount);end;5.创建自动合并文件的批处理命令在 Dos 中有一条命令可以完成文件的合并Copy file1 /b +file2 /b file3我们只要生成一个批处理命令文件,就可以在需要的时候完成合并工作,代码如下所示:assignfile(bat, DestPath + '\' + changefileext(ExtractFileName(filename), '.bat'));rewrite(bat);writeln(bat, 'echo off');writeln(bat,'echo 谢谢使用文件分割 XCut 1.0 .....');writeln(bat, 'echo .');writeln(bat,'echo 正在准备生成文件'+extractfilename(filename));writeln(bat, 'echo .');writeln(bat,' echo 您可以按 CTRL + Z 键 中止,其他键继续!');writeln(bat,'pause');for i := 1 to FileCount + 1 dobeginif i = 1then writeln(bat, 'copy ' + extractfilename(FileName) + '.1/b ' + extractfilename(FileName))else writeln(bat, 'copy ' + extractfilename(FileName) + '/b +' + extractfilename(FileName) + '.' + inttostr(i) + '/b');end;memCut.lines.add('正在生成合并命令文件: ' + changefileext(extractfilename(FileName), '.bat'));closefile(bat);memCut.lines.add('切割成功完成!');Application.MessageBox('切割成功完成!', '恭喜', MB_OK + MB_ICONINFORMATION); www20.brinkster.com/lszgx有一个如要码与我联系[email protected] 我这样做对否 报表问题 Delphi调用C#Webservice 如何自定义DBGridEh中的Footer中的计算!! 简单的语句问题 在线急救!在DELPHI中如何表示C语言 #define MASK_BIT(bit) (1 << (bit)) 如果对A、C、B、5、8、H、5、U进行全排列,数字和字母不能重复,并打印出来,算法如何写[事成后给200分] 我想学 DELPHI 我要拜师父~~~~ 文件传输 请教一个有关安装的问题(急!急!) 怎样实现当我把光标(用鼠标)移动到一个EDIT上时EDIT的背景改变? 有没有1listclass控件
选取文件就是要弹出一个文件选取对话框给用户一个选择的机会,在Delphi中很容易实现,在Dialog对话框选取项中选取
OpenDialog放到窗体中,名称为OpenDialog.编辑OpenDialog的Filter 属性,如下图所示:2.文件切割大小
放置一个PageControl 控件在主窗体中,添加两个 TabSheet ,分别为 Tbs1和Tbs2.
在Tbs1上放一个RadioGroup,名称为rdgCut,编辑RadioGroup控件的属性,如下图所示:
给用户一个选取常用文件大小的列表
在Tbs2上放一个输入框,让用户可以自己设定文件大小:3.指定切割文件存放位置(目标文件夹)对于选取一个目标文件夹的对话框,在Delphi中没有直接支持,我们可以启用Com扩展打开Windows的标准打开文件夹对话框。为了方便使用,我们把它封装成一个方便使用的单元BrowseFolder(详见程序清单),在调用的时候只需要几行代码Procedure
var
dlg: TBrowseForFolderDialog;
DestPath:string;
begin
dlg := TBrowseForFolderDialog.Create;
dlg.Title := '请选取目标文件夹:';
if dlg.Execute then
begin
DestPath := dlg.Path;
end;
dlg.Free;
end;4.开始切割根据上边步骤的选择,确定了待切割的原始文件,切割大小和存放位置,下边就可以开始了。
首先我们用一个“文件流”以只读方式打开原始文件
var
fs:TFileStream;
begin
fs:=TfileStream.create(“文件名称”,fmOpenRead)
……………然后我们创建一个“内存流”
var
ms:TmemoryStream;
begin
ms:=TmemoryStream.create;
……………
根据文件切割的大小计算字节数,从“文件流”中向“内存流”中拷贝指定的大小,将内存流存储到目标文件夹下,文件扩展名累计创建(方便合并)分析切割大小:
case rdgCut.ItemIndex of
0: filesize := 2000 * 1024; //2000 K
1: filesize := 1440 * 1024; //1440 K
2: filesize := 1200 * 1024; //1200 K
3: filesize := 1000 * 1024; //1000 K
4: filesize := 720 * 1024; //720 K
5: filesize := 500 * 1024; //500 K
6: filesize := 300 * 1024; //300 K
7: filesize := 200 * 1024; //200 K
else filesize := 100 * 1024; //100 K
在切割过程中应该显示一个进度,让用户了解进度,放置一个ProgressBar控件到主窗体中,设置属性。在切割开始时根据文件大小设定最大最小值和步长,在切割过程中不断根据实际情况修改当前位置,给用户一个运动的状态。代码如下所示:过程化显示切割进程fs := TFileStream.Create(filename, fmopenread);
ms := TMemoryStream.Create;
FileCount := 1;prbCut.Min := 0;
prbCut.Max := (fs.size div filesize) + 1;
prbCut.step := 1;while fs.Position < fs.Size - 1 do
begin
ms.position := 0;
ms.size := 0;if fs.size - fs.Position < FileSize
then FileSize := fs.size - fs.position;ms.CopyFrom(fs, FileSize);
application.ProcessMessages;prbCut.StepIt;
ms.SaveToFile(DestPath + '\' + extractfilename(filename) + '.' +
inttostr(FileCount));
memCut.lines.add('正在生成第 ' + inttostr(FileCount) + ' 个文件!');
inc(FileCount);end;
5.创建自动合并文件的批处理命令在 Dos 中有一条命令可以完成文件的合并
Copy file1 /b +file2 /b file3我们只要生成一个批处理命令文件,就可以在需要的时候完成合并工作,代码如下所示:assignfile(bat, DestPath + '\' +
changefileext(ExtractFileName(filename), '.bat'));
rewrite(bat);
writeln(bat, 'echo off');
writeln(bat,'echo 谢谢使用文件分割 XCut 1.0 .....');
writeln(bat, 'echo .');
writeln(bat,'echo 正在准备生成文件'+extractfilename(filename));
writeln(bat, 'echo .');
writeln(bat,' echo 您可以按 CTRL + Z 键 中止,其他键继续!');writeln(bat,'pause');
for i := 1 to FileCount + 1 do
begin
if i = 1
then writeln(bat, 'copy ' + extractfilename(FileName) + '.1/b ' +
extractfilename(FileName))
else writeln(bat, 'copy ' + extractfilename(FileName) + '/b +' +
extractfilename(FileName) + '.' + inttostr(i) + '/b');end;
memCut.lines.add('正在生成合并命令文件: ' +
changefileext(extractfilename(FileName), '.bat'));closefile(bat);memCut.lines.add('切割成功完成!');
Application.MessageBox('切割成功完成!', '恭喜', MB_OK + MB_ICONINFORMATION);
有一个如要码与我联系
[email protected]