텍스트 파일 을 분할 하 는 애플 릿

2789 단어 텍스트 파일
질문 출처:
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


 
   

좋은 웹페이지 즐겨찾기