Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Error compiling string buffer
#1
nightly r6336, pak128 2.2.0 r1142

Das Script (siehe Anhang) lasst sich problemslos starten und die ersten Versuche im Spiel klappen auch. Wenn ich nun das Spiel speicher und dann lade erhalte ich die Fehlermeldung: Error compiling string buffer

Das besondere ist "userdefindstringmethod line = (5) column = (9)"
Dies ist im Kopf des Scripts und hilf mir wenig. Ich konnte den Fehler auf die
Zeilen 123 und 219 zurückführen. Allerdings ist mir nicht klar warum dies nur beim Laden zum Fehler führt.


Angehängte Dateien
.zip   test.zip (Größe: 82,31 KB / Downloads: 338)
Zitieren
#2
Ich denke mal der string-buffer ist ein String, der aus der persistent-Tabelle generiert wird, dieser String wird direkt kompiliert und baut damit nach dem Laden die persistent Tabelle wieder zusammen.

Ich wuerde mal darauf tippen, dass in der persistent-Tabelle irgendwas problematisches steht. Kannst du mal mit -debug 2 laufen lassen und dann das Ende vom Log posten?

Edit: sieht so aus, als wuerdest du in einer Tabelle Zahlen als Schluessel verwenden. Da ist wahrscheinlich in der export Funktion irgendwas faul.
Zitieren
#3
script.log:
Code:
[Script]: ERROR:        <error>
[Script]: ERROR:        userdefinedstringmethod line = (5) column = (8) : error expected 'IDENTIFIER'
[Script]: ERROR:        </error>

Zitat:als wuerdest du in einer Tabelle Zahlen als Schluessel verwenden
Ja ist richtig. Sind sogar zwei Tabellen. Allerdings tritt der Fehler auch auf, wenn es sich um keine Zahlen im Schlüssel handelt.

Sobald rawset(key, value) im script genutzt taucht der Fehler auf. Habe auch schon die unschöne Alternative tabellenname[key] <- value ausprobiert, erzeugt aber den selben Fehler.
Zitieren
#4
Das ist wahrscheinlich in Fehler in der scneario_base.nut: Tausche mal die Zeilen 132-134
Code:
if (!isarray) {
str += key + " = "
}
aus gegen
Code:
if (!isarray) {
  if (typeof(key)=="string") {
     str += key + " = "
  }
  else {
     str += "[" + key + "] = "
  }
}

Das liegt nicht an rawset etc, sondern daran, dass die save-Routine verbuggt ist.
Zitieren
#5
Erzeugt leider:
error cannot brake deref/or comma needed after [exp]=exp slot declaration

Wenn es denn nur an integer key liegt, dürfte der Fehler eigentlich nicht auftauchen wenn man im test den key als .tostring() deklariert. Tut er aber trotzdem.
Zitieren
#6
Ich schaus mir mal an. Sollte eigentlich leicht zu fixen sein.

Edit: Sollte mit r6341 gehen, (scneario_base.nut updaten)
Zitieren
#7
in r6343 getestet, funktioniert.

In meinem Script war aber auch ein Fehler, zwei Zeilen höher als vermutet Z110 muss
Code:
h.pos <- { x = position.x , y = position.y }
statt
Code:
h.pos <- position
lauten.
Zitieren
#8
Siehe 'Common pitfalls' Wink Fuer deinen Fall muesste auch
Code:
h.pos = clone position
funktionieren:

http://www.squirrel-lang.org/doc/squirrel3.html#d0e1274
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste