Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Problem mit ? und @

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:  Problem mit ? und @ (2073 mal gelesen)
tauli
Mitglied
Student


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

Beiträge: 23
Registriert: 28.01.2009

erstellt am: 13. Feb. 2009 14:08    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,

ich bin langsam am verzweifeln.
Irgendwie klappt daws mit ? oder @ bei mir nie.
Ich habe eine Förderstrecke47 mit Sensor.
Eine BE auf einem WT ruft am Sensor meine Mehode auf.
Diese Methode soll einen Pufferbestand prüfen und die Typen der Inhalte der WT zählen.

Code:
*/
is
etyp,gtyp : string;
i,j,k,l,m,x,y : integer;
do
x:=Netzwerk.Puffer.AnzahlBEs;
m:=0;
k:=0;
l:=0;
if x > 0 then
for i := 1 to x loop
gtyp := Netzwerk.Puffer.BEStueck(i).typ; -- Zeile 15
if gtyp = "a" then
m := m+1;
end;
if gtyp = "b" then
k := k+1;
end;
if gtyp = "c" then
l := l+1;
end;
next;
end;
print "PufferBestand: EGW1= ",k,"; EGW2= ",l,"; EGW3= ",m;
/*[...]

Soweit macht der Debugger alles, bis er bei i=x angekommen ist.
Dann gibt er die Fehlermeldung:
Fehler in Methode in Zeile '15': Unbekannter Name typ
Zeile 15 ist die, wo 'gtyp' gesetzt wird.
Das passiert auch wenn ich die Simulation laufen lasse und eine WT mit BE die Methode startet.
Keine Ahnung warum und wieso das so ist, wo es doch für i<x funktioniert.
Danach will ich mit den gezählten Typen auf den Variablen k,l,m gespeichert den Typ der aufrufenden BE vergleichen, um zu wissen ob diese BE in den Puffer abgeladen werden darf oder der WT mit BE in eine Warteschleife fahren muss.

Code:
*/
print @.inhalt.typ;
/*

Damit wollte ich den Typ in der Konsole anzeigen lassen.
Jetzt soll die BE vom WT entweder in den Puffer oder in eine Warteschleife fahren.
Code:
*/
etyp := @.inhalt.typ;
if etyp = "a" then
if m=0 then
?.inhalt.move(Netzwerk.Puffer);
end;
if k = 0 and (m+l) >= j then
?.umlagern(Förderstrecke48);
end;
if l = 0 and (m+k) >= j then
  ?.umlagern(Förderstrecke48);
end;
?.inhalt.move(Netzwerk.Puffer);
end;
/*[...]*/
end;


/*
Ich hab die Methdoe Stück für Stück aufgebaut und von ganz einfachen umlagern in den Puffer bis hierher programmiert.
Vorher hat es fast immer mit @ oder ? als Bezeichner geklappt. jetzt gibt es egal wo ich ? oder @ einsetze immer Fehlermeldungen:
Fehler in Methode in Zeile ... : Unbekannter Name typ

Sagt mir bitte was ich falsch mache.

Gruß tauli

*/

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

pom
Mitglied
Dipl.-Ing. (FH)


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

Beiträge: 182
Registriert: 25.08.2006

erstellt am: 13. Feb. 2009 16:15    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 tauli 10 Unities + Antwort hilfreich

Hi,

ist das Attribut Typ im WT oder im BE hinterlegt?

Weil der Befehl

Code:

Netzwerk.Puffer.BEStueck(i).typ


nur das WT betrachtet und nicht den Inhalt.

Code:

Netzwerk.Puffer.BEStueck(i).inhalt.typ

könnte dann die Lösung sein.


MFG
Patrick

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

tauli
Mitglied
Student


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

Beiträge: 23
Registriert: 28.01.2009

erstellt am: 16. Feb. 2009 08:40    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

Im Puffer liegen nur die BE als BEStueck(i).
Das Attribut ist dem BE zugeordnet.

Unabhängig davon kommt die Fehlermeldung wenn ich im Puffer und auf der Föderstrecke am Sensor das Attribut der BE meiner Variablen übergeben will.

Nur zum Verständnis:
Wenn ein WT mit BE an einem Sensor aufläuft, ruft er doch die Methode auf die am Sensor hinterlegt ist.
Dann kann ich doch mit '?.inhalt.typ' auf das Attribut der BE zugreifen, weil das '?' auf das Objekt in dem Fall WT verweist was die Methode aufgerufen hat. Der Inhalt wäre dann die BE und der Typ mein Attribut.
Oder ist die Förderstrecke das aufrufende Objekt? Dann muss ich ja '?.inhalt.inhalt.typ' schreiben.
Dann verwirrt die Hilfe aber, bzw. die Erklärung zum '?'.

Ich versuch das mal so und bleibe weiter beim '?' als Bezeichner, '@' ist immer falsch.

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

der simulant
Mitglied



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

Beiträge: 71
Registriert: 28.02.2007

-----------
der simulant

erstellt am: 16. Feb. 2009 09:02    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 tauli 10 Unities + Antwort hilfreich

Hallo tauli,

zu Deinem Problem mit ? und @ steht in der Hilfe eigentlich alles drin. Hilfe ? - in SimTalk und @ - in Sim Talk. ? bezieht sich immer auf das Materialflussobject (SingleProc,... oder Methode) und das @ bezieht sich auf das bewegliche Element (BE)

Ich hoffe das hilft Dir weiter

Gruß

der simulant

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

tauli
Mitglied
Student


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

Beiträge: 23
Registriert: 28.01.2009

erstellt am: 18. Feb. 2009 13:03    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

Ok soweit klar.

Dann ist in meinem Fall ja:

Code:

Förderstrecke.inhalt.inhalt.typ = ?.inhalt.inhalt.typ = @.inhalt.typ


wenn ein Sensor auf einer Förderstrecke den Inhalt eines WT und das Attribut des BEs überprüfen soll.

Förderstrecke.inhalt. -- bezieht sich dann auf den Inhalt, sprich WT
Förderstrecke.inhalt.inhalt. -- bezieht sich dann auf den Inhalt des WT sprich BE
Förderstrecke.inhalt.inhalt.typ -- bezieht sich dann auf das Attribut Typ des BE

?.inhalt. -- bezieht sich auch auf den Inhalt der Förderstrecke
?.inhalt.inhalt. -- bezieht sich dann auf das BE
?.inhalt.inhalt.typ -- bezieht sich dann auf das Attribut Typ des BE

@. --  bezieht sich auf den WT
@.inhalt. -- bezieht sich das BE
@.inhalt.typ -- bezieht sich dann auf das Attribut Typ

Bei allen drei Schreibweisen erhalte ich das Attribut der BE auf dem WT das am Sensor der Förderstrecke die MEthode aufgerufen hat.
Oder wie?

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

pom
Mitglied
Dipl.-Ing. (FH)


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

Beiträge: 182
Registriert: 25.08.2006

erstellt am: 19. Feb. 2009 08:38    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 tauli 10 Unities + Antwort hilfreich


Foer.JPG

 
Grundsätzlich nein.

Weil mit ?.Inhalt der Inhalt des Objektes angesprochen wird und nicht das BE welches die Methode ausgeführt hat. Dies kann, wenn nur ein BE im Objekt vorhanden ist, sich gleich wie @ verhalten. Auf einer Förderstrecke aber befinden sich meist meherer BEs, weshalb ?.Inhalt nur das erste BE auf der Förderstrecke anspricht.

Es Hilft immer ein einfaches Modell zu erstellen, welches nur das Problem beinhaltet. Sieh Bild.

Grüße
Patrick

[Diese Nachricht wurde von pom am 19. Feb. 2009 editiert.]

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

tauli
Mitglied
Student


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

Beiträge: 23
Registriert: 28.01.2009

erstellt am: 19. Feb. 2009 09:33    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


atundfragezeichen.JPG

 
Danke das bestätigt mich.
Also das was du da aufgebaut hast, hab ich auch gemacht.
Mit print teste ich immer in der Console ob meine Codes richtig sind.

Und wenn ich das oben als Print-Anweisung in der Console ausgeben lasse, muss man sagen grundsätzlich JA.

'@.inhalt' gibt das gleiche aus wie '?.inhalt.inhalt'.

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

pom
Mitglied
Dipl.-Ing. (FH)


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

Beiträge: 182
Registriert: 25.08.2006

erstellt am: 20. Feb. 2009 06:54    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 tauli 10 Unities + Antwort hilfreich

Nur wenn sich ein BE auf der Förderstrecke befindet. Sobald zwei BEs vorhanden sind, ist ? nicht mehr zweckmäßig.

Grüße
Patrick

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

tauli
Mitglied
Student


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

Beiträge: 23
Registriert: 28.01.2009

erstellt am: 20. Feb. 2009 08:00    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

Aha ok.
Ich bin davon ausgegangen das ? auf die Einheit zugreift die sich gerade am Sensor befindet und die Methode damit ausgelöst hat.

Also muss ich die Einschränkung haben das maximal eine BE auf die Förderstrecke passt.
Bei Stationen, wo nur eine Einheit draufpasst geht es dann immer?

Danke tauli

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

pom
Mitglied
Dipl.-Ing. (FH)


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

Beiträge: 182
Registriert: 25.08.2006

erstellt am: 20. Feb. 2009 10:17    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 tauli 10 Unities + Antwort hilfreich

Aus diesem Grund gibt es @. @ spricht immer das BE an welches die MEthode aufruft bzw. auslöst.
Bei einer Einzelstation kann ? ggf. Void sein wenn die Methode im Heck ausgeführt wird. Da das BE zum Zeitpunkt der Ausführung die Station bereits verlassen hat, auch dort würde man ehr mit @ arbeiten.


Grüße
Patrick

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