Autor
|
Thema: Variable auf bestimmte Art ansprechen (1402 mal gelesen)
|
Erwin_S Mitglied
Beiträge: 37 Registriert: 13.08.2006
|
erstellt am: 15. Aug. 2006 17:15 <-- editieren / zitieren --> Unities abgeben:
Hi! ich habe jetzt ein Problem, mit dem ich mich schon länger herumschlage und mich immer wieder frage, ob es möglich ist und wenn ja, wie: Ich habe eine Anzahl von BEs(Fahrzeuge) und eine dazugehörige Anzahl von Variablen. In einer Methode soll der Wert einer bestimmten Variablen verändert werden, je nachdem, welches BE die Methode aufruft. Wie kann ich das machen, OHNE eine If-Schleife für jedes BE? Geht das überhaupt irgendwie? Ich danke für jede gute Idee! Gruß Euer Erwin S. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 15. Aug. 2006 17:20 <-- editieren / zitieren -->
|
Erwin_S Mitglied
Beiträge: 37 Registriert: 13.08.2006
|
erstellt am: 16. Aug. 2006 09:01 <-- editieren / zitieren --> Unities abgeben:
Hi Simulator, meinst du den Weg über die Tabelle, die du über eine For-Schleife abarbeitest? Das Problem dabei ist, dass man Tabelleninhalte nicht innerhalb einer waituntil-Anweisung überwachen kann. Deshalb möchte ich die Werte gern in einer Variablen gespeichert haben.... Gruß Erwin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
math4fun Mitglied
Beiträge: 167 Registriert: 12.12.2005
|
erstellt am: 16. Aug. 2006 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für Erwin_S
Klasse Frage! Nehmen wir an, dass die BE-Namen und Variablennamen gleich sind: z.B. "Entity1" und "Entity2". Anderenfalls muss man mit String etwas herumwerkeln. Dann funktioniert folgende Steuerung: is obj bject; do obj := @.name; -- hier wird der String "Entity1" in das Variablenobjekt umgewandelt. obj.Val := obj.Val + 1; -- Zugriff auf den Wert einer Variable. end; ------------------ PM www.math4fun.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 16. Aug. 2006 12:22 <-- editieren / zitieren -->
Hi, Wenn Du einen Zeilen/Spalten-Index benutzt, kannst Du das Tabellen feld z.B. ueber tabelle["be.name",..] direkt aufrufen. Du brauchst dazu keine Schleife. Aber Du kannst auch in den Be´s Attribute definieren, die ueber be.attributnamen aufgerufen werden. Diese sind auch ueberwachbar Gruss
------------------ Der Simulator |
Erwin_S Mitglied
Beiträge: 37 Registriert: 13.08.2006
|
erstellt am: 16. Aug. 2006 13:59 <-- editieren / zitieren --> Unities abgeben:
Hi PM, danke für die gute Antwort. Daran hatte ich auch schon gedacht, es aber nicht hinbekommen. Es klappt aber immer noch nicht so ganz bei mir, weil er hinter den Namen immer noch so'n (?) dichtet: obj:=@.Name; --der Name: Entity1. obj.Wert:=obj.Wert+1; --da er hier das Objekt immer Entity1 (?) nennt, findet er es nicht und gibt die Fehlermeldung: "Ein VOID kann keinen Wert empfangen..." Erwin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Erwin_S Mitglied
Beiträge: 37 Registriert: 13.08.2006
|
erstellt am: 16. Aug. 2006 15:35 <-- editieren / zitieren --> Unities abgeben:
Schon gut, das hat sich erledigt. Das Objekt mit dem richtigen Namen muss natürlich auch existieren... Aber kann ich die Variable auch in einem anderen Netzwerk (eins höher) platzieren? mit obj:=@.Name; root.obj.Wert:=root.obj.Wert +1; klappt das nicht und auch nicht mit dem absoluten Bezeichner... Erwin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 16. Aug. 2006 15:41 <-- editieren / zitieren -->
Hi, mit "root" greifst Du auf das oberste Netzwerk innerhalb der Netzwerkhierarchie zu. Versuchs mal mit "~.obj.wert" Gruss ------------------ Der Simulator |
Erwin_S Mitglied
Beiträge: 37 Registriert: 13.08.2006
|
erstellt am: 16. Aug. 2006 15:45 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 16. Aug. 2006 16:05 <-- editieren / zitieren -->
Hi, so gehts obj:=~.@.Name; Gruss ------------------ Der Simulator |
Erwin_S Mitglied
Beiträge: 37 Registriert: 13.08.2006
|
erstellt am: 16. Aug. 2006 16:12 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 16. Aug. 2006 16:15 <-- editieren / zitieren -->
Hi, versuchs mal so
obj:=str_to_obj("~."+@.name); Gruss ------------------ Der Simulator |
| Senior Konstrukteur (m/w/d) | Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: als ambitionierte:n Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden in allen Technologiebereichen ... | Anzeige ansehen | Konstruktion, Visualisierung |
|
Erwin_S Mitglied
Beiträge: 37 Registriert: 13.08.2006
|
erstellt am: 16. Aug. 2006 16:29 <-- editieren / zitieren --> Unities abgeben:
|