Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Variable zusammenfügen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Variable zusammenfügen (3868 mal gelesen)
cycloon
Mitglied


Sehen Sie sich das Profil von cycloon an!   Senden Sie eine Private Message an cycloon  Schreiben Sie einen Gästebucheintrag für cycloon

Beiträge: 9
Registriert: 18.01.2011

erstellt am: 18. Feb. 2011 21:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.


Sehen Sie sich das Profil von planty an!   Senden Sie eine Private Message an planty  Schreiben Sie einen Gästebucheintrag für planty

Beiträge: 139
Registriert: 18.09.2006

erstellt am: 20. Feb. 2011 10:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cycloon 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von cycloon an!   Senden Sie eine Private Message an cycloon  Schreiben Sie einen Gästebucheintrag für cycloon

Beiträge: 9
Registriert: 18.01.2011

erstellt am: 20. Feb. 2011 19:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von math4fun an!   Senden Sie eine Private Message an math4fun  Schreiben Sie einen Gästebucheintrag für math4fun

Beiträge: 167
Registriert: 12.12.2005

erstellt am: 21. Feb. 2011 09:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cycloon 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von cycloon an!   Senden Sie eine Private Message an cycloon  Schreiben Sie einen Gästebucheintrag für cycloon

Beiträge: 9
Registriert: 18.01.2011

erstellt am: 21. Feb. 2011 10:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von math4fun an!   Senden Sie eine Private Message an math4fun  Schreiben Sie einen Gästebucheintrag für math4fun

Beiträge: 167
Registriert: 12.12.2005

erstellt am: 21. Feb. 2011 17:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cycloon 10 Unities + Antwort hilfreich

Hi CycLoon,

schau Dir mal im Index die Beschreibung von "Benutzerdefinierter Spaltenindex" an.

Was steht in Deinem Beispiel für <Spalte> oder <Zeile>?

------------------
PM

www.math4fun.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cycloon
Mitglied


Sehen Sie sich das Profil von cycloon an!   Senden Sie eine Private Message an cycloon  Schreiben Sie einen Gästebucheintrag für cycloon

Beiträge: 9
Registriert: 18.01.2011

erstellt am: 04. Mrz. 2011 12:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz