Das inoffizielle Forum zu Eisenbahn.exe Professional 7+

Uli
Kein Avatar
Beiträge: 4
Registriert: 10.01.2016, 10:11
EEP-Version: 12

höchsten Tabellenindex ermitteln

Hallo zusammen.

Nachdem ich schon längere Zeit nur mitgelesen habe, ist heute die Anmeldung im Forum erfolggt.
Und ich habe auch gleich eine Frage zu Tabellen.

Laut offizieller LUA-Beschreibung V5.2 kann man den Tabellenindex mit table.maxn(tabellenname) ermitteln.
Zitat:
"table.maxn(table) Liefert den größten positiven numerischen Index der gegebenen Tabelle oder 0, falls die Tabelle keine positiven numerischen Indizes besitzt.
(Um dies zu erledigen, führt die Funktion eine lineare Traversierung der
gesamten Tabelle durch.)"


Nutze ich den Befehl, der nach meinem Verständnis ja funktionieren sollte, da EEP 12 auch die LUA-Version 5.2 hat, so erhalte ich eine Fehlermeldung:
Error running function 'EinfahrtAnmelden': [string "EEP Script"]:28: attempt to call field 'maxn' (a nil value)

Beispielscript
--Mustertabelle SignalWest01
SignalWest01={37,36}

--Funktion wird über KP aufgerufen
function EinfahrtAnmelden()
  Check,RW=EEPIsRailTrackReserved(264)
  print("Anmeldung Einfahrt: -registriert: ",Check," - besetzt: ",RW)
  Check,RW=EEPIsRailTrackReserved(10)
  print("Anmeldung Einfahrt: -registriert: ",Check," - besetzt: ",RW)
  Z=Z+1
  print("Z: ",Z)
  print(table.maxn(SignalWest01))
  if Z>=3 then
    EEPSetSignal(37,1)
  end
end

Vielleicht kann mir jemand erklären, wo hier der eigentliche Fehler liegt.

Gruß
Ulrich
juergen18
Benutzeravatar
Team
Beiträge: 1114
Registriert: 04.10.2013, 23:43
EEP-Version: 7-13

AW: höchsten Tabellenindex ermitteln

Hallo Ulrich,

herzlich Willkommen hier im Forum.

Zu Deinem Problem: Meiner Meinung nach ist maxn veraltet (nur bis Lua 5.1).
Ist zwar nicht ganz das Gleiche, aber man nimmt ab Lua 5.2 #SignalWest01, um die Länge einer Tabelle festzustellen.
Grüße aus Wattenscheid von Jürgen

Ich habe EEP 7-13
Laptop: Medion i7-6500U CPU 2.5 - 3.1 GHz, 8 GB DDR3-Speicher, NV Geforce GTX 950M, 2 GB DDR3 Speicher, Win 10 64-Bit

Mein aktuelles Projekt: Erweiterung des Tauschmanagers bis EEP 13 (aktuelle Vesion 3.2.0.4) und ein bisschen Lua
Anleitung für den TM zum Download

Postkartenzähler für den TM: 500
EepNolie
Benutzeravatar
Beiträge: 102
Registriert: 20.09.2015, 14:21
Wohnort: Tremelo Belgien
EEP-Version: 6-7-9-X-11-12-13-14

AW: höchsten Tabellenindex ermitteln

Hallo Ulrich,

Try this :

Code: Alles auswählen
function tc(T)
   count = 0
   for _ in pairs(T) do 
      count = count + 1 
   end
   return count
end

SignalWest01={37,36}

print("The maximum elements in table is ",tc(SignalWest01))

Bild

The function tc() must be place before the call !

Greetings,

EepNolie
Desktop : Windows 7 Ultimate 64Bit - Intel Quad Core i7-4790 4.0Ghz - 32Gb RAM - Asus Geforce GTX-06G 1060 (6Gb) - Dual screen Asus VS247 24"
Laptop : i7-4750HQ 3.2Ghz - 16Gb RAM - NVidia GTX960M - Windows 10

Ich benutze EEP 14

Download my free EEP-tools : Model Multiplier / Texture Multiplier / Registry Tool

Bild
juergen18
Benutzeravatar
Team
Beiträge: 1114
Registriert: 04.10.2013, 23:43
EEP-Version: 7-13

AW: höchsten Tabellenindex ermitteln

Hello Noël,

but you need only two lines in lua 5.2, to get the same result:
Code: Alles auswählen
SignalWest01={37,36}

print("The maximum elements in table is ",#SignalWest01)
Grüße aus Wattenscheid von Jürgen

Ich habe EEP 7-13
Laptop: Medion i7-6500U CPU 2.5 - 3.1 GHz, 8 GB DDR3-Speicher, NV Geforce GTX 950M, 2 GB DDR3 Speicher, Win 10 64-Bit

Mein aktuelles Projekt: Erweiterung des Tauschmanagers bis EEP 13 (aktuelle Vesion 3.2.0.4) und ein bisschen Lua
Anleitung für den TM zum Download

Postkartenzähler für den TM: 500
EepNolie
Benutzeravatar
Beiträge: 102
Registriert: 20.09.2015, 14:21
Wohnort: Tremelo Belgien
EEP-Version: 6-7-9-X-11-12-13-14

AW: höchsten Tabellenindex ermitteln

Yep, didn't remember this at the moment, you're completely right !  I knew there was some kind of "shortcut"...

EepNolie
Desktop : Windows 7 Ultimate 64Bit - Intel Quad Core i7-4790 4.0Ghz - 32Gb RAM - Asus Geforce GTX-06G 1060 (6Gb) - Dual screen Asus VS247 24"
Laptop : i7-4750HQ 3.2Ghz - 16Gb RAM - NVidia GTX960M - Windows 10

Ich benutze EEP 14

Download my free EEP-tools : Model Multiplier / Texture Multiplier / Registry Tool

Bild
Uli
Kein Avatar
Beiträge: 4
Registriert: 10.01.2016, 10:11
EEP-Version: 12

AW: höchsten Tabellenindex ermitteln

Vielen Dank für die schnelle Antworten.

@juergen18: Das ist in der Tat eine Alternative, die ebenfalls kurz und direkt ist.
@EepNolie: Diese Variante ist die klassische Art einen oberen Wert zu finden, allerdings, auch wenn LUA recht schnell ist, braucht es doch einige Takte mehr, wie die Version von juergen18. Diese wollte ich nicht in Betracht ziehen, hätte es vorher sagen sollen. *PUHH..*

Aber ich frage mich, wieso bei einer vollständigen LUA Implementierung in EEP 12, diese Funktion (vielleicht auch noch andere?) nicht funktionieren? Sollte ich die Frage an Trend weiterreichen?

Gruß
Ulrich
juergen18
Benutzeravatar
Team
Beiträge: 1114
Registriert: 04.10.2013, 23:43
EEP-Version: 7-13

AW: höchsten Tabellenindex ermitteln

Nein, brauchst Du nicht, Uli, da Trend nur Lua 5.2 integriert hat, der Befehl maxn z. B. ist aber ein reiner Lua-Befehl,
wie viele andere auch. Da kann Trend nichts zu, wenn von Lua-Version zu Lua-Version sich die Befhle ändern bzw. sogar
abgeschafft werden.
Alle Befehle, die z. B. mit EEP beginnen, wurden von Trend neu eingeführt, diese funktionieren aber im normalen Lua 5.2
ohne EEP nicht.
Grüße aus Wattenscheid von Jürgen

Ich habe EEP 7-13
Laptop: Medion i7-6500U CPU 2.5 - 3.1 GHz, 8 GB DDR3-Speicher, NV Geforce GTX 950M, 2 GB DDR3 Speicher, Win 10 64-Bit

Mein aktuelles Projekt: Erweiterung des Tauschmanagers bis EEP 13 (aktuelle Vesion 3.2.0.4) und ein bisschen Lua
Anleitung für den TM zum Download

Postkartenzähler für den TM: 500
Uli
Kein Avatar
Beiträge: 4
Registriert: 10.01.2016, 10:11
EEP-Version: 12

AW: höchsten Tabellenindex ermitteln

Vielleicht bin ich ja ein wenig begriffsstutzig aber:

LUA 5.2 bietet eingebaute Befehle, unter anderem eben auch den table.maxn. Die in EEP integrierte Version ist ebenfalls 5.2.
Im Handbuch wird man auf LUA verwiesen, entsprechende Links findet man da.

Ergo sollten dann auch die Befehle auch vorhanden sein und so aufzurufen sein.

Das die EEP-Befehle neu sind und nichts mit LUA zu tun haben, ist mir bewusst.
juergen18
Benutzeravatar
Team
Beiträge: 1114
Registriert: 04.10.2013, 23:43
EEP-Version: 7-13

AW: AW: höchsten Tabellenindex ermitteln

juergen18 » 10.01.2016, 11:34 hat geschrieben:Zu Deinem Problem: Meiner Meinung nach ist maxn veraltet (nur bis Lua 5.1).
Ich zitiere mich mal selbst. Mein Lua 5.2-Editor sagt das Gleiche, wirft auch Deine Fehlermeldung raus, ohne EEP.
Also scheint es die Funktion in Lua 5.2 nicht mehr zu geben.

Edit: Ich habe mal meinen Lua-Editor auf 5.1 gestellt und da funktioniert der Befehl table.maxn noch.
Also ein klares Zeichen, dass es ihn in 5.2 nicht mehr gibt.
Grüße aus Wattenscheid von Jürgen

Ich habe EEP 7-13
Laptop: Medion i7-6500U CPU 2.5 - 3.1 GHz, 8 GB DDR3-Speicher, NV Geforce GTX 950M, 2 GB DDR3 Speicher, Win 10 64-Bit

Mein aktuelles Projekt: Erweiterung des Tauschmanagers bis EEP 13 (aktuelle Vesion 3.2.0.4) und ein bisschen Lua
Anleitung für den TM zum Download

Postkartenzähler für den TM: 500
Uli
Kein Avatar
Beiträge: 4
Registriert: 10.01.2016, 10:11
EEP-Version: 12

AW: höchsten Tabellenindex ermitteln

Hallo Jürgen.

(hi) für die Erklärung.

Gruß
Ulrich