Zeuge hat geschrieben:Ich möchte um Programmcode zu sparen gerne Funktionen in einem Macro-Objekt realisieren, auslagern.
Wer möchte das nicht, zumindest als normaler Programmierer, der es gewohnt ist, funktional und prozedural zu strukturieren..... Sehr verständlich dein Wunsch.
Ich sehe hier aber einen Widerspruch. Erst weist du eine Zeichenkette zu:
Code: Alles auswählen
LaufzeitBegrenzung.Objekt:="WZ_01_Deckenlicht_Dimmer_1111" ** ist vom Typ Zeichen, ...
dann nimmst du diese aber an und weist sie einer numerischen Variable zu...
Code: Alles auswählen
LaufzeitBegrenzung.ObjektStatus:=LaufzeitBegrenzung.Objekt ** Typ Zahl, Erwarte als...
Kann das überhaupt so gutgehen? Einfach die Bezeichnung eines Elements zuweisen und hoffen, auch dessen Eigenschaften übergeben zu haben und auswerten zu können?
Das würde ja echte Objektorientiertheit mit den Eigenschaften als dessen Methoden bedeuten. Wäre ja schön, wenn das hier wirklich ginge! Hast du oder jemand anders das schon mal erfolgreich bei den Makros anwenden können?
Meiner Erfahrung nach sind das hier aber noch nichtmal lokal verriegelte Variablen, weshalb sowas hier -leider- niemals überschreibfest durch andere Prozesse oder sogar parallelverarbeitbar realisierbar ist. Und das wäre dann ja der Normallfall der Anwendung derartiger gekapselter funktionaler Makros. Schließlich will man die ja von verschiedenen Stellen aus aufrufen können. Aber durch den zeitliche Abstand zwischen Setzen eines (globalen) Variablenwertes und dessen Benutzung durch Aufruf des Makros sind dem zwischenzeitlichen Überschreiben der Variablen durch andere Prozesse Tür und Tor geöffnet. Mit Objektorientiertheit würde das nicht passieren...
...Jaja, ich weiß,
herstellerseitig heißt es, Parallelverarbeitung kann nie passieren. Gleichzeitig werden aber auch Ausnahmen gemacht, z.B. mit dem "warte"-Befehl. Und spätestens jeder als gekapselter Prozeß gestartete PHP-Block oder gar ein dort aufgerufenes "eval" führen zwangsläufig zur Parallelverarbeitung. Logisch, muß ja auch so sein. Denn die Welt, die diese Software modellhaft abbildet, initiirt nun mal stochastisch determinierte Events (sprich: Die Welt löst Ereignisse aus wann sie will, und nicht wann die Software das vorgibt). Und die Software hat darauf nunmal zu reagieren, wenn sie ihrer Aufgabe ordnungsgemäß nachkommen will. Und dazu gehören nunmal auch gleichzeitig stattfindene Ereignisse...
Und dann kommen diese schlimmen Anwender-Programmierer auch noch daher, und wollen Funktionalitäten zusammenfassen in einem Makro, was die Sache nochmal um Größenordnungen verschlimmert. Denn Laufzeiten begrenzen oder Meldungen absetzen oder Datenbanken beackern oder was auch immer diese Funktional-Makros dann tun, wollen dann auch noch ganz unterschiedliche Objekte gleichzeitig! Und nun behaupte bitte keiner, Gleichzeitigkeit kommt real nicht vor! Ok, in Natura vielleicht weniger, aber softwaregesteuerte Wiederholzeiten sind an Minutengrenzen gebunden, selbst eine Stunde oder ein Tag wechseln genau an der Grenze einer Minute zur anderen...
Das wär nun alles überhaupt nicht schlimm, wenn es wie überall sonst in solchen Programmumgebungen üblich, auch hier einen Weg gäbe, die zu einem Aufruf gehörenden Daten (also Parameter usw.) überschreibfest durch andere Prozesse auch genau diesem Aufruf zu übergeben. Ebenso dürfen andere Prozesse, auch nochmalige Aufrufe des gleichen Makros in weiterer Instanz, lokal deklarierte Variablen innerhalb des Makros nicht überschreiben.
Objektorientiertheit wäre dabei natürlich der Königsweg.... und wäre eigentlich heutzutage wohl auch das völlig Normale. Aber man ist ja anspruchslos.... Allerdings bis auf den kleinen Anspruch der Software-Abbildbarkeit des hier vorhandenen realen Prozessmodells. Letzteres ist auch nicht gewünscht, sondern gefordert, sonst bräuchte man diese SW außer vielleicht als Schnittstelle eigentlich nicht wirklich.
Also:
Parametrisierbarkeit von Aufrufen von Instanzen(!) eines Makros bei lokaler Verriegelbarkeit der Variableninhalte innerhalb der Makroinstanz zu deren Laufzeit
- gibts die schon / ist die stabil nutzbar? (so wie z.B. Zeuge das vorhat)
- wenn nicht: kommt sowas irgendwann, oder wird das herstellerseitig strikt abgelehnt?
Gruß Gerd