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 向其他程序发送模拟按键

Delphi 搜索字符串在流中的位置

Delphi自动提交网页表单和获取框架网页源码

Delphi 如何删除动态数组的指定元素

Delphi ansiendstext 用法之一(路径结尾自动加\)

Delphi 获取文件夹下包括子目录所有文件

获取网络日期

Delphi isdirectory 判断是否是目录

Delphi tidhttp 超时设置无效的解决方法

Delphi 隐藏文件夹

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



打赏

取消

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

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

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

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

评论

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