有没有办法有效地访问记录的私人程序/功能?

时间:2018-01-21 18:54:45

标签: delphi

在德尔福(东京),我们有:

  THashSHA2 = record
  private
    ...
    function GetDigest: TBytes;
    procedure Update(const AData: PByte; ALength: Cardinal); overload;
  public
    ...
  end;

有没有办法访问GetDigest / Update函数?不是通过RTTI,因为这将太慢。如果程序是公开的,我需要一些快速的东西。

1 个答案:

答案 0 :(得分:3)

你实际上在这里提出了两个不同的问题:

  1. 有没有办法有效地访问记录的私人程序/功能?
  2. 没有。没有通用和有效的方法来访问(任何)私有proc / func。

    1. 有没有办法访问GetDigest / Update函数?
    2. 是。 可以/应该使用公共函数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;