[LUA] "Attempt to concatenate local (a nil value) ?

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

Toasty

Betreff: [LUA] "Attempt to concatenate local (a nil value) ?

BeitragSo, Dez 19, 2010 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Tag,
ich verwende LUA für mein Multiplayer Projekt, und in den Funktionen habe ich anscheinend einen kleinen Bug, den ich nicht finde.

Hier die Meldung aus der Logfile:
Zitat:
17:37:05 (ERROR): skillSDK.lua:27: attempt to concatenate local 'cmd' (a nil value)


Die Funktion:
Code: [AUSKLAPPEN]
function AddHandle(main,cmd,p1,p2,p3,p4)
   if(p4 == "") then
      if(p3 == "") then
         if(p2 == "") then
            return main.."~"..cmd.."~"..p1 --Hier ist der Fehler irgendwo
         else
            return main.."#"..cmd.."*"..p1.."*"..p2
         end
      else
         return main.."#"..cmd.."*"..p1.."*"..p2.."*"..p3
      end
   else
      return main.."#"..cmd.."*"..p1.."*"..p2.."*"..p3.."*"..p4
   end
end


Ich hoffe jemand hat eine Idee...

Gruß Toast.

PS: Ich wusste nicht wo ich es genau posten sollte, aber ich denke mal hier ist es richtig? Rolling Eyes

EDIT: Die Returns in der Funktion sind nicht alle gleich, ich weiß... Hab erstmal zum Ausprobieren ob der Fehler daran liegt nur beim Ersten Return die Zeichen gewechselt.
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!

Noobody

BeitragSo, Dez 19, 2010 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, da steht doch relativ genau, was der Fehler ist? Du versuchst, die Variable 'cmd' an einen String anzuhängen ("to concatenate" = verketten auf Englisch), was aber fehlschlägt, da cmd den Wert nil hat (so etwas ähnliches wie "Null" in B3D).

Zur Lösung des Problems musst du entweder dafür sorgen, dass cmd nicht nil ist, oder den entsprechenden Fall abfangen und cmd nicht an den String anhängen.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Toasty

BeitragSo, Dez 19, 2010 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, aber wenn das alles in einer Funktion ist, kann es ja noch nicht genau deklariert werden...
Wie sag ich ihm dann, dass die Variable "cmd" ein String ist?
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!

Xeres

Moderator

BeitragSo, Dez 19, 2010 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Gar nicht, da nur Werte Datentypen haben. Aber vielleicht helfen dir toString / type
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

mpmxyz

BeitragSo, Dez 19, 2010 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
In Lua gibt es gar keine Deklarationen. (Von lokalen Variablen mal abgesehen.)
Daher haben die Werte einen Datentyp.
Diesen kannst du so abfragen:
Code: [AUSKLAPPEN]
if type(value) == "string" then
   ... --Zusammenfügen der Strings
end

Ich kann dir diese Seite zum Nachschlagen empfehlen:
http://www.lua.org/manual/5.1/manual.html
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

Toasty

BeitragSo, Dez 19, 2010 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay ich hab es jetzt mit tostring(cmd) gelöst.

Danke für die Hilfe Smile
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group