• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

wie funktioniert der Solver

2cachefix

Geomaster
Bislang habe ich den Solver noch nie eingesetzt. Ich habe immer ein Stück Papier dabei und die Rechnungen damit erledigt.
Ich habe einfach einmal das Rechenbeisp. aus der Dokumention in den Solver kopiert und wollte es ausführen. Das bringt aber kein Ergebnis. Kann ich die Syntax nicht einfach übernehmen(kopieren)?

Im CMD bekomme ich folgendes:
java.lang.ArrayIndexOutOfBoundsException
at java.lang.String.charAt(String.java)
at CacheWolf.Tokenizer.getChar(Tokenizer.java:59)
at CacheWolf.Tokenizer.TokenIt(Tokenizer.java:128)
at CacheWolf.SolverPanel.onEvent(SolverPanel.java:50)
at ewe.ui.Control.postEvent(Control.java)
at ewe.ui.Control.notifyAction(Control.java)
at ewe.ui.ButtonControl.fullAction(ButtonControl.java)
at ewe.ui.ButtonControl.fullAction(ButtonControl.java)
at ewe.ui.ButtonControl.penReleased(ButtonControl.java)


Mehr nicht.
 

greiol

Geoguru
kannst du mal posten wie deine "formel" aussah?
so ganz ohne anpassung kannst du rechnungen meist nicht per c&p übernehmen.
was du anpassen musst, kannst du aber der hilfeseite zur wolflanguage entnehmen.
 
OP
2cachefix

2cachefix

Geomaster
Grundsätzlich sieht das für mich ausführbar aus.

A = 1;
B= 3;
C= 4;
„N 48 12.00"show(A+B);
D = A \* 4000 / C – 10 \* 400;
"Die nächste Position ist: "show(D)" befindet sich hier";

Vieleicht habe ich aber auch ein grundsätzliches Problem mit JAva oder EWE.

Ich habe einen Export mit dem mitgelieferten Template 'MSAutoRoute.tpl' versucht. Auch das hat nicht funktioniert. Hier bekomme ich die Info:

java.lang.IllegalArgumentException: <tmpl_par name="charset" value="ASCII">
at HTML.Tmpl.Parsers.Parser.parseLine(Parser.java:182)
at HTML.Template.parseLine(Template.java:760)
at HTML.Template.read_file(Template.java:854)
at HTML.Template.init(Template.java:739)
at HTML.Template.<init>(Template.java:375)
at CacheWolf.TPLExporter.doIt(TPLExporter.java:163)
at CacheWolf.MainMenu.onEvent(MainMenu.java:319)
at ewe.ui.Control.postEvent(Control.java)
at ewe.ui.MenuState.onEvent(MenuState.java)
at ewe.ui.Control.sendToListeners(Control.java)
at ewe.ui.Control.postEvent(Control.java)
at ewe.ui.Menu.postEvent(Menu.java)
at ewe.ui.Menu.onEvent(Menu.java)
at ewe.ui.Control.sendToListeners(Control.java)
at ewe.ui.Control.postEvent(Control.java)
at ewe.ui.Menu.postEvent(Menu.java)
at ewe.ui.Control.notifyAction(Control.java)
at ewe.ui.Menu.penReleased(Menu.java)
at ewe.ui.Control.penClicked(Control.java)
at ewe.ui.Control.onPenEvent(Control.java)
at ewe.ui.Menu.onPenEvent(Menu.java)
at ewe.ui.Control.onEvent(Control.java)
at ewe.ui.Menu.onEvent(Menu.java)
at ewe.ui.Control.postEvent(Control.java)
at ewe.ui.Menu.postEvent(Menu.java)
at ewe.ui.Window.doPostEvent(Window.java)
at ewe.ui.Window$windowThread.run(Window.java)
at ewe.sys.mThread.run(mThread.java)

Irgend etwas sollte doch in meine angegebene Datei schreiben, aber auch hier tut sich nichts weiter.

Vielleicht kannst Du das mal nachstellen.


Übrigens das ganze wickele ich unter Windows ab.
 
OP
2cachefix

2cachefix

Geomaster
Ok. Das erste Problem habe ich gelöst.
A = 1;
B= 3;
C= 4;
„N 48 12.00"show(A+B);
D = A \* 4000 / C – 10 \* 400;
"Die nächste Position ist: "show(D)" befindet sich hier";

Inder 4-ten Zeile war das Anführungszeichen unten muss aber nach oben und in der 5-ten Zeile habe ich eine einfachere Berechnung eingefügt.
Jetzt klappt es.

Bei dem Export in die TPL-Datei stehe ich aber immer noch vor einem Rätsel.

Wenn ich davon ausgehe, dass auch hier ein Syntaxfehler vorliegt, wächst bei mir der Wunsch nach einer Fehlerbehandlung. Wenn das nicht zu aufwändig ist würde ich das gerne als FR eintragen.
Vielleicht kann mir ein Entwickler dazu was sagen.
 

Bilbowolf

Geowizard
Ich kann bestätigen, daß der Export nicht funktioniert. Ich habe es als Bug aufgenommen.

Kalli, kannst Du das mal bitte anschauen?
 

pfeffer

Geowizard
2cachefix schrieb:
Grundsätzlich sieht das für mich ausführbar aus.
A = 1;
B= 3;
C= 4;
„N 48 12.00"show(A+B);
D = A \* 4000 / C – 10 \* 400;
"Die nächste Position ist: "show(D)" befindet sich hier";

Der Grund für die InexOutOfBoundsExeption liegt in irgendwelchen Sonderzeichen („), auch der Backslash vor dem "*" stört wohl. Das aktuelle Beispiel in der Doku auf cachewolf.berlios.de funktioniert.
Trotzdem hast Du recht: es sollte ein entsprechender Fehler ausgegeben werden, habe ich als FeatureRequest ([ Feature Request #2951 ] Solver: Fehlermeldung fehlt) aufgenommen.

Gruß,
Pfeffer.
 

greiol

Geoguru
wäre es evtl. sinnvoll eine
Code:
stop;
anweisung einzubauen? dann könnte man sowas schreiben
Code:
A=1;
B=2;
show(A+B);

stop;

C=3;
show(C);
und müsste nur noch station für station die stop befehle auskommentieren, statt sich mit den ganzen #s abzumühen, die man erst alle eingeben und dann alle wieder löschen muss.

ist im moment nur so ein gedanke und noch nicht unbedingt ein FR ;)

feedback willkommen
 

Kalli

Geowizard
Ich habs gefunden, bei der Gelegenheit habe ich den TPLExporter noch etwas stabiler gemacht, indem ich eine Exception abgefangen habe.

Der Grund für den beschriebenen Fehler liegt aber woanders:
1. ist nicht das aktuelle TPL-File in dem zip mit drin
2. habe ich damals im Archiv HTML.ZIP Code geändert, da ich eine Art Präprozessor brauchte.

@Bilbowolf: Kannst Du bitte mal deine Buildumgebung checken, wahrscheinlich hast Du HTML.ZIP nicht ausgepackt. Ich gebe zu, die Libraryverwaltung könnte man vieleicht besser machen, aber so oft ändert sich da ja nichts. Ich habe den Bug jetzt mal Dir zugewiesen.
 

greiol

Geoguru
Bilbowolf schrieb:
Na... das ist eine _wirklich gute_ Idee! Und so leicht umzusetzen
also falls das noch jemand gut findet, mach ich gerne einen FR draus.

wobei wir vielleicht nochmal überlegen können ob es ein komplettes
Code:
stop;
sein muss, oder ob auch sowas
Code:
xx;
geht. ich bin schreibfaul und falls ich die formel beim spontancachen(TM) draussen im feld aufbauen muss, spare ich gerne so viel wie möglich.
 
OP
2cachefix

2cachefix

Geomaster
ich würde für zwei Varianten plädieren.
exit; und für die Faulen ex;. Beides kann man leicht als Ausstiegpunkt interpretieren.
 
Oben