Hi DF!
Ich habe folgende Klassen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| TLibrary = class(TObject) public function HasMethod(AFunc : String) : Boolean; end;
TStdLibrary = class(TLibrary) public function Rotate : Boolean; function Move : Boolean; end; |
Die Implementation der HasMethod-Methode sieht wie folgt aus:
Delphi-Quelltext
1: 2: 3: 4:
| function TLibrary.HasMethod(AFunc: String): Boolean; begin Result := (MethodAddress(AFunc) <> nil); end; |
Sie ergibt jedoch immer false! Sogar bei folgendem Aufruf:
Delphi-Quelltext
1: 2:
| Result := TStdLibrary.Create(Robot); Bla := Result.HasMethod('rotate'); |
Für mich ist das total unverständlich, da TStdLibrary die Methode ja besitzt! Aber HasMethod liefert false zurück...
Warum ergibt die Methode immer false?
Die Lösung ist nicht siebzehn.