delphi实现分割文本文件的小程序


本文整理自网络,侵删。

 代码:
--------------------------------------------------------------------------------

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 10 下提示sharedactivitycontext错误的解决方法

Delphi hook 指定程序窗体和控件的 wndproc

Delphi regularexpressions 正则表达式如何忽略大小写

Delphi ip地址转换str字符

Delphi 关闭显示器

Delphi nethttpclient1 下载显示进度条

Delphi通过解析搜狐网页来获取天气的函数

Delphi 内存补丁

Delphi 获取文件的最新修改时间

Delphi tstringlist utf8编码保存并开启bom

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...