Error: attempt to perform arithmetic on global xxx (a table)

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Error: attempt to perform arithmetic on global xxx (a table)

Beitragvon Karmaschinken » 24.06.2013, 13:13

Hallo Leute,

ich habe versucht, ein Script für die Steuerung des manuellen Videos so zu verändern, dass die initialen Werte für TV, AV und SV aus dem Parameter-System von CHDK gelesen und benutzt werden. Aber ich kriege es nicht hin. Im Script werden die Variablen tv96, av96 und sv96 benutzt, um die Werte aus der Kamera zu lesen und sie bei entsprechendem Menüklick in der Kamera zu setzen. Alles was ich will, dass diese drei Variablen initial mit Werten belegt werde.

Wenn ich im Script das hier code:

tv96 = 886
av96 = 446
sv96 = 0

funktioniert das Script einwandfrei, auch die Variablen sind initial mit eben diesen Werzen belegt. Versuche ich nun aber statt festen Zahlen die Werte aus Scriptparametern in tv96, av96 und sv96 zu schreiben (was zwar funktioniert, so bekomme ich bei einem späteren Versuche, die Werte per Script zu ändern, einen Fehler:

Error: attempt to perform arithmetic on global xxx (a table value)

Ändere ich also den Code in:

tv96 = t
av96 = u
sv96 = v

wobei t, u und v Scriptparameter sind, dann funzt das Script nicht mehr. Der Fehler erscheint, sobald ich den Wert erhöhen will. Kann mir jemand da helfen?

Ich attache das Script, die fraglichen Zeilen sind 311, 312 und 313, der Fehler tritt dann in Zeile 140 auf.


Vielen Dank!

Martin
Dateianhänge
Videxp.lua
(9.3 KiB) 343-mal heruntergeladen
50 Stück SX 200 IS
Karmaschinken
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 114
Registriert: 13.08.2010, 09:24
Wohnort: Woltersdorf
Kamera(s): 50 Stck. SX200IS

Re: Error: attempt to perform arithmetic on global xxx (a ta

Beitragvon msl » 24.06.2013, 16:26

Hallo,

dein Vorhaben wird so nicht gelingen. Das ganze Skript ist nicht dafür ausgelegt, Startwerte zu initialisieren.

Der Fehler hat allerdings nichts damit zu tun. Konkret kann ich Augenblick nicht erkennen, wo der Fehler im Detail steckt. Allerdings initialisierst du die xx96-Werte mehrfach (ab Zeile 55, 127, 303 und 311). Möglicherweise verursacht das in der globalen Lua-Struktur einen Fehler. Laut Fehlermeldung sind die xx96-Variablen nicht mehr typgerecht. Das könnte man mit Hilfe der type()-Funktion debuggen, also herausfinden, ob die Variable noch eine "number" ist.

---
edit: reyalp hat es auch gerade bei deiner Anfrage im internationalen Forum geschrieben. In der Funktion menuitem() (Zeile 211) wird eine globale Variable t als Typ "table" definiert. Das löst den Fehler für die Variable tv96 aus. Du übergibst t an tv96, nachdem t als "table" definiert wurde.
---

Ich habe hier eine Skriptvariante bereitgestellt, die etwas besser bedienbar ist. Zumindest kann man mit dem Skript interaktiv Startwerte einstellen. Allerdings wird das recht häufig über den Haufen geworfen, wenn die Videofunktion beim Start der Meinung ist, dass andere Werte benötigt werden. Außerdem kann man mit dem Skript zoomen und Tv sowie Av werden als kamerataugliche Werte ausgegeben.

Vergiss bitte nicht, dass dieses Skript höchst experimentell ist und an die Grenzen von CHDK geht.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Error: attempt to perform arithmetic on global xxx (a ta

Beitragvon Karmaschinken » 24.06.2013, 21:47

Wow! Cool! Das geht natürlich weit über das hinaus, was ich hier an Hilfe erwartet habe. Super! Ich werde die Sache gleich austesten, ich habe allerdings SX200IS am Start...

Vielen Dank! Echt super!
50 Stück SX 200 IS
Karmaschinken
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 114
Registriert: 13.08.2010, 09:24
Wohnort: Woltersdorf
Kamera(s): 50 Stck. SX200IS


Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 17 Gäste