Jump to content

Listen Addieren


 Share

Recommended Posts

Hallo zusammen,

der Titel hört sich erstmal komisch an, aber mir ist da keine bessere Kurzbeschreibung eingefallen.

Die Kurzen hatten mit mir zusammen mal einen Fahrplan gesteuerten Verschiebebahnhof gebaut, der allerdings nie so richtig Funktioniert hat. Mit den Möglichkeiten von V6 sollte das eigentlich jetzt möglich sein aber da stellt sich uns ein Problem in den Weg. Die Fahrpläne, Wagen usw. der Einzelnen Wagen und Wagengruppen sind als Objektvariablen und Listen in den Wagen gespeichert und sollen beim Rangieren in einen Gleiskontakt in Listen zwischengespeichert werden. Das funktioniert bei einen(r) Wagen(gruppe), aber wie füge ich per EV diesen Listen weitere Einträge zu wenn ich nicht genau weiß wie viele Einträge schon in der Liste sind und wie viele jetzt dazu kommen?

Hat jemand da eine Idee? Hier mal ein Testaufbau.

Test Listen Addieren.mbp

Link to comment
Share on other sites

vor 13 Minuten schrieb Wüstenfuchs:

wie füge ich per EV diesen Listen weitere Einträge zu

mit der grafischen EV geht es meines Wissens nicht.
Aber wenn du für diesen Part zu Lua wechselst, dann kannst du mit dem Befehl table.insert() Elemente an eine Liste anhängen oder an einer bestimmten Position einfügen.

Link to comment
Share on other sites

vor 4 Stunden schrieb Goetz:

mit der grafischen EV geht es meines Wissens nicht.
Aber wenn du für diesen Part zu Lua wechselst, dann kannst du mit dem Befehl table.insert() Elemente an eine Liste anhängen oder an einer bestimmten Position einfügen.

Danke Göetz,

könntest Du mir eine Beispielanlage schicken? Ich bin in Lua nicht gerade eine Leuchte.B|

Link to comment
Share on other sites

vor 10 Stunden schrieb Wüstenfuchs:

könntest Du mir eine Beispielanlage schicken?

Ich habe ein kleines Beispiel für dich gebaut und als Entwurf hochgeladen.

Die ID ist:    B48D6FB2-F857-47B7-95A1-D66DB8FE4337

Edited by Goetz
Link to comment
Share on other sites

Hallo @Goetz,

Kann man die Auslösung für das Benutzerdefinierte Ereignis auch Allgemeingültig Schreiben? Die Gleisharfe des Abrollberges hat 15 Richtungsgleise und Ursprünglich sollte das setzen der Variablen per Gleiskontakt ausgelöst werden (Was ja teilweise auch schon funktionierte, zB. die Zuglänge).

Link to comment
Share on other sites

vor 9 Minuten schrieb Wüstenfuchs:

Kann man die Auslösung für das Benutzerdefinierte Ereignis auch Allgemeingültig Schreiben?

Ja, das geht.

Aber ich habe das Beispiel bewusst einfach und sehr übersichtlich gehalten, damit du es studieren kannst.
Du sollst ja nicht nur sehen, dass es geht sondern vor allem auch daraus lernen, wie es geht.

Und erst, wenn dir das Wie in allen Punkten klar ist, solltest du dir Gedanken über den Einsatz in größeren Umfeldern machen.
Der dürfte dann auch keine Hürde mehr darstellen.

Link to comment
Share on other sites

Hallo @Goetz,

vor 3 Minuten schrieb Goetz:

Aber ich habe das Beispiel bewusst einfach und sehr übersichtlich gehalten, damit du es studieren kannst.
Du sollst ja nicht nur sehen, dass es geht sondern vor allem auch daraus lernen, wie es geht.

Und erst, wenn dir das Wie in allen Punkten klar ist, solltest du dir Gedanken über den Einsatz in größeren Umfeldern machen.
Der dürfte dann auch keine Hürde mehr darstellen.

sag das mal den Kurzen neben mir.:/ Die können es nicht mehr erwarten endlich mit der Anlage zu spielen zu können.:$ 

Link to comment
Share on other sites

vor 1 Minute schrieb Wüstenfuchs:

sag das mal den Kurzen neben mir.

lesen die nicht mit?

Und wenn doch - ist das kein Ansporn für sie, das nötige Wissen zu erwerben, damit sie ihren Wunsch umsetzen können?

Erst benutzen und dann lernen ist die falsche Reihenfolge. 
Das geht weder beim Autofahren noch beim MBS.

Link to comment
Share on other sites

Hallo @Goetz,

ich glaube ich habe es kapiert, zumindest habe ich keine Fehleranzeigen mehr.9_9

Dafür habe ich da jetzt noch ein kleines Problem mit den Wagenlisten. Für die Wagengruppen habe ich die Namen der Wagen im ersten Wagen in einer Liste gespeichert, Wenn die Wagenliste des Gleises geschrieben wird wird dort die Liste eingetragen nicht die einzelnen Wagen. Dieses führt bei anderen Aktionen dann zu Problemen. Gibt es eine Möglichkeit nur die Einzelnen variablen einer Liste zu übernehmen, wenn deren Anzahl unbekannt ist (nach der ursprünglichen Planung sollen zwischen einen und fünf Wagen abrollen)? Oder wäre es besser für jeden Wagen der Wagengruppe eine extra Variable anzulegen? (Also in etwa so: Wagen1, Wagen2...) nicht vorhandene Variablen können ja nicht übernommen werden.

Link to comment
Share on other sites

vor 14 Minuten schrieb Wüstenfuchs:

Wenn die Wagenliste des Gleises geschrieben wird wird dort die Liste eingetragen nicht die einzelnen Wagen.

und was steht in der Liste?
Und wenn du die Probleme nicht beschreibst, zu denen etwas führt, kann ich dir auch nicht helfen sie zu lösen ...

vor 18 Minuten schrieb Wüstenfuchs:

Gibt es eine Möglichkeit nur die Einzelnen variablen einer Liste zu übernehmen

in was zu übernehmen? 
Die einzelnen Elemente einer Liste sind durchnummeriert. Die Nummer eines Elements nennt man Index. Mit dem Index kannst du jedes Element einer Liste ansprechen.

Sorry, aber das ist nicht wirklich klar, was du willst. Es geht um Gruppen, die beim Ablaufen zusammen bleiben sollen. So viel verstehe ich. Aber was du da genau versuchst, ist deinen Worten nicht zu entnehmen. Und deshalb kann ich dir auch nicht sagen, was du dabei anders machen musst.

 

Link to comment
Share on other sites

Hallo @Goetz,

mein Lua Skript für die Wagenliste sieht jetzt so aus:

local t = Gleisort.variables.Zug
table.insert(t, Fahrzeug.variables.Wagengruppe)

Gleisort.variables.Zug = t

Die Liste Zug hat dann zB. diese Einträge:

Name: 1; Typ: Liste; Wert (2 Elemente)

In dieser Liste sind dann die Einzelnen Wagen der Wagengruppe gespeichert.

Wenn ich jetzt die Liste Zug für einen Widerholungsbefehl nutze, wird dieser nur teilweise oder gar nicht ausgeführt.

Deshalb würde ich lieber nur den Inhalt der Liste in die neue Liste übernehmen und nicht die Liste selber.

Edited by Wüstenfuchs
Link to comment
Share on other sites

vor 26 Minuten schrieb Wüstenfuchs:

Deshalb würde ich lieber nur den Inhalt der Liste in die neue Liste übernehmen

Dann darfst du nicht die Wagengruppe als ein Element übergeben.

Willst du den Zug aus mehreren Wagengruppen zusammenbauen und am Ende eine lange Wagenliste unter "Zug" haben?
Dann wird es etwas umständlicher, weil du die Elemente der Wagengruppe einzeln an die neue Liste anhängen musst:

local t1 = Gleisort.variables.Zug
local t2 = Fahrzeug.variables.Wagengruppe

for Platz, Element in ipairs(t2) do
  table.insert(t1, Element)
end

Gleisort.variables.Zug = t1

die Methode "in ipairs()" geht eine komplette Liste durch und übergibt Eintrag für Eintrag die Platznummer und das gespeicherte Element.
Mit der for-Schleife wird das wiederholt, bis alle Elemente der Liste ausgelesen wurden.

In der Schleife wird jedes gefundene Element an die temporäre Liste t1 angehängt.

Und diese Liste wird dann zuletzt an die Variable Zug übergeben.

Die Verwendung der lokalen Variablen t1 und t2 dient der Geschwindigkeit. Diese Variablen gelten nur für die Dauer dieser Aktion und werden anschließend gleich wieder gelöscht. Weil sie nur kurz "leben", kann man sie im kleinen, aber schnell erreichbaren Speicher lagern, der im Prozessor selber steckt.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...