AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Klassen zur Laufzeit auf abstrakte Methoden überprüfen
Thema durchsuchen
Ansicht
Themen-Optionen

Klassen zur Laufzeit auf abstrakte Methoden überprüfen

Ein Thema von Sc0rpe · begonnen am 8. Nov 2021 · letzter Beitrag vom 8. Nov 2021
 
Sc0rpe

Registriert seit: 3. Mai 2021
7 Beiträge
 
Delphi XE6 Professional
 
#1

Klassen zur Laufzeit auf abstrakte Methoden überprüfen

  Alt 8. Nov 2021, 07:47
Delphi-Version: XE6
Hallo Leute,

ich möchte gerne zur Laufzeit eine Liste aller Klassen erstellen, welche von einer bestimmten abstrakten Basisklasse ableiten.
Das kann ich bereits mithilfe der RTTI tun. Nun möchte ich aus dieser Liste später aber dynamisch eine Instanz erzeugen.
Deshalb sollten die Klassen in dieser Liste also nicht abstrakt sein, bzw. keine abstrakten Methoden haben.

Hier auf Stackoverflow habe ich schon eine Lösung dazu gefunden:
How to check if a Delphi class is declared abstract

Leider scheitert es bei mir an der Zeile
Code:
if GetVirtualMethod(c, i) = @_AbstractError then
Denn dazu heißt es
Code:
Unknown identifier _AbstractError
Obwohl ich klar und deutlich in der Datei System.pas die Deklaration und Definition von _AbstractError sehe.

Hat jemand eine Idee wieso? Denn es wundert mich schon, dass auf Stackoverflow niemand dieses Problem damit hatte.

btw: Ich habe die Frage auch hier gestellt: Check if a class has abstract functions

Geändert von Sc0rpe ( 8. Nov 2021 um 08:08 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz