Jump to content

Variablenanzeige


Tesla
 Share

Recommended Posts

vor 1 Stunde schrieb m.weber:

Was mache ich da falsch?

Deine Variable enthält das Fahrzeug, nicht den Fahrzeugnamen.

Das Fahrzeug ist die Objektreferenz. Sozusagen eine für uns unsichtbare Identifikationsnummer dieses Objekts auf der Anlage. Uns wird zwar der Name des Objekts angezeigt (weil wir bei der Nummer überhaupt nicht wissen würden, welches Objekt damit gemeint ist) aber den Namen bekommst du nur mit Fahrzeug.Name (so, wie du es beim oberen Textfeld machst.)

Deine Variablen sind ebenfalls für Objekte bestimmt. Du benötigst aber eine Variable für Text (weil der Name eines Objekts ein Text ist.)

Außerdem würde eine Variable reichen. Mit den zwei Variablen machst du nur zweimal denselben Fehler.

Lokname wird jetzt angezeigt.mbp

Edited by Goetz
Schreibfehler verbessert
Link to comment
Share on other sites

Hallo Goetz,

das mit den Variablen, ok, das denke ich, habe ich verstanden.

Aber mein Deutschlehrer hätte jetzt gesagt: Thema verfehlt, denn die eigentliche Frage war ja, warum "A" nicht angezeigt wird, wo da der Fehler liegt.

"A" hat ja den Inhalt übernommen, das zeigt ja die Ereignis-Protokollierung ganz klipp und klar. Nur angezeigt wird er nichtFehler.thumb.JPG.1bc2905cfacaa529a9758c6b3c8650de.JPG

 

Und wo hier der Fehler liegt, DAS war die Frage.

 

Gruß,

Michael

Link to comment
Share on other sites

vor 22 Minuten schrieb m.weber:

DAS war die Frage.

Und die Frage habe ich dir beantwortet. Du hast die Antwort nur noch nicht richtig interpretiert.

Dein A enthielt keinen Text, sondern eine Objektreferenz. Und etwas anderes als Text kann das Beschriftungsfeld nicht anzeigen.

Edited by Goetz
Link to comment
Share on other sites

Hmm,

 

gemäß der Ereignis-Protokollierung hat "A" den Inhalt "V200". Und genau  diesen will ich zur Anzeige bringen.

Protokollanzeige.JPG

Was steht denn sonst Deiner Ansicht nach in "A" ?

Edited by m.weber
Link to comment
Share on other sites

vor 7 Minuten schrieb m.weber:

gemäß der Ereignis-Protokollierung hat "A" den Inhalt "V200"

Bitte, lies meine Erklärung oben noch einmal aufmerksam und Wort für Wort durch.

Ach - warte. Ich schreibe es einfach noch einmal und in etwas anderen Worten:

Deine Variable enthält eine Referenz zum Objekt V200. Diese Referenz wird als V200 angezeigt, weil die EV dir nichts anderes zeigen kann. Mit einer kryptischen Nummer wäre dir ja nicht gedient. Aber das, was da in der Variablen gespeichert ist, ist kein Text!

Objektreferenz.jpg.e9ac0f84a09f19ef49a06f074408bc5e.jpg

Hier siehst du es deutlicher als in der Ereignisprotokollierung.

 

Edited by Goetz
Link to comment
Share on other sites

ok, kapiert, aber wie löse ich das Problem? Wie bekomme ich den Namen der Lok in die Variable A?

Früher konnte ich das wunderbar mit dem Trigger lösen. Wenn die Lok "Dresden" hieß,  konnte ich wunderbar in der Bahnhofsanzeige anzeigen: Es läuft ein der Eilzug aus Dresden.

 

Und nun? Wie jetzt? Das ist die Kernfrage. Wie kann ich aus dem Objekt einen text machen?

Edited by m.weber
Link to comment
Share on other sites

vor 12 Minuten schrieb m.weber:

aber wie löse ich das Problem?

Hast du meinen Lösungsvorschlag nicht gelesen?

vor einer Stunde schrieb Goetz:

so, wie du es beim oberen Textfeld machst.

Hast du dir die angefügte Anlage mit dem Lösungsvorschlag nicht angesehen?

Das hier ist die entscheidende Änderung:

1823782071_LoknameinVariable.thumb.jpg.7119f89d8768f5fc1d8a2a455eb3cfb7.jpg

Ich habe dafür deine Variable "Lokname" benutzt und diese an das Textfeld übergeben.

Ebenso gut hätte ich die Variable A nehmen können.

Oder unnötigerweise den Text noch einmal von "Lokname" nach "A" übertragen können ...

 

(Und jetzt schau ich mir mal dein "Jetzt hab ich's" an …)

 

Nachtrag:

Ja, jetzt hast du's. Du nutzt nur immer noch zwei Variablen, obwohl du nur eine benötigst.
In A speicherst du eine exakte Kopie von dem, was in Lokname steht. Das bringt dir nichts.

 

Edited by Goetz
Link to comment
Share on other sites

vor 3 Minuten schrieb Goetz:

 

Oder unnötigerweise den Text noch einmal von "Lokname" nach "A" übertragen können ...

Aber genau das war ja die Aufgabe... übertragen und anzeigen, nicht mehr und nicht weniger

 

Deine Wege sind sicherlich schneller  und genialer...

Edited by m.weber
Link to comment
Share on other sites

vor 7 Minuten schrieb Goetz:

 

Nachtrag:
In A speicherst du eine exakte Kopie von dem, was in Lokname steht. Das bringt dir nichts.

 

Es mag ja nichts bringen, aber ICH wollte es.

 

Trotzdem DANKE für Deine Geduld und Mühe

Link to comment
Share on other sites

Gerade eben schrieb m.weber:

Es mag ja nichts bringen

Wenn du verstehst, dass es nichts bringt und warum es nichts bringt, dann bringt das was:
Nämlich ein besseres Verständnis für die Materie. Und das ist doch der eigentliche Sinn der Übung. ;)

Link to comment
Share on other sites

Hallo,

vor 5 Stunden schrieb m.weber:

Früher konnte ich das wunderbar mit dem Trigger lösen.

nochmal der Vollständigkeit halber der Hinweis, dass sich V5 in dieser Hinsicht nicht von V4 unterscheidet:

Um in V4 den Namen der Lok in eine Variable zu schreiben musstest du den Ausdruck $_Trigger1._Name für "Variable setzen" verwenden. Jetzt in V5 wählst du als Objekt das auslösende Fahrzeug und als Eigenschaft den Namen.

Es hat sich also lediglich die Art der Eingabe geändert. Statt einer Textzeile (auf die kein Einsteiger von alleine kommt) kann man nun in V5 mit wenigen Mausklicks das gleiche erreichen.

Viele Grüße,

Neo

Link to comment
Share on other sites

vor 17 Stunden schrieb Goetz:

Wenn du verstehst, dass es nichts bringt und warum es nichts bringt, dann bringt das was:
Nämlich ein besseres Verständnis für die Materie. Und das ist doch der eigentliche Sinn der Übung. ;)

Ob es was bringt, liegt im Auge des Betrachters. In diesem speziellen Fall bringt es nichts, das ist richtig, aber wie Du schon bemerkst: es geht darum, das Prinzip zu verstehen.

Und mal davon ab, ich kann mir durchaus Fälle vorstellen, in denen es durchaus Sinn macht, den Loknamen in einer Variablen zwischen zuspeichern.

Link to comment
Share on other sites

Hallo Michael,

bis zur V4 waren bei Objektvaribalen die Objekt-Namen das A & O. Denn es gab keine andere Möglichkeit, ein Objekt zu identifizieren und zu adressieren. Hierfür mussten aber die Objekt-Namen eindeutig sein, damit für das Modellbahn-Studio überhaupt eine Identifizierung des Objekts über den Namen möglich war.

Seit V5 kann man aber in der Objektvariable das Objekt selbst (Variable vom Typ Objekt) hinterlegen. Damit ist man auch dann "auf der sicheren Seite", wenn man denselben Objektnamen (sei es absichtlich oder versehentlich) mehrfach verwendet hat. Der Objekt-Name ist beispielsweise dann notwendig, wenn man ihn als Text ausgeben möchte (z.B. in einem Beschriftungs-Objekt). Hierfür kann man ihn aber auch direkt als Eigenschaft des Objekts auslesen, ohne ihn in einer separaten Variable zwischengespeichert haben zu müssen (Objektvariable adressiert das Objekt, Name ist Eigenschaft des adressierten Objekts).

Objekt-Name.jpg.176987788e378f6b2fc57c47ce7cb60d.jpg

Viele Grüße
BahnLand

Link to comment
Share on other sites

vor einer Stunde schrieb m.weber:

ich kann mir durchaus Fälle vorstellen, in denen es durchaus Sinn macht, den Loknamen in einer Variablen zwischen zuspeichern.

Es gibt sogar sehr viele Fälle, in denen das sinnvoll ist.

Aber du speicherst denselben Namen in zwei Variablen zwischen. Erst in Ereignisse.Lokname und dann eine Kopie davon in Ereignisse.A.
Das ist weniger sinnvoll. Und dir vielleicht auch gar nicht richtig bewusst?

Link to comment
Share on other sites

vor 10 Minuten schrieb Goetz:

Aber du speicherst denselben Namen in zwei Variablen zwischen. Erst in Ereignisse.Lokname und dann eine Kopie davon in Ereignisse.A.
Das ist weniger sinnvoll. Und dir vielleicht auch gar nicht richtig bewusst?

Ja, das stimmt schon mit der Doppelbezeichnung. Mein Gedanke ist, daß ich den Namen nicht überschrieben bekomme, wenn ich zB an anderer Stelle ebenso den Loknamen abfrage, ihn aber an anderer Stelle weiter verwenden will. Deshalb die Zwischenspeicherung... (oder bin ich jetzt vollkommen gaga und es geht viel einfacher? grübel...)

Link to comment
Share on other sites

vor 1 Stunde schrieb m.weber:

es geht viel einfacher?

Ja, geht es.

Denn wenn du einmal die Variable ausgelesen und den Text an das Beschriftungsfeld übergeben hast, dann ist die Variable doch wieder frei für andere Zwecke. Das Beschriftungsfeld hat keine permanente Verbindung zur Variablen A.

Link to comment
Share on other sites

Ja Goetz, in diesem Fall ja, aber die eigentliche Anwendung hinter der Variablensicherung war, daß ich die Variable für einen Sound kurz vor der Zugeinfahrt als Bahnhofsdurchsage verwenden will. Und in der Zeit könnte sie durch einen anderen Zug irgendwo auf der Anlage in einem irgend einem anderen Bahnhof überschrieben worden sein. Daher also der Wunsch nach einer Sicherung.

Wie dem auch sei, ich weiß jetzt (und habe verstanden), wie es geht. Problem gelöst :)

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