在德尔福(东京),我们有:
THashSHA2 = record
private
...
function GetDigest: TBytes;
procedure Update(const AData: PByte; ALength: Cardinal); overload;
public
...
end;
有没有办法访问GetDigest / Update函数?不是通过RTTI,因为这将太慢。如果程序是公开的,我需要一些快速的东西。
答案 0 :(得分:3)
你实际上在这里提出了两个不同的问题:
没有。没有通用和有效的方法来访问(任何)私有proc / func。
是。 可以/应该使用公共函数HashAsBytes而不是GetDigest。
function HashAsBytes: TBytes; inline;
公共程序可以/应该使用更新而不是私有程序。
procedure Update(const AData; ALength: Cardinal); overload;
procedure Update(const AData: TBytes; ALength: Cardinal = 0); overload; inline;
procedure Update(const Input: string); overload; inline;