Jump to content

Übergabe von Listen als Parameter in benutzerdefinierten Ereignis


Empfohlene Beiträge

Hallo liebe Forummitglieder,

 

danke für die schnelle Hilfe das letzte Mal.

Nun habe ich ein neues Problem. Ich möchte eine "allgemeine" Bushaltestelle erstellen. Der Bus soll nur abfahren, wenn keine Fahrzeuge auf den "Bushhaltestellen-Straßen" sind.

Ziel ist es (wie beim Beispiel "Parking Place" von Herman) die Bushaltestelle beliebig zu kopieren, ohne immer neue Ereignisse erzeugen zu müssen.

In einem Gleiskontakt zur Bushaltestelle sind die zugehörigen Straßenteile in einer Liste gespeichert. In einer Benutzerdefinierten Funktion will ich nun testen, ob auf keiner dieser Straßen ein Fahrzeug steht, dann kann der Bus abfahren. Dazu müsste ich die Liste der Straßen an das benutzerdefinierte Ereignis übergeben.

Habe mal den ersten Entwurf angehängt, falls ich mich zu verwurstelt ausgedrückt habe.

GK_BK_Haltestelle_Schlagwort --> Ereignis welches das benutzerdefinierte Ereignis mit den Parametern, "Bus" und "Liste der Strassen" aufruft

Abfahrt_Bus_Benutzer -----------> Benutzerdefiniertes Ereignis, welches den Bus wieder abfahren lassen soll.

 

Danke für die Hilfe

Bushaltestelle.mbp

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo heine jul,

vor 51 Minuten schrieb heine_jul:

Dazu müsste ich die Liste der Straßen an das benutzerdefinierte Ereignis übergeben.

Für die Übergabe benötigst du die erweiterte Variable.
Die erlaubt dir, als Objekt generisch den auslösenden Kontakt anzugeben und seine Liste zu übertragen:

erweiterteVariable.jpg.993e2f6ca7152592b310a9c410e06c7f.jpg

Das bedeutet auch, dass du die Liste der Straßen in dem Kontakt hinterlegen musst, der Auslöser für den Aufruf des benutzerdefinierten Ereignisses ist. Das wäre bei dir GK_BK_Haltestelle und nicht (wie aktuell in deinem Beispiel) der GK_BK_vor_Haltestelle.

Oder - falls die Liste zwingend im Kontakt vor der Haltestelle sein muss - diesen Kontakt im auslösenden Kontakt hinterlegen und anstelle des Objekts ein weiteres Mal über das Zahnrad die erweiterte Variable benutzen.

Viele Grüße
Götz

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

Vorschlag:
Der Bus muß so lange abfragen, ob er starten darf, bis die Strassen frei sind.
Das würde ich mit einem Timer machen.
Anzahl Fahrzeuge brauchst Du nicht. Sobald mindestens 1 gefunden wurde einfach abbrechen.
Die Benutzerdefinierte Funktion nicht in sich selbst aufrufen.
Sonst kannst Du es so machen: Bus und Strassen übergeben, Timer starten.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke Götz, das werde ich so versuchen. 
Mit dem Timer geht so nicht, da die Bushaltestelle mehrfach benutzbar sein soll, ohne den Programmcode zu ändern. Wobei, das mit dem Abbruch nach dem ersten Fund schon logisch ist und ich das so übernehmen werde.

 

Grüße Heinrich

Link zu diesem Kommentar
Auf anderen Seiten teilen

On 5/10/2023 at 10:56 AM, heine_jul said:

wie beim Beispiel "Parking Place" von Herman

19 hours ago, Sintbert said:

der einzelnen Strassen-Elemente

Hello, if you have a look to "parking place" you will see I test if there is a vehicle on the single road before  the parking. ( of course disguised as a double road ).
Succes with your bus stop. 
Hallo, wenn Sie einen Blick auf „Parkplatz“ werfen, werden Sie sehen, dass ich vor dem Parkplatz teste, ob sich auf der Einzelstraße ein Fahrzeug befindet. (natürlich als Doppelstraße getarnt).
Erfolgreich mit Ihrer Bushaltestelle.

Kind regards, Herman (BE)

Bearbeitet von Herman
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...