Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Zählvariable erhöht sich nicht

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:  Zählvariable erhöht sich nicht (1487 mal gelesen)
Rakorion
Mitglied


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

Beiträge: 6
Registriert: 12.07.2006

erstellt am: 06. Okt. 2006 18:29    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,

wir haben ein kleines Problem mit unserer Abbruchsvariabla (n).

Die Methode räumt das Lager mit den Endprodukten leer und soll, sobald eine bestimmte Anzahl von Löschungen geschehen sind, damit aufhören.

Wir haben es mit einer for/until und mit einer while Schleife probiert, aber irgendwie erhöht sich die Variable "n" nicht und somit läuft das ganze bis zum Sanktnimmerleinstag und löscht fleissig weiter.

Die Anzahl der "Löschungen" bezieht sich aus einer Tabelle (momentan 153) und wird mit "yDim" geholt.

hier der Aszug aus dem Methodenqzelltext:

Zitat:

is
maxzeile, n : integer;

do
n := 1;
maxzeile := Tabelle.yDim;
while n < maxzeile  
loop
    Puffer1.vernichteBEs;
  n := n + 1;
end;
  end;  

Vielleicht kann uns jemand weiterhelfen wo unser Fehler liegt?


Vielen Dank schon mal jetzt. 


Rakorion

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


Ex-Mitglied

erstellt am: 06. Okt. 2006 19:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

also mit puffer1.vernichtebes werden alle be´s auf einmal gelöscht.

versucht es mal mit

puffer1.be(1).vernichten;

------------------
Der Simulator

Rakorion
Mitglied


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

Beiträge: 6
Registriert: 12.07.2006

erstellt am: 07. Okt. 2006 15: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

Danke für die Antwort!
Dass alle BEs gelöscht werden ist gerade Sinn der Sache. Das Problem liegt darin, dass die Zählvariable n nicht erhöht wird und somit die Schleife zur Endlos-Schleife wird anstatt nach 153x abzubrechen!

Gruß
Rakorion

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


Ex-Mitglied

erstellt am: 07. Okt. 2006 16:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat


puffer1.spp.jpg

 
??? wofür willst Du denn 153 x alle puffer1-Be´s löschen wenn es mit 1x Puffer1.vernichteBEs auch geht.

Bei mir läuft die Schleife und n wird inkrementiert (s. Anhang).

Du kannst aber mal prophylaktisch die Variable "maxzeile" checken.
Hat sie wirklich den Wert 153 ?

oder mal "n" gegen eine andere Variable  (z.B. "i") austauschen und alles ohne Leerzeichen zusammenschreiben also "i:=i+1;"

wobei ich persönlich nicht glaube, dass es daran liegen wird - dafür ist das Produkt über die Jahre doch zu ausgereift.

Oder probier einfach mal Folgendes

maxzeile:=tabelle.ydim;
print maxzeile;
for i:=1 to maxzeile loop
   puffer1.be(1).vernichten;
next;

------------------
Der Simulator

Rakorion
Mitglied


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

Beiträge: 6
Registriert: 12.07.2006

erstellt am: 10. Okt. 2006 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

Hallo und Danke.

Inzwischen sind wir darauf gestoßen, wo der Fehler liegt und wir können nun die verblüfften Kommentare nachvollziehen.... 

Die Schleife lief 153 mal durch und n wird inkrementiert. (Käse, wie von  SIMULATOR schon angemerkt)

Aber wir wollten was anderes machen mit der Methode.

Unsere Anzahl an verschiedenen Zeitperioden beträgt eben 153 mal.
Also soll sooft die Schleife EINMAL angestoßen werden und n (was die einen Wert aus einer Tabelle abruft (soviele Teile werden aus dem Puffer gelöscht) soll dauerhaft erhöht werden. (also beim ersten Aufruf soll der Wert aus der ersten Zeile, beim 2. aus der 2. Zeile etc verwendet werden)
Aber n wird nach Abschluss der Schleife wieder auf "1" gesetzt.

Gibt es eine Möglichkeit dass die Methode die Variable dauerhaft (also bis zum Reset) erhöht?

ICh hoffe ich habe mich nur nachvollziehbarer ausgedrückt... -.-


Gruß
Rakorion

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

Homer Simpson
Mitglied



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

Beiträge: 345
Registriert: 14.09.2005

erstellt am: 10. Okt. 2006 12:10    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 Rakorion 10 Unities + Antwort hilfreich

Die einfachste Möglichkeit, das Problem zu lösen, ist statt einer lokalen Variable eine globale Variable zu verwenden (d.h. .Informationsfluss.Variable in das Netzwerk einzusetzen) oder - was ich persönlich noch besser fände - ein benutzerdefiniertes Attribut bei der Methode anzulegen. Sowohl globale Variablen als auch benutzerdefinierte Attribute behalten ihre Werte auch nach Beendigung des Methodenaufrufs.
Die Methode darf dann aber keine Schleife enthalten, da bei jedem Aufruf nur 1 "Schleifendurchlauf" abgearabeitet wird.

Eine alternative Möglichkeit wäre, anstatt die Methode mehrfach aufzurufen, die Methodenausführung nur einmal aufzurufen und die Methodenausführung solange anzuhalten, bis der nächste Schleifendurchlauf ansteht. Innerhalb der Schleife muss dann eine wait-Anweisung oder eine waituntil-Anweisung stehen, die die Schleife für eine gewisse Zeit bzw. bis eine bestimmte Bedingung erfüllt ist anhält.

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

Rakorion
Mitglied


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

Beiträge: 6
Registriert: 12.07.2006

erstellt am: 11. Okt. 2006 15:11    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!


Vielen Dank!

Wir haben es mit einer globalen Variable gemacht und nun funktioniert es. 

Gruß
Rakorion

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