Jump to content

Datensatz in Tabelle (Lua)


Timba

Recommended Posts

Da wir gerade die Tage von rauchenden Loks geschrieben haben, habe ich sofort vermutet, dass Du da was von dem selbstgebrauten Äppelwoi in den Schlund gekippt hast :P
Naja - für die Opfer weniger lustig. Aber das hat man eben von Sensationstourismus.

Link to comment
Share on other sites

Getreu der üblichen Antwort von Verleihnix: mein Äbbelwoi raucht nicht!:P

Tja shit happens, es fallen auch rundflug schraubhuber gelegentlich in den Alpen der südinsel vom Himmel und was sonst noch so passieren kann.

Das Leben ist lebenslang lebensgefährlich!

Cheers

Tom

 

Link to comment
Share on other sites

vor 7 Stunden schrieb Timba:

es müsste mit Tabelle genauso funktionieren.

Nein, damit funktioniert es leider nicht.

Eine Tabelle muss "iterable" - also lückenlos nummeriert - sein, damit table.remove() wie von dir gewünscht funktioniert.

In einer Liste ist der Index eine Zahl.
Eine Tabelle hat Namen als Bezeichner. Auch dann, wenn du als Namen eine Zahl verwendest. Deine 1 ist bei der Tabelle eine "1", also ein String.

Link to comment
Share on other sites

vor 2 Stunden schrieb Goetz:

Eine Tabelle muss "iterable" - also lückenlos nummeriert - sein, damit table.remove() wie von dir gewünscht funktioniert.

Moin Götz,

die Antwort befriedigt mich überhaupt nicht.

Ich fülle eine Tabelle mit Objekten.

table.insert($("Ereignisse").variables["Probe"], $("Taste ▄")) 

Das Ergebnis ist eine lückenlos nummerierte Tabelle.

beispiel.jpg.e982808904f701fdabfcad7e1c78edad.jpg

Dann klicke ich viermal auf

table.remove($("Ereignisse").variables["Probe"], 1)  

Das Ergebnis ist nicht wie gewünscht Tabelle leer, sondern Tabelle mit leeren Einträgen.

beispiel1.jpg.9811b9683d61e022c07f31bbd7adc86d.jpg

Wenn ich genau denselben Versuch mache und lediglich das Objekt durch einen Text oder eine Zahl ersetze,

table.insert($("Ereignisse").variables["Probe"], "TEXT")    

beispiel2.jpg.153de6b2b46b1ddba515f7870fc14979.jpg

table.remove($("Ereignisse").variables["Probe"], 1)  

dann funktioniert es wie es soll.

beispiel3.jpg.b732ae462040b03ff558b161a64610d2.jpg

Es hat also nichts mit "iterabel" zu tun, sondern damit, ob es um ein Objekt oder ein anderes Element geht.

Probiere es gerne selbst aus, um dich zu überzeugen: Tabellentest.mbp

 

Gruß Timba

 

 

 

Link to comment
Share on other sites

vor 40 Minuten schrieb Timba:

Das Ergebnis ist nicht wie gewünscht Tabelle leer, sondern Tabelle mit leeren Einträgen.

Weil du sie im MBS als Tabelle angelegt hast. Und deine Zellen damit Namen haben. Keine Nummern.

Deshalb steht auch oben über der ersten Spalte "Namen"

Link to comment
Share on other sites

vor 1 Stunde schrieb Goetz:

Weil du sie im MBS als Tabelle angelegt hast. Und deine Zellen damit Namen haben. Keine Nummern.

Deshalb steht auch oben über der ersten Spalte "Namen"

Ok, und warum funktioniert es dann, wenn der Tabelleneintrag vom Typ Text ist, und bei Typ Objekt funktioniert es nicht? Für den Tabelleneintrag vom Typ Text gilt ja genauso "Weil du sie im MBS als Tabelle angelegt hast. Und deine Zellen damit Namen haben. Keine Nummern. Deshalb steht auch oben über der ersten Spalte 'Namen'"

aber table.remove entfernt den Datensatz trotzdem. Die Erklärung dafür fehlt mir. An den oben geposteten Bildern kannst du sehen, dass die Einträge völlig identisch sind, bis auf den kleinen Unterschied, dass der Tabelleninhalt einmal Objekt und einmal Text ist. Entsprechend funtioniert es einmal nicht und einmal doch. Die von dir gelieferte Erklärung würde reichen, wenn es in beiden Fällen nicht funktioniert. Das ist nicht der Fall.

Gruß Timba

 

Link to comment
Share on other sites

Hallo Timba,

Referenzen werden im Studio anders behandelt als einfache Datentypen, siehe dazu auch hier:

Ob eine Variable nil ist oder nicht existiert, macht im Studio und in Lua keinen Unterschied. Wenn dich nil-Einträge in Tabellen stören, dann weise ihnen zuerst einen einfachen Datentypen zu und setze sie dann nil, dann löscht das Studio sie (weil nil kein gültiger Wert für einen einfachen Datentyp ist).

Viele Grüße,

Neo

Link to comment
Share on other sites

Hallo Neo, danke für die Info. Der nil-Eintrag stört in diesem Fall nur deshalb, weil die Prüfung, ob ein Datensatz vorhanden ist ( #Liste > 0 ) ein "falsches" Resultat anzeigt. Jedenfalls gehe ich davon aus, dass ein nil-Eintrag gezählt wird, probiert habe ich es nicht. Ich werde einen Weg finden. Aber immerhin weiß ich nun, warum es so ist wie es ist.

Gruß Timba

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
×
×
  • Create New...