Jump to content

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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

 

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

Geschrieben (bearbeitet)

@metallix

Na, dann hoffe ich mal, dass unter deinem Wohnort nicht auch ein Vulkan schlummert. Als Metaller hättest du dann zwar das ultimative Schmiedefeuer :D , aber letztlich wohl doch zu heftig.

Gruß Timba

Bearbeitet von Timba
Anrede eingefügt
Geschrieben
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

 

 

 

Geschrieben
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"

Geschrieben
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

 

Geschrieben

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

Geschrieben

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

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