Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#1

Komponenten merken und später zuweisen

  Alt 29. Sep 2008, 16:21
Hallo alle,

ich habe eine Funktion, die zu einer bestimmten Textbezeichnung eine Komponente ermittelt und zurückgibt:

xyz := GetMyComponent(DescriptionName, ClassName: String; CreateFlag: Boolean): TComponent;

Existiert eine passende Komponente noch nicht, wird sie ggf. direkt in der Funktion erzeugt.
Zu jeder Bezeichnung wird die gelieferte Komponente in einer StringList gespeichert und bei nochmaliger Anfrage mit der gleichen Bezeichnung aus dieser Liste gelesen.
Jede Anfrage mit einer bestimmten Bezeichnung liefert also immer die gleiche Komponente zurück.

Nun kann es vorkommen, dass es Aufrufe gibt, in der die Komponente noch nicht existiert aber auch noch nicht erzeugt werden darf.
Hier würde ich gern eine spätere Zuweisung "vormerken"

C1 := GetMyComponent('Test1', 'TTest', False);
C2 := GetMyComponent('Test1', 'TTest', False);
C3 := GetMyComponent('Test1', 'TTest', False);

Ist eine Rückgabe derzeit nicht möglich, sollen die Parameter in einer Liste gespeichert:
'Test1' -> C1
'Test1' -> C2
'Test1' -> C3

Wird später dann durch
C4 := GetMyComponent('Test1', 'TTest', True);
die passende Komponente erzeugt und zurückgeliefert, soll diese Komponente auch C1, C2 und C3 zugewiesen werden.


Lässt sich das realisieren und wie? Müsste ich die potentielle Rückgabeadresse mit übergeben?

GetMyComponent(MY_RESULT_ADRESS: POINTER; DescriptionName, ClassName: String; CreateFlag: Boolean): TComponent;

xyz := GetMyComponent(Pointer(xyz), 'Test1', 'TTest', False): TComponent;


Mir fehlt der Ansatz, wie man da heran geht (Zeiger sind was fürchterliches)...

Das besondere Problem (für mich) ist, dass C1, C2, und C3
- normale Variablen
- Variable einer Komponente
- Propertys einer Komponente (write FMyComponent bzw. write SetMyComponent)

sein können.


Lässt sich das (so) lösen?
Danke für jede Hilfe.


Hintergrund:
Ich habe von TMemIniFile eine Komponente abgeleitet, die Binärdaten (Bilder) und auch Komponenten speichern und lesen kann. Das funktioniert alles super, nur die Verküpfungen der Komponenten untereinander sind noch nicht komplett geklärt.
Beim Speichern und Laden von Komponenten weist TExtIniFile automatisch Sections zu, die diese Komponenten dann zum schreiben und lesen ihrer Daten verwenden. Bei Bedarf werden die benötigten Komponenten automatisch erzeugt und dann veranlasst, ihre eigenen Daten einzulesen.
Die Ini-Komponente stelle ich dann hier gern bereit, falls Bedarf besteht.

PS:
Über den Sinn und Unsinn der Verwendung von Textdateien zur Datenspeicherung will ich keine unendliche Diskussion entfachen Für meine Zwecke ist das im Moment genau das richtige.


Stahli
  Mit Zitat antworten Zitat