Announcement

Collapse
No announcement yet.

Objekterstellung mit Klassenname

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Objekterstellung mit Klassenname

    Hallo,
    habe das Problem, dass ich ein Objekt anhand eines Klassennamens (als String) erstellen muss.
    Kann mir da jemand helfen???
    Mit besten dank im vorraus

  • #2
    Hallo!<br>
    Die Lösung ist eine Abstract Factory.<br>
    Ein Beispiel findest du bei :http://delphi.about.com/gi/dynamic/offsite.htm?site=http://www.obsof.com/delphi%5Ftips/pattern.html<br>
    BYE BERN

    Comment


    • #3
      Hallo Bernd,
      vorerst einmal besten dank für deine Antwort. Leider hilft mir das nicht wirklich weiter. Meine Propblemstellung ist folgende:<BR>
      Ich muß zur Laufzeit die Eigenschaften einer Componente, von welcher ich nur den Klassennamen kenne, in einer Combobox anzeigen.
      Vielleicht war mein Gedanke die Componente erst erzeugen zu müssen um seine Eigenschaften auflisten zu können falsch

      Comment


      • #4
        Hallo Gerhard,<BR><BR>
        es ist schon ein Unterschied, ob du das Objekt anhand des Klassennamens erzeugen oder finden willst.<BR>
        Willst du es erzeugen, so kannst du mit <BR>FindClass(const ClassName: string): TPersistentClass;<BR>
        die Klasse suchen und dein Objekt erzeugen.<BR>
        Du kannst aber auch das Objekt anhand des Klassennamen suchen. Das Problem ist natürlich, das es nur eindeutig identifiziert werden kann, wenn es nur einmal in der Unit existiert.<BR>
        So erhälst du das erste Object mit dem ClassName:
        <PRE>
        function TForm1.GetComponentByClassName(AName : String): TComponent;
        var
        i : Integer;
        begin
        Result := nil;
        for i := 0 to ComponentCount - 1 do
        begin
        if Components[i].ClassName = AName then
        begin
        Result := Components[i];
        break;
        end;
        end;
        end;
        </PRE>
        Fran

        Comment


        • #5
          Hallo!<br>
          Also soweit ich das sehe ist die Erzeugung des Objektes hier nicht das Thema.<br>
          Leider kenne ich mich in deinem Problemgebiet nicht aus. Ich "glaube" das dich vielleicht das Thema RTTI (Runtime Type Information) weiterbringt. Such mal hier im Forum...<br>
          BYE BERN

          Comment


          • #6
            Hallo, <BR>

            Bernd hat das richtig gesehen. Das erzeugen des Objektes um an seine Eigenschaften zu kommen war nur ein etwas schlechter Lösungsansatz. Mein Problem ist einfach die Anzeige (in String-Liste oder ComboBox od. dgl) der gesamten Eigenschaften eines Objektes, von welchem ich nur den Klassennamen kenne. Da diese Funktion auch nach Einbindung neuer Objekte funktionieren soll, möchte ich eine Routine schreiben, die diese Auflistung kann. <BR>
            Vielleicht kennt jemand einen Weg.
            &#10

            Comment


            • #7
              Hallo<BR>
              Bernd hat Recht, das Erzeugen des Objektes um an seine Eigenschaften zu kommen war ein Schlechter Lösungsansatz. Mir geht es lediglich um die Auflistung der Eigenschaften eines Objektes, von welchem ich den Klassennamen kenne. Die Eigenschaften sollten in Form einer String-Liste für die Anzeige in einer ComboBox zur Verfpgung stehen.
              <BR>
              Vielleicht kann mir jemand weiterhelfe

              Comment

              Working...
              X