In XE funktionierte es noch,
ich weiß die Lösung für D12,
aber ich versteh nicht warum.
Delphi-Quellcode:
constructor Create(const Key: string; const Value: TBytes); overload;
constructor Create(const Key: string; const Value: string); overload;
constructor Create(const Key: string; Value: Integer); overload;
constructor Create(const Key: string; Value: Boolean); overload;
class function Create(Keys: array of string; Values: array of TBytes): TArray<TCryptAttribute>; overload; static;
...
In einer Class-Function heißt es plötzlich, obwohl es da nirgendwo eine Instanz-Variable gibt, beim
Result := Create(Keys, Data);
Zitat:
[dcc32 Fehler] E2382 Konstruktoren können mit Instanzenvariablen nicht aufgerufen werden
Self wäre ja der ClassType, aus einem unsichtbaren Parameter, aber da es ein Record ist und die Class-Funktion sowieso eine Static ist (sein muß), gibt es Self nicht.
Und auch die beiden Parameter sind Parameter, sowie lokale Variablen, aber bis zu Diesen kommt es eh nicht.
Also kann "Self" nur der Typ sein und keine Variable.
Ja, mit
TCryptAttribute.Create(
geht es, aber prinzipiell ist es das Gleiche.