AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Klassennamen in String => Instanz erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Klassennamen in String => Instanz erstellen

Ein Thema von DevilsCamp · begonnen am 20. Jun 2006 · letzter Beitrag vom 20. Jun 2006
Antwort Antwort
DevilsCamp
(Gast)

n/a Beiträge
 
#1

Klassennamen in String => Instanz erstellen

  Alt 20. Jun 2006, 13:38
Gibt es eine Möglichkeit Instanzen von Klassen zu erstellen, deren Namen (also den Klassennamen) ich in irgendeiner Liste (TStringList, z.B.) habe?


Beispiel:
Ich habe folgende Liste:
Code:
TEdit
TEdit
TEdit
TLabel
TLabel
TListBox
TForm2
Diese würde ich dann gerne in meinem Code erstellen.

Also etwa so:
Delphi-Quellcode:
for i := Low(Liste) to High(Liste) do
begin
  irgendeineVariable := Liste[i].Create(Self);
end;
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Klassennamen in String => Instanz erstellen

  Alt 20. Jun 2006, 13:39
So wie ich die RTTI kenne, gibts da bestimmt irgendne Möglichkeit. Aber ich weiß leider nicht genau, welche.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Lemmy1
Lemmy1

Registriert seit: 28. Nov 2004
Ort: Ismaning
184 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Klassennamen in String => Instanz erstellen

  Alt 20. Jun 2006, 14:01
Habs noch nicht selbst ausprobiert aber ein Googlesuche ergab folgendes:

zu erst müssen alle in Frage kommenden Klassen via "RegisterClass" registriert werden. Anschließend kann man die via FindClass wieder auffinden.


Grüße
Daniel
www.nemu.com - The N64 Emulator
  Mit Zitat antworten Zitat
markusl

Registriert seit: 25. Apr 2006
Ort: Rotkreuz
21 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: Klassennamen in String => Instanz erstellen

  Alt 20. Jun 2006, 18:16
Hallo zusammen,

hier mal ein Codeschnipsel unter der Annahme das in der Liste die Klassennamen enthalten sind und TControl eine gemeinsame Basisklasse ist.

Delphi-Quellcode:
// Definition der gemeinsamen Klasse
TControlClass = class of TControl;
...

procedure TForm1.xyz;
var
  ctrl : TControl;
begin
  for i := Low(Liste) to High(Liste) do
  begin
    ctrl := TControlClass(GetClass(Liste[i])).Create(self);
    with ctrl do
    begin
      // gemeinsame Aktionen etc.
      // ...
    end;
  end
end;

...

initialization
   // einmaliges Registrieren der potentiellen Klassen
   RegisterClasses([TEdit,TListBox,TLabel]);

HTH

Markus
  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 10:35 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