AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Klassenlose Procedure per String-Parameter aufrufen

Ein Thema von Harry Stahl · begonnen am 14. Sep 2017 · letzter Beitrag vom 15. Sep 2017
Antwort Antwort
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.118 Beiträge
 
Delphi 2009 Professional
 
#1

AW: Klassenlose Procedure per String-Parameter aufrufen

  Alt 14. Sep 2017, 21:00
Ich glaube, es liegt nicht an der Tatsache, ob es eine Klasse ist, sondern dass es published ist. In dem verlinkten Beispiel stehen die Methoden ebenfalls unter published. Nur das, was unter published steht, hat zur Laufzeit einen Namen. Der Rest wird vom Compiler gelöscht.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.560 Beiträge
 
Delphi 12 Athens
 
#2

AW: Klassenlose Procedure per String-Parameter aufrufen

  Alt 14. Sep 2017, 21:22
Ich glaube, es liegt nicht an der Tatsache, ob es eine Klasse ist, sondern dass es published ist. In dem verlinkten Beispiel stehen die Methoden ebenfalls unter published. Nur das, was unter published steht, hat zur Laufzeit einen Namen. Der Rest wird vom Compiler gelöscht.
OK, wenn das so ist, müsste ich halt ein Dummy-Object erzeugen und die prozeduren da rein packen.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.413 Beiträge
 
Delphi 12 Athens
 
#3

AW: Klassenlose Procedure per String-Parameter aufrufen

  Alt 14. Sep 2017, 21:25
Schau Dir mal Spring4D an. Damit kannst Du Deinen Code vollständig entkuppeln. Das wäre der wohl eleganteste Weg, aber auch dabei wirst Du Deine Klassen noch registrieren müssen.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Klassenlose Procedure per String-Parameter aufrufen

  Alt 14. Sep 2017, 21:31
In der TypeInfo (alte RTTI) ist nur Published drin, was man über Funktionen aus der Delphi-Referenz durchsuchenTypInfo und auch direkt über Methoden von [OH]System.TObject[/H] auslesen kann.
> MethodAddress, MethodName und FieldAddress

Aber auch in der erweiterten RTTI haben einfache Prozeduren keine Infos zum Namen, auch wenn diese neue RTTI auch Public und Private enthalten kann (bei Objekt-Methoden).
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.560 Beiträge
 
Delphi 12 Athens
 
#5

AW: Klassenlose Procedure per String-Parameter aufrufen

  Alt 14. Sep 2017, 22:03
Das mit dem Dummy-Object funktioniert jedenfalls, man muss aber noch explizit "published" hinzuschreiben:

Delphi-Quellcode:
type
   TDBProcs = Class
     published

     procedure ShowAbout;
   end;
Das ist schon eine große Hilfe, also Danke für die Hinweise.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Klassenlose Procedure per String-Parameter aufrufen

  Alt 15. Sep 2017, 11:33
man muss aber noch explizit "published" hinzuschreiben
Nicht, wenn man von TPersistent ableitet, bzw. selber die TypeInfo in für deine Klasse oder für einen derer Vorfahren aktivieren.
http://docwiki.embarcadero.com/RADSt...tionen_(Delphi)

In dem Fall ist Published dann die Standardsichtbarkeit, wie z.b. bei den TForms alles Published ist, was dort immer ganz oben deklariert wurde. (siehe die automatischen Felder und Methoden)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Klassenlose Procedure per String-Parameter aufrufen

  Alt 15. Sep 2017, 12:25
Das mit dem Dummy-Object funktioniert jedenfalls, man muss aber noch explizit "published" hinzuschreiben:

Delphi-Quellcode:
type
   TDBProcs = Class
     published

     procedure ShowAbout;
   end;
Das ist schon eine große Hilfe, also Danke für die Hinweise.
Du könntest auch
Delphi-Quellcode:
type
   TDBProcs = Class
     published

     class procedure ShowAbout; static;
   end;
probieren (ggfs. ohne das static) - dann bräuchtest du keine Instanz von TDBProcs anzulegen. Ich hab aber nicht nachgeschaut, ob "class procedure" mit published zusammen geht.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.560 Beiträge
 
Delphi 12 Athens
 
#8

AW: Klassenlose Procedure per String-Parameter aufrufen

  Alt 15. Sep 2017, 22:33
Ja, das mit der class procedure hatte ich auch überlegt. Geht auch (und auch mit published), macht aber letztlich an verschiedenen Stellen mehr Schreibarbeit....
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz