CNDG
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.


Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  SuchenSuchen  Neueste BilderNeueste Bilder  AnmeldenAnmelden  LoginLogin  

 

 eval + variablen = ERROR!?

Nach unten 
5 verfasser
AutorNachricht
TheNewGuy
Fähnrich
Fähnrich
TheNewGuy


Männlich Alter : 34
Anmeldedatum : 21.05.10

eval + variablen = ERROR!? Empty
BeitragThema: eval + variablen = ERROR!?   eval + variablen = ERROR!? EmptyFr Mai 21, 2010 1:54 am

Hallo,

ich habe folgenden Code der Entwicklerdoku zum Befehl "eval" entnommen und getestet:

Code:
var v1, v2, v3, v4, v5;
for(var i = 1; i <= 5; i++) eval( Format("v%d = %d", i, i * i) );

In meinen Script eingebaut, sieht das so aus:

Code:
protected func Initialize(){
  var v1, v2, v3, v4, v5;
  for(var i = 1; i <= 5; i++){
    eval(Format("v%d = %d",i,i*i));}
  Log("%d %d %d %d %d",v1,v2,v3,v4,v5);
return(1);}

Nur Blöd, dass die Engine mir immer folgendes in die Log schreibt:

Code:
ERROR: unknown identifier: v1 (eval in D:\Gamez\Clonk Rage\NEW.c4d\Script.c:0:2)
ERROR: unknown identifier: v2 (eval in D:\Gamez\Clonk Rage\NEW.c4d\Script.c:0:2)
ERROR: unknown identifier: v3 (eval in D:\Gamez\Clonk Rage\NEW.c4d\Script.c:0:2)
ERROR: unknown identifier: v4 (eval in D:\Gamez\Clonk Rage\NEW.c4d\Script.c:0:2)
ERROR: unknown identifier: v5 (eval in D:\Gamez\Clonk Rage\NEW.c4d\Script.c:0:2)
0 0 0 0 0

Wie man sieht ist das Ergebnis "0 0 0 0 0". Es sollte laut Entwicklerdoku aber "1 4 9 16 25" lauten.
Noch dazu erscheinen eine menge ERROR logs die mir deutlich sagen, dass die Engine die Variablen im Befehl "eval" nicht identifizieren kann.


Nun meine Frage:

Kann mir einer sagen, wie ich diesen Fehler beheben oder Umgehen kann?
Der Clue soll in meinem fertigen Script nämlich sein, dass Variabelen dessen Namen, sich bei laufendem Spiel, aus 2 Strings Mithilfe "Format()" zusammensetzen,
inizialisiert werden.

Wäre schön wenn mir da jemand helfen könnte^^


Zuletzt von TheNewGuy am Fr Mai 21, 2010 6:55 pm bearbeitet; insgesamt 1-mal bearbeitet
Nach oben Nach unten
Patta
Großadmiral
Großadmiral
Patta


Männlich Alter : 30
Anmeldedatum : 22.05.09

eval + variablen = ERROR!? Empty
BeitragThema: Re: eval + variablen = ERROR!?   eval + variablen = ERROR!? EmptyFr Mai 21, 2010 2:42 pm

omg, wie hab ich das denn geschafft da minus zu voten -.- weiss nicht wie das passiert ist, sry, muss auf enter gekommen sein und das minus war wohl grad markiert oder so. tut mir leid.

Ich vermute mal die Variablen sind falsch deklariert, aber genaueres weiss ich da sonst auch n icht.
Nach oben Nach unten
http://sites.google.com/site/clonkprojekte/star-wars
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

eval + variablen = ERROR!? Empty
BeitragThema: Re: eval + variablen = ERROR!?   eval + variablen = ERROR!? EmptyFr Mai 21, 2010 3:09 pm

Hast du zufällig #strict 2? Das akzeptiert Variabeln mit Zahlen nur dann, wenn sich die Zahlen in der Mitte befinden. Zahlen am Anfang und Ende verursachen einen Error. v1v, v2v etc hingegen würden dann funktionieren.
Bei #strict funktioniert es so noch, was aber wahrscheinlich aus Bug-Gründen entfernt wurde.

Edit: Hm, iwie gehts doch nicht, habs grad mal getestet.
Habs allerdings mit VarN hinbekommen:
Code:
protected func Initialize(){
  var v1v, v2v, v3v, v4v, v5v;
  for (var i = 1; i <= 5; ++i)
    VarN(Format("v%dv", i)) = i*i;
  Log("%d %d %d %d %d", v1v, v2v, v3v, v4v, v5v);
  return 1;
}
Nach oben Nach unten
TheNewGuy
Fähnrich
Fähnrich
TheNewGuy


Männlich Alter : 34
Anmeldedatum : 21.05.10

eval + variablen = ERROR!? Empty
BeitragThema: Re: eval + variablen = ERROR!?   eval + variablen = ERROR!? EmptyFr Mai 21, 2010 6:15 pm

Also erstmal danke: mit VarN() komme ich erstmal weiter Very Happy
Aber ich muss dir wiedersprechen: #strict 2 hat bis jetzt alle meine Bennanten Variablen mit dem Zähler am Ende akzeptiert...
Außerdem bin ich gerade auf den Fehler gestoßen in dem ich diesen Script getestet habe:

Code:
protected func Initialize(){
  var vTest;
  local lTest;
  static gTest;
  eval("vTest = 1");
  eval("lTest = 1");
  eval("gTest = 1");
  Log("Die Funktionslokale = %d",vTest);
  Log("Die Objektlokale = %d",lTest);
  Log("Die Globale = %d",gTest);
  return 1;}

Die Engine gab mir folgendes zurück:

ERROR: unknown identifier: vTest (eval in D:\Gamez\Clonk Rage\_NEW.c4d\Script.c:0:5)
Die Funktionslokale = 0
Die Objektlokale = 1
Die Globale = 1

Die Vermutung liegt nahe, dass eval() nicht mit Funktionslokalen arbeiten kann.
Schade nur, dass dies Bezüglich in der Entwicklerdoku nicht nur eine Anmerkung fehlt, sondern sogar noch ein falsches Beispiel gegeben wird.
Nach oben Nach unten
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

eval + variablen = ERROR!? Empty
BeitragThema: Re: eval + variablen = ERROR!?   eval + variablen = ERROR!? EmptyFr Mai 21, 2010 6:25 pm

Schonmal versuch #strict zu benutzen statt #strict 2? Vlt. ist die Funktion so alt das sie nurnoch mit #strict geht.
Nach oben Nach unten
http://www.gamer95.npage.de/
TheNewGuy
Fähnrich
Fähnrich
TheNewGuy


Männlich Alter : 34
Anmeldedatum : 21.05.10

eval + variablen = ERROR!? Empty
BeitragThema: Re: eval + variablen = ERROR!?   eval + variablen = ERROR!? EmptyFr Mai 21, 2010 6:54 pm

jap war gleich meine erste Vermutung. Habe es sogar ohne #strict getestet, in allen 3 Fällen
wirft die Engine...

Die Funktionslokale = 0
Die Objektlokale = 1
Die Globale = 1

...herraus
Nach oben Nach unten
Gurkenglas
Oberst
Oberst



Anmeldedatum : 04.01.09

eval + variablen = ERROR!? Empty
BeitragThema: Re: eval + variablen = ERROR!?   eval + variablen = ERROR!? EmptySa Mai 22, 2010 11:39 pm

Wenn du Variablen gleichen Namens durchnummerieren willst, benutz Arrays.

Ein Array ist sozusagen ein Variablenfeld, zB [3,5,8,7].

Du kannst Elemente dieses Arrays abrufen indem du dahinter in [] die nummer des elements hinschreibst, es wird 0,1,2 gezählt! [3,8,4][2] wäre also 4.

zB kannst du schreiben:

Code:
protected func Initialize() {
var v=[]; //Leerer Array, du kannst auch CreateArray(); benutzen oder CreateArray(5); für Länge 5, etwas effizienter.
for(var i;i<5;i++)
    v[i]=i*i;
Log("%d %d %d %d %d",v[0],v[1],v[2],v[3],v[4]);
}
Nach oben Nach unten
Gesponserte Inhalte





eval + variablen = ERROR!? Empty
BeitragThema: Re: eval + variablen = ERROR!?   eval + variablen = ERROR!? Empty

Nach oben Nach unten
 
eval + variablen = ERROR!?
Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» ERROR: syntax error: see previous parser error for details.
» ERROR:internal error: value stack overflow!
» Error-Info?
» Probleme mit if und Variablen
» Parse Error?! Menno :(

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Sonstiges :: Scripthilfe-
Gehe zu: