zoukankan      html  css  js  c++  java
  • 一个分割文本文件的小程序 回复 "jellyang" 的问题


    问题来源: 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
    
  • 相关阅读:
    内联表值函数FUNCTION
    视图
    公用表表达式(CTE)
    关于TOP (n) WITH TIES的运用
    Python类变量和实例变量(类属性和实例属性)
    方差、协方差、相关系数(转载)
    Fama-French三因子模型
    (转载)什么是阿尔法和贝塔
    Macaca 环境搭建
    UIRecorder + Macaca 自动化测试 Android
  • 原文地址:https://www.cnblogs.com/del/p/1747146.html
Copyright © 2011-2022 走看看