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

📄 unit1.pas

📁 《Delphi 7经典问题解析》源代码 第一到七章 基础篇源程序 应用篇源程序
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, lzExpand, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//利用文件流拷贝文件

procedure FileCopyA(const sourcefilename, targetfilename: string);
var
  S, T: TFileStream;
begin
  //创建源文件的文件流
  S := TFileStream.Create(sourcefilename, fmOpenRead);
  try
    //创建目标文件的文件流
    T := TFileStream.Create(targetfilename,
      fmOpenWrite or fmCreate);
    try
      //将源文件流拷贝到目标文件流
      T.CopyFrom(S, S.Size);
    finally
     //释放目标文件流
      T.Free;
    end;
  finally
    //释放源文件流
    S.Free;
  end;
end;

//利用内存块读写

procedure FileCopyB(const FromFile, ToFile: string);
var
  FromF, ToF: file;
  NumRead, NumWritten: integer;
  Buf: array[1..2048] of Char;
begin
  //关联源文件
  AssignFile(FromF, FromFile);
  //打开文件,每次只读一个字节
  Reset(FromF, 1);
  //关联目标文件
  AssignFile(ToF, ToFile);
  //创建目标文件,并打开,每次只读一个字节
  Rewrite(ToF, 1);
  //循环读写
  repeat
    BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
    BlockWrite(ToF, Buf, NumRead, NumWritten);
  until (NumRead = 0) or (NumWritten <> NumRead);
  //关闭源文件和目标文件
  CloseFile(FromF);
  CloseFile(ToF);
end;


//利用LZCopy函数实现 ,lzCopy函数在LZExpand单元里。

procedure FileCopyC(FromFileName, ToFileName: string);
var
  FromFile, ToFile: file;
begin
  //关联源文件
  AssignFile(FromFile, FromFileName);
  //关联目标文件
  AssignFile(ToFile, ToFileName);
  //打开,源文件
  Reset(FromFile);
  try
    //创建目标文件,并打开
    Rewrite(ToFile);
    try
      //利用LZCopy函数拷贝文件
      if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) < 0 then
        raise EInOutError.Create('Error using LZCopy')
    finally
      //关闭目标文件
      CloseFile(ToFile);
    end;
  finally
    //关闭源文件
    CloseFile(FromFile);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    if SaveDialog1.Execute then
    begin
      FileCopyC(openDialog1.FileName, SaveDialog1.FileName);
    end;
  end;
end;

end.

⌨️ 快捷键说明

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