在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
XE8新带了一个单元文件:System.Hash,其实,实现了三个类,分别是:
THash THashMD5 THashSHA1 原生实现对MD5及SHA1的支持! 以MD5为例,很容易取一个串的MD5值。 procedure TForm40.Button2Click(Sender: TObject); var md5:THashMD5; begin Label1.Text:=md5.GetHashString(edit1.Text);//生成32字符长度的MD5 //也可以这样: md5:=THashMD5.Create; md5.Update(edit1.Text); Label1.Text:=md5.HashAsString; end; THashMD5是记录类型,所以不用释放建立的实例。 THashMD5同时还提供了HMAC支持: Label1.Text:=md5.GetHMAC(Edit1.Text,'红鱼儿');//生成32字符长度的HMAC. 这不能不说是XE8的进步,复杂的MD5等算法,对于Delphi开发者也可以直接使用了,简单、方便! 后记:XE9增加了SHA2支持! 附:Hash 算法及其应用 --------------- 什么是 Hash Hash 的 查看全文>>
将数字转换大写的函数,改自这里,原文在Delphi XE8下不能正常转换。
Function MoneyConvert(mmje:real): string; const s1: string = '零壹贰叁肆伍陆柒捌玖'; s2: string = '分角元拾佰仟万拾佰仟亿拾佰仟万'; Function StrTran(const S, s1, s2: string): string; begin Result := S.Replace(s1, s2, [rfReplaceAll]); end; var S, dx: string; i, Len: Integer; begin if mmje < 0 then begin dx := '负'; mmje := -mmje; end; S := Format('%.0f', [mmje * 100]); Len := s.Length; for i := 0 to Len-1 do dx := dx + s1.Substring(Ord(s.Chars[i]) - Ord('0') , 1) +s2.substring(Len-i-1,1); dx := StrTra 查看全文>>
在自定义的Record类型中,使用string,不小心会造成内存泄漏,用下面的写法,则不会,在Xe8下测试通过。
type PMyRecord=^TMyRecord; TMyRecord=record i:Integer; s:string; end; var p:PMyRecord; begin p:=new(PMyRecord);//分配内存 p.i:=100;//这里我简写了,也可写成p^.i p.s:='aaaaaa'; dispose(p);//释放内存,这里是重点,p已经是PMyRecord类型,所以不用转换,如果是一个无类型的指针,则要做类型转换,如dispose(PMyRecord(p)); end; |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论