Autor
|
Thema: Variable zusammenfügen (3868 mal gelesen)
|
cycloon Mitglied
Beiträge: 9 Registriert: 18.01.2011
|
erstellt am: 18. Feb. 2011 21:14 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, es wäre super wenn mir jmd. bei folgendem Problem helfen könnte: Ich habe mehrere Stationen die alle auf eine Methode zugreifen sollen, diese erkennt welche Station gerade auf sie zugreift und "ändert" entsprechend intern die Variablen. Das Auslesen funktioniert aber nicht das zusammensetzen der neuen Variablen. Methodenname := obj_to_str(?); Test := strRcopy(Methodenname,1);
VARIABLE_"Test" := bearbeitungszeit; für "TEST" soll dann nur eine Zahl eingetragen werden, sodass z.B. folgendes erzeugt wird: VARIABLE_2 := bearbeitungszeit; Wie kann ich das realisieren? Vielen Dank schon mal und ein schönes Wochenende. Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
planty Mitglied Dipl.-Ing.
Beiträge: 139 Registriert: 18.09.2006
|
erstellt am: 20. Feb. 2011 10:27 <-- editieren / zitieren --> Unities abgeben: Nur für cycloon
Hi, ich will nicht pauschal sagen, dass das nicht möglich ist, aber kein Ansatz der mir einfällt ist besonders praktikabel. Außerdem sind solche Verrenkungen im Quellcode schlecht lesbar. Im Allgemeinen würde man solche Fallunterscheidungen sicherlich via if/else oder inspect/when lösen. Wenn Du keine festen Speicherorte für die Werte hast, erstelle Dir eine Tabelle mit Schlüssel/Wert oder Schlüssel/Objekt Paaren auf die Du mit einem Index zugreifst. Gruß P.
------------------ Two hours of trial and error can save ten minutes of manual reading! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cycloon Mitglied
Beiträge: 9 Registriert: 18.01.2011
|
erstellt am: 20. Feb. 2011 19:21 <-- editieren / zitieren --> Unities abgeben:
Hallo planty, ich habe eine Lösung gefunden mit welcher ich zum einen Objekte (Einzelstationen) oder in Tabellen Daten vergleichen kann. Dazu benötige ich Variablen als string oder object. is AufrufMethVon: string; StationsIndex: string; Montagestation: string; MontagestationOBJ: object; do AufrufMethVon := obj_to_str(?); StationsIndex := strRcopy(AufrufMethVon,1); MontagestationOBJ := (str_to_obj(".Modelle.Netzwerk.Schritt_"+StationsIndex)); Montagestation := (".Modelle.Netzwerk.Schritt_"+StationsIndex); MontagestationOBJ.Bearbeitungszeit := (Daten[4,Montagestation])/2); (str_to_obj("AP_NAZ_"+StationsIndex)).Bearbeitungszeit := (Daten[4,Montagestation])/2); Meine Methode wird von unterschiedlichen Stationen aufgerufen. Die Methode bemerkt nun von welcher und schreibt die entsprechenden Zeiten in eine Tabelle. Eine andere Methode liest diese Tabelle wiederum aus, nachdem sie erkannt hat von welcher Station sie aufgerufen wurde und sucht dann an entsprechender Stelle in der Tabelle.... wobei ich den Suchalgorithmus hier Daten[4,Montagestation] nicht wirklich verstanden habe... Sucht dieser die ganze Tabelle durch ob irgendwo ein Wort vorkommt? (Der Name mit dem verglichen werden soll, befindet sich in der ersten Spalte, die Informationen in den Spalten 2,3,4....) Wahrscheinlich stehe ich gerade auf dem Schlauch grüße c.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
math4fun Mitglied
Beiträge: 167 Registriert: 12.12.2005
|
erstellt am: 21. Feb. 2011 09:27 <-- editieren / zitieren --> Unities abgeben: Nur für cycloon
Hi Cycloon, die fragliche Zeile war nicht korrekt. Ich habe sie geändert: MontagestationOBJ.Bearbeitungszeit := (Daten[4,Montagestation])/2; In der Zelle Daten[4,Montagestation] ist ein Objekt "Methode". Durch die runden Klammern wird sie aufgerufen. Diese Methode bringt eine Zahl zurück, die durch 2 geteilt wird.
------------------ PM www.math4fun.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cycloon Mitglied
Beiträge: 9 Registriert: 18.01.2011
|
erstellt am: 21. Feb. 2011 10:58 <-- editieren / zitieren --> Unities abgeben:
Hallo math4fun, danke für den Hinweis. Noch mal kurz zum besseren Verständnis: Syntax für das Auslesen von Daten aus einer Tabelle: Variable := Tabellenname[<Zeile>,<Spalte>]; -- In Variable wird nun ein bestimmter Zahlenwert (in meinem Fall) geschrieben Wenn, wie in meinem Fall, für <Zeile> eine von 8 versch. Stationen steht und in Spalte = 4 sich die zugehörigen Zeiten (Typ real) befinden, vergleicht PlantSim automatisch in der ersten Spalte meine Station (ihren Namen) mit den Namen des Tabelleninhaltes der ersten Spalte und gibt mir dann den Wert der Zelle [<Stationsname>,4] zurück? Meine Frage ist eigentlich, warum kann PlantSim diese Zelle finden? Weil die erste Spalte eine Spalte ist, die Datensätze identifizieren kann? schon mal Danke. Grüße c.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
math4fun Mitglied
Beiträge: 167 Registriert: 12.12.2005
|
erstellt am: 21. Feb. 2011 17:42 <-- editieren / zitieren --> Unities abgeben: Nur für cycloon
|
cycloon Mitglied
Beiträge: 9 Registriert: 18.01.2011
|
erstellt am: 04. Mrz. 2011 12:49 <-- editieren / zitieren --> Unities abgeben:
Hi math4fun, sorry für die späte Antwort! Hier sind die Spaltennamen (in Anführungszeichen, in der Tabelle natürlich nicht vorhanden) aus meiner Tabelle. Ein Ausschnitt aus den dazugehörigen Daten in den nächsten 2 ZEilen (mit ; hier von mir getrennt) "Schritt" "T0" "T1" "Bearbeitungszeit" "NAZ_Dauer" Schritt_A; 215685.817697226; 308691.97156294; 14400; 7200;; Schritt_B; 0; 0; 0; 0 Wenn ich nun "Schritt_A", "Bearbeitungszeit" (also 14400) auslesen möchte und an die Station "Schritt_A" schicken möchte, kann ich doch folgenden Befehl nutzen, oder? MontagestationOBJ.Bearbeitungszeit := (Daten[3,Montagestation])/2; MontagestationOBJ bzw. Montagestation entsprechen, wie oben beschrieben, dem Pfad (als object) und dem Namen (string, für die Tabelle). Warum funktioniert das? Weil der Spaltenindex "Aktiv" ist? In welchen Fällen nehme ich runde Klammern? Weiß jemand, ob es zu Problemen kommen kann, wenn man die Bearbeitungszeit eines laufenden Prozesses durch eine externe Methode verändert? Vielen Dank schon mal. Beste Grüße c. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|