本文整理自网络,侵删。
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.
相关阅读 >>
Delphi中使用词霸2005的动态库xdictgrb.dll实现屏幕取词
Delphi读取radiogroup选中按钮的string文本
更多相关阅读请进入《Delphi》频道 >>