Einzelnen Beitrag anzeigen

TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.826 Beiträge
 
Delphi 12 Athens
 
#1

Class methode problem in DEC

  Alt 28. Feb 2021, 08:30
Hallo,

mir ist gerade aufgefallen, dass eine Architekturänderung neulich dazu führt, dass eines
der Demo Programme nicht mehr funktioniert. Leider habe ich noch keinen Weg gefunden,
wie ich das umbauen muss, damit es wie gedacht funktioniert.

Worum geht's?

1. Es gibt eine Klasse TDECHash als Basisklasse aller Hash Algorithmen
2. Diese hat eine Klassenmethode ClassByName, da sich alle konkreten Implementierungen in
einer Verwaltungsliste registrieren können. ClassByName gibt eine TDECHashClass zurück
wenn die zu suchende Klasse in der Liste ist. TDECHashClass ist so definiert:
TDECHashClass = class of TDECHash; 3. Die Architekturänderung von neulich war, dass zwischen TDECHash und den einzelnen
Implementierungsklassen eine TDECHashAuthentication Klasse geschoben wurde und die
Klassenmethode IsPasswordHash, welche das hier ausführt:
Result := self.InheritsFrom(TDECPasswordHash); wurde
nach TDECHashAuthentication verschoben. TDECPasswordHash erbt von TDECHashAuthentication
und alle in Zukunft hinzugefügten Password Hash Umsetzungen sollen von
TDECPasswordHash erben.
4. Das FMX Hash Demo Programm enthält eine COmbobox mit einer Liste aller registrierter Hash
Algorithmen und folgenden Code:
Delphi-Quellcode:
   procedure TFormMain.ComboBoxHashFunctionChange(Sender: TObject);
   begin
     CheckBoxIsPasswordHash.IsChecked :=
       TDECHash.ClassByName(
        ComboBoxHashFunction.Items[ComboBoxHashFunction.ItemIndex]).IsPasswordHash;
   end;
IsPasswordHash wird so natürlich nicht mehr gefunden, nur haben alle probierten
Änderungen nicht zum erfolg geführt. Wenn's compiliert hat und ich eine Hash-Klasse
vererbungstechnisch auf TDECPasswordHash geändert habe war IsPasswordHash trotzdem false...

Wie muss ich das anpacken, damit es sauber so wie von mir gedacht funktioniert?

Grüße
TurboMagic
  Mit Zitat antworten Zitat