⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_form1.pas

📁 很好地delphi书籍源码
💻 PAS
字号:
unit U_Form1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Spin,FileCtrl, ComCtrls, Buttons, ImgList;

type
  TForm1 = class(TForm)
    OpenDlg1: TOpenDialog;
    OpenDlg2: TOpenDialog;
    SaveDlg: TSaveDialog;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    LargeFileEdit: TEdit;
    DirEdit: TEdit;
    UnitSpinEdit: TSpinEdit;
    FileSpeedButton: TSpeedButton;
    DirSpeedButton: TSpeedButton;
    Label5: TLabel;
    SmallFileEdit: TEdit;
    ChoiceButton: TButton;
    RestoreButton: TButton;
    ListBox1: TListBox;
    DivideButton: TButton;
    Label4: TLabel;
    Label6: TLabel;
    ProgressBar1: TProgressBar;
    ProgressBar2: TProgressBar;
    ExitButton: TButton;
    procedure DivideButtonClick(Sender: TObject);
    procedure ChoiceButtonClick(Sender: TObject);
    procedure RestoreButtonClick(Sender: TObject);
    procedure FileSpeedButtonClick(Sender: TObject);
    procedure DirSpeedButtonClick(Sender: TObject);
    procedure ExitButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DivideButtonClick(Sender: TObject);
var
  I, K, Rest, Len: Integer;
  AF, BF: TFileStream; //文件流对象
  Fn: string; //文件名
  Buf : Integer; //单碟容量
begin
  if (LargeFileEdit.Text = '') or (DirEdit.Text = '')or(SmallFileEdit.Text = '')  then
  begin
    Beep;
    Exit;
  end;
//单蝶容量计算为字节数
  buf := UnitSpinEdit.Value * 1024;
  I := 1;
  Try
    Af := TFileStream.Create(LargeFileEdit.Text, fmOpenRead);
    K := Af.Size div Buf;
    Rest := Af.Size - K * Buf;
    For I := 1 to K do
    begin
      Fn := DirEdit.Text +SmallFileEdit.Text +IntToStr(I) + '.spt'; //文件名
      Bf := TFileStream.Create(Fn, fmCreate);
      Bf.CopyFrom(Af, Buf);
      Bf.Free;
      ProgressBar1.Position:=100*(I-1) DIV K ;
    end;
    if Rest > 0 then
    begin
      Fn := DirEdit.Text + IntToStr(I) + '.spt';
      Bf := TFileStream.Create(Fn, fmCreate);
      Bf.CopyFrom(Af, Rest);
      Bf.Free;
      ProgressBar1.Position:=100;
    end;
    Showmessage('文件被成功地分割成'+IntToStr(K+1)+'个切片文件!');
  finally
   AF.Free;
  end;
end;


procedure TForm1.ChoiceButtonClick(Sender: TObject);
var
  I : Integer;
begin
  if OpenDlg2.Execute then
  For I := 0 to OpenDlg2.Files.Count - 1 do
     ListBox1.Items.Add(OpenDlg2.files[I]);

end;

procedure TForm1.RestoreButtonClick(Sender: TObject);
var
  Af, Bf: TFileStream; //文件流对象
  Fn, Ft: string; //文件名
  I,Count : Integer;
begin
  Count:=ListBox1.Items.Count;
  if Count = 0 then
  begin
    Beep;
    Exit;
  end;
  if SaveDlg.Execute then
  begin
    Fn := SaveDlg.FileName;
    try
      Af := TFileStream.Create(Fn, fmCreate);
      For I := 0 to Count -1 do
      begin
         Ft := ListBox1.Items[I];
         Bf := TFileStream.Create(Ft, fmOpenRead);
         Af.CopyFrom(Bf, Bf.Size);
         Bf.Free;
         ProgressBar2.Position:=100*I div Count ;
      end;
      Showmessage('文件被成功地合并为 '+Fn+ ' 文件!');
    finally
      Af.Free;
    end;
   end;
end;
procedure TForm1.FileSpeedButtonClick(Sender: TObject);
begin
  if OpenDlg1.Execute then
    LargeFileEdit.Text := OpenDlg1.FileName; //设置分割后的切片文件的存储位置
end;

procedure TForm1.DirSpeedButtonClick(Sender: TObject);
var
  Dir: string;
begin
//SelectDirectory函数声明在FileCtrl单元中
  if SelectDirectory('选择存储目录:', '', Dir) then
    DirEdit.Text := Dir + '\';
end;

procedure TForm1.ExitButtonClick(Sender: TObject);
begin
  Application.Terminate;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -