欢迎光临!
若无相欠,怎会相见

Delphi-获取文件MD5 Hash值

序言

可能是由于Delphi版本问题,导致有些库没法再Delphi XE6使用,我只能查找资料和实验,还好完成了任务

文件MD5

新建VCL Forms Application,添加三个控件,分别是TOpenDialog, TButton和TLabel。没怎么设计UI,一顿拖放猛如虎,如下:

完整代码如下:

unit Umain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,IdHashMessageDigest,IdGlobal,IdHash;

type
  TMD5 = class(TIdHashMessageDigest5);
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    function StreamToMD5(s:TFileStream):string;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  filesen:TFileStream;
  str:string;
begin
  if Opendialog1.Execute then
  begin
    Label1.Caption := '';
    filesen:=TFileStream.Create(opendialog1.FileName,fmopenread or fmshareExclusive);
    str:=StreamToMD5(filesen);
    Label1.Caption := 'MD5: ' + str;
    filesen.Free;
  end;
end;

function TForm1.StreamToMD5(s:TFileStream):string;
var
  MD5Encode:TMD5;
begin
  MD5Encode:=TMD5.Create;
  try
    result:=md5encode.HashStreamAsHex(s);
  finally
    MD5Encode.Free;
  end;
end;

end.

我的测试结果如下:

上面的代码应该有性能问题,如果文件特别大,处理起来应该会很慢,先这样吧,后面再想办法优化一下。

在Delphi XE6 中不能使用system.hash,如果能使用,我应该很早就完成这个任务了。

结语

接下来要获取文件的创建日期,修改日期,文件大小,文件类型(这个应该不着急)。暂时想到这些,后面想到什么在补充。

如有错误,敬请指出,感谢指正!     — 2020-06-06 18:18:23

赞(0) 打赏
转载请注明:飘零博客 » Delphi-获取文件MD5 Hash值
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎光临