Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#1

D12: E2382 Konstruktoren können mit Instanzenvariablen nicht aufgerufen werden

  Alt 29. Feb 2024, 20:39
Delphi-Version: 12 Athens
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (29. Feb 2024 um 20:42 Uhr)
  Mit Zitat antworten Zitat