![]() |
Alle Instanzen einer Klasse benachrichtigen
Hallo :hi:,
ich habe eine Klasse TMensch mit den Methoden Sagen und Hören. Ich habe mehrere Instanzen der Klasse. Wenn nun eine ein Mensch etwas sagt möchte ich den gesagten Text an alle anderen Menschen senden. Diese sollen dann darauf reagieren, oder es zumindest hören(in der Hören Methode). Ich möchte nicht jeden Mensch das gesagte einzeln zusenden, sondern an alle, da die sich ja nicht kennen und es auch nicht feststeht, wie viele Menschen da sind. Ich hab nach Nachrichten und Events gesucht, aber nichts gefunden, das mir weiterhilft. Ich hoffe ihr versteht was ich meine und könnt mir helfen. Sehr lieb wäre ein Beispiel. ;) MfG freak |
Re: Alle Instanzen einer Klasse benachrichtigen
Hallo freak4fun,
google mal nach Observer Pattern. Deine Instanzen der Klasse TMensch müssen sich bei einem Observer anmelden und auch an ihn die Nachricht schicken. Der Observer schickt sie an alle weiter, die sich bei ihm angemeldet haben. Beim Zerstören einer Instanz muss sich wieder abgemeldet werden. Wenn du nicht klarkommst, kann ich ein Beispiel posten. Gruß, Frank |
Re: Alle Instanzen einer Klasse benachrichtigen
Hallo Frank,
danke für die schnelle Antwort. Das Prinzip trifft mein Problem zu 100%. Ich schaue mir das gerade an. Mit den Interface ist auch eine schöne Sache, da muss man sich nicht mehr um das Freigeben kümmern. Allerdings glaube ich du solltest dein Beispiel schon mal vorbereiten, weil so ganz steig ich da nicht durch. Ich werde mal posten, was ich hinbekommen hab, dann werden wir weiter sehen. :mrgreen: MfG freak |
Re: Alle Instanzen einer Klasse benachrichtigen
du könntest auch einfach im Create von TMensch die Instanz (Self) in eine Liste hängen (die Liste könnte man ja beim Create als Parameter übergeben). Und wenn du dann alle Instanzen in einer Liste hast ist es ein leichtes diese zu benachrichtigen. (im Destroy natürlich wieder aus der Liste austragen)
|
Re: Alle Instanzen einer Klasse benachrichtigen
@SirT: Ich hab ein dynamisches Array of TMensch erstellt, geht so eine Liste auch einfacher?
@spider: Ich bleib weiterhin auch an deine Idee dran. ;) MfG freak |
Re: Alle Instanzen einer Klasse benachrichtigen
1.) ein Liste der Klasse TObjectList ist besser, weil Items hinzugefügt und entfernt werden können,
ohne dass wie im Array Verschiebereien stattfinden. 2.) Die Liste darf es nur einmal geben, da sie zur Klasse TMensch gehört. 3.) Die Liste wird also als globale Variable im Abschnitt implementation geführt 4.) TMensch.Create trägt sich selbst in die Liste ein und TMensch.Destroy trägt sich selbst aus der Liste aus. 5.) TMensch.Create prüft, ob es die Liste schon gibt, falls nicht, wird sie erzeugt 6.) TMensch.Destroy prüft, ob es das letzte Objekt in der Liste war. Falls ja: FreeAndNil(liste) |
Re: Alle Instanzen einer Klasse benachrichtigen
Zitat:
|
Re: Alle Instanzen einer Klasse benachrichtigen
Zitat:
Natürlich hat tommie-lie recht, aber ist das nicht der Sinn von Klassen? Abstrahieren und Arbeit abnehmen? |
Re: Alle Instanzen einer Klasse benachrichtigen
Zitat:
Edit: Es wird spät, ich fange an die Kommas an die falschen Stellen zu setzen... |
Re: Alle Instanzen einer Klasse benachrichtigen
Ich bin dabei von dynamischen Array auf TList umzustellen. :mrgreen:
[edit] In der Liste sind ja nur Pointer, da bekomm ich meine TMeschObjekte gar nicht wieder. :( [/edit] MfG freak |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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 by Thomas Breitkreuz