TDECPasswordHash ein Instanz-Zeiger (class), aber du brauchst für diesen Cast ebenfalls einen Klassen-Zeiger (class of).
Also nicht TDECPasswordHash sondern ein TDECPasswordHashClass (class of TDECPasswordHash).
Bisschen böse, wenn der Compiler hier nicht meckert.
Vielleicht ließe sich hier auch mit Attributen spielen?
Delphi-Quellcode:
type
TDECHashClass = class of TDECHash;
TDECHash = class
public
class function IsPasswordHash: Boolean;
end;
//[DECMaxSaltLength(-1)]
TDECPasswordHash = class(TDECHash)
public
class function GetMaxSaltLength:UInt16; // hier, oder in der Basisklasse (ohne Cast), das erste Attribut nehmen
end;
[DECMaxSaltLength(16)] // oder mit einem generellen Parameter-Attribut [DECParam('MaxSaltLength', 16)] aka DECParamAttribute
THash_BCrypt = class(TDECPasswordHash)
public
end;