问题来源: http://www.cnblogs.com/del/archive/2010/05/28/1746514.html#1835637
代码:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; OpenDialog1: TOpenDialog; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Text := '10'; //10 KB Edit1.NumbersOnly := True; OpenDialog1.Filter := 'TEXT|*.txt|*.*|*.*'; end; procedure TForm1.Button1Click(Sender: TObject); var fs: TFileStream; ms: TMemoryStream; path: string; size,sizeEnd,count,i: Integer; c: Char; begin if OpenDialog1.Execute then path := OpenDialog1.FileName; if not FileExists(path) then Exit; fs := TFileStream.Create(path, fmOpenRead); fs.Read(c, 1); if CharInSet(c, [#$EF, #$FE, #$FF]) then begin ShowMessage('只适用于 ANSI 格式的文本文件'); fs.Free; Exit; end; TButton(Sender).Enabled := False; size := StrToIntDef(Edit1.Text, 10) * 1024; count := fs.Size div size; sizeEnd := fs.Size mod size; if sizeEnd > 0 then Inc(count); ms := TMemoryStream.Create; fs.Position := 0; for i := 0 to count - 1 do begin Text := Format('%d/%d', [i+1, count]); Application.ProcessMessages; if (i = count - 1) then size := sizeEnd; ms.Size := size; fs.Read(ms.Memory^, size); ms.SaveToFile(Format('%s_%.3d.txt', [ChangeFileExt(path, ''), i+1])); fs.Position := size * (i+1); end; fs.Free; ms.Free; TButton(Sender).Enabled := True; Text := '完成'; end; end.
窗体:
object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 122 ClientWidth = 231 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object Edit1: TEdit Left = 80 Top = 24 Width = 75 Height = 21 TabOrder = 0 Text = 'Edit1' end object Button1: TButton Left = 80 Top = 62 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 1 OnClick = Button1Click end object OpenDialog1: TOpenDialog Left = 24 Top = 40 end end