文件合并和分割问题!!高手帮忙! 我把几个文本文件合成一个文本文件,其中一个文件是recordfile,保存的是每个文件大小情况,放在合成文件的前面。现在这个recordfile我已经可以读出分割出来(就是每个文件大小已经知道),其他文件分离,没有成功!我已经试了好久,没有成功,希望各位高手多多帮忙!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 unit DestPath;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FileCtrl;type TDestPathForm = class(TForm) DriveComboBox1: TDriveComboBox; DirectoryListBox1: TDirectoryListBox; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var DestPathForm: TDestPathForm;implementationuses MainUnit;{$R *.dfm}procedure TDestPathForm.Button1Click(Sender: TObject);begin Dir:= DirectoryListBox1.Directory; close;end;procedure TDestPathForm.Button2Click(Sender: TObject);begin close;end;end.××××××××××××××××××××××unit MainUnit;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, DestPath;type TXCutForm = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; Memo1: TMemo; OpenDialog1: TOpenDialog; RadioGroup1: TRadioGroup; prbCut: TProgressBar; Label1: TLabel; Label2: TLabel; Edit1: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var XCutForm: TXCutForm; FilePath: string; Dir: string;implementation{$R *.dfm}procedure TXCutForm.Button1Click(Sender: TObject);begin if opendialog1.Execute then begin filepath:= opendialog1.FileName; button2.Enabled:= true; button3.Enabled:= true; end;end;procedure TXCutForm.Button2Click(Sender: TObject);begin DestPathForm.Show;end;procedure TXCutForm.Button3Click(Sender: TObject);var fs: TFileStream; ms: TMemoryStream; filesize,filecount: integer; bat: TextFile; i: integer;begin if PageControl1.ActivePage = TabSheet1 then begin case RadioGroup1.ItemIndex of 0: filesize:= 2000*1024; 1: filesize:= 1440*1024; 2: filesize:= 1200*1024; 3: filesize:= 1000*1024; 4: filesize:= 720*1024; 5: filesize:= 500*1024; 6: filesize:= 300*1024; 7: filesize:= 200*1024; else filesize:= 100*1024; end; end else begin filesize:= strtoint(edit1.Text)*1024; end; fs:= TFileStream.Create(filepath,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(dir+'\'+extractfilename(filepath)+'.'+inttostr(filecount)); memo1.Lines.Add('正在切割第 '+inttostr(filecount)+' 个文件!'); inc(filecount); end; assignfile(bat,dir+'\'+changefileext(extractfilename(filepath),'.bat')); rewrite(bat); writeln(bat,'echo off'); writeln(bat,'echo 谢谢使用文件切割 XCut 1.0.....'); writeln(bat,'echo.'); writeln(bat,'echo 正在准备生成文件'+extractfilename(filepath)); 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(filepath)+'.1/b'+extractfilename(filepath)) else writeln(bat,'copy'+extractfilename(filepath)+'/b+'+extractfilename(filepath)+'.'+inttostr(i)+'/b'); end; memo1.Lines.Add('正在生成合并命令文件:'+changefileext(extractfilename(filepath),'.bat')); closefile(bat); memo1.Lines.Add('文件切割成功!'); application.MessageBox('文件切割完成!','恭喜',MB_OK+MB_ICONINFORMATION);end;procedure TXCutForm.Button4Click(Sender: TObject);begin close;end;end. Delphi中TIdUDPServer用在Com中IdUDPServerUDPRead事件不触发? 程序中能添加的窗体有没有限制,加了很多窗体会不会有什么问题? 痛苦...神呀,救救我吧 edit控件应用,救助。简单 找兼职,不知道有人有项目做别人做没? spcomm难题,如何发送16进制数据和十进制数据 关于Winsock的问题 一个奇怪的问题,数据库的,谢谢 DELPHI7之初体验 delphi新手,求一delphi编程规范(附一简洁pb编程规范) 如何剪切、复制、粘贴控件(关于剪贴板的问题),答对分数还可以再加!!!! 如何让后动态改变控件的叠加次序?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FileCtrl;type
TDestPathForm = class(TForm)
DriveComboBox1: TDriveComboBox;
DirectoryListBox1: TDirectoryListBox;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
DestPathForm: TDestPathForm;implementationuses MainUnit;{$R *.dfm}procedure TDestPathForm.Button1Click(Sender: TObject);
begin
Dir:= DirectoryListBox1.Directory;
close;
end;procedure TDestPathForm.Button2Click(Sender: TObject);
begin
close;
end;end.××××××××××××××××××××××unit MainUnit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, DestPath;type
TXCutForm = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
RadioGroup1: TRadioGroup;
prbCut: TProgressBar;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
XCutForm: TXCutForm;
FilePath: string;
Dir: string;implementation{$R *.dfm}procedure TXCutForm.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then
begin
filepath:= opendialog1.FileName;
button2.Enabled:= true;
button3.Enabled:= true;
end;
end;procedure TXCutForm.Button2Click(Sender: TObject);
begin
DestPathForm.Show;
end;procedure TXCutForm.Button3Click(Sender: TObject);
var
fs: TFileStream;
ms: TMemoryStream;
filesize,filecount: integer;
bat: TextFile;
i: integer;
begin
if PageControl1.ActivePage = TabSheet1 then
begin
case RadioGroup1.ItemIndex of
0: filesize:= 2000*1024;
1: filesize:= 1440*1024;
2: filesize:= 1200*1024;
3: filesize:= 1000*1024;
4: filesize:= 720*1024;
5: filesize:= 500*1024;
6: filesize:= 300*1024;
7: filesize:= 200*1024;
else filesize:= 100*1024;
end;
end else
begin
filesize:= strtoint(edit1.Text)*1024;
end; fs:= TFileStream.Create(filepath,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(dir+'\'+extractfilename(filepath)+'.'+inttostr(filecount));
memo1.Lines.Add('正在切割第 '+inttostr(filecount)+' 个文件!');
inc(filecount);
end; assignfile(bat,dir+'\'+changefileext(extractfilename(filepath),'.bat'));
rewrite(bat);
writeln(bat,'echo off');
writeln(bat,'echo 谢谢使用文件切割 XCut 1.0.....');
writeln(bat,'echo.');
writeln(bat,'echo 正在准备生成文件'+extractfilename(filepath));
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(filepath)+'.1/b'+extractfilename(filepath))
else writeln(bat,'copy'+extractfilename(filepath)+'/b+'+extractfilename(filepath)+'.'+inttostr(i)+'/b');
end;
memo1.Lines.Add('正在生成合并命令文件:'+changefileext(extractfilename(filepath),'.bat'));
closefile(bat);
memo1.Lines.Add('文件切割成功!');
application.MessageBox('文件切割完成!','恭喜',MB_OK+MB_ICONINFORMATION);
end;procedure TXCutForm.Button4Click(Sender: TObject);
begin
close;
end;end.