[Monkey] MNet Problem bei fehlender Verbindung
Übersicht

![]() |
MidimasterBetreff: MNet Problem bei fehlender Verbindung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann mir jemand einen Tipp geben, wie ich bei dem MNet Modul einen Absturz unter Android verhindere, wenn es keine Verbindung zum Server gibt?
Die Verwendung des Befehls soll eigentlich so sein: BlitzMax: [AUSKLAPPEN] Local Result$ Wenn allerdings kein Server gefunden wird gibt diese Funktion nichts zurück.. oder NULL? jedenfalls stürzen beide folgenden Abfragen ab: BlitzMax: [AUSKLAPPEN] Result=Server.Get( Adress, 3000 ) BlitzMax: [AUSKLAPPEN] Result=Server.Get( Adress, 3000 ) Wie ist das mit "leeren" Strings unter Monkey? Was mache ich hier falsch? Das Modul ist von "Xaron". Da gibt es hier im Forum auch einen, aber ich bin mir nicht sicher, ob es der gleiche ist. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe das Modul gerade ausprobiert und auch die mitgelieferten Beispiele funktionieren bei mir nicht. Beim HTML5-Target wird von Get nur undefined zurückgegeben. | ||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja, und wie fragt man nun diese "Undefined" in Monkey ab, ohne dass es in Android zu einem Absturz kommt? In HTML5 kommt Monkey ja scheinbar mit der returnten "Undefined"-Meldung zurecht....
Übrigens, deine Beobachtung ist kein weiterer Fehler: Unter HTML5 ist das Modul nur eingeschränkt nutzbar, da HTML5 keine Adresse außerhalb des Ordners zulässt, aus dem das html Dokument geladen wurde. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah, okay. Daran habe ich nicht gedacht. Hab es jetzt aber mal mit Android ausprobiert und möglicherweise den Fehler gefunden. Bei mir war es jedenfalls so, dass der Fehler im Get-Aufruf ausgelöst wird und eine Meldung erscheint. Ist es das, was du meinst? Zu der Abfrage des Rückgabewertes kommt es also gar nicht erst.
Das Problem liegt in der Datei mnet.android.java im native-Ordner des Moduls. Nach Zeile 93, wo die Methode convertStreamToString definiert wird, habe ich die Zeile "if (is == null) return "";" eingefügt. Falls die angegebene Adresse nicht erreichbar ist, wird sonst trotzdem versucht, aus dem Stream zu lesen, obwohl das Objekt gleich null ist. An der Stelle wird dann stattdessen einfach ein leerer String zurückgegeben. Besser wäre es aber wahrscheinlich, wenn man hier einen Fehlercode zurückgibt und das Ergebnis über eine andere Methode abrufbar macht. ![]() |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
denkst Du, dass das ein Fehler in der MNet ist, den man auch dort beheben muss? Oder kann ich auch den "leeren String" nachdem er returned worden ist, irgendwie auf der Monkey-Seite erkennen und da entsprechend reagieren?
Ich würde ungern einen Patch im Java-Target der Mnet anbringen, sondern liebern den Autor um eine Lösung bitten, die dann allen zugute kommt. Sonst muss ja ab sofort jeder patchen und bei zukünftigen Updates der Mnet wäre auch ich sofort wieder betroffen. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, das ist ein Fehler in MNet. Mit dem Patch kannst du dann natürlich in Monkey testen, ob der String leer ist, aber ansonsten stürzt das Programm eben schon im Aufruf von Get ab, sodass man da keine Chance mehr hat.
Xaron ist übrigens der gleiche in beiden Foren. ![]() Kannst ihn ja mal anschreiben und fragen, was er dazu meint. |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso! Jetzt verstehe ich...
Du sagst, das Programm stürzt schon immer bei der Zeile mit dem Aufruf ab. Und ich dachte immer, dass erst die Weiterbenutzung von Result$ nachher bei mir den Fehler auslöst. Also muss ich jetzt in die... C:\MonkeyPro61b\modules\mnet\native\mnet.android.java ...an der entsprechenden Stelle ändern. Ich mach das mal so: Code: [AUSKLAPPEN] public String convertStreamToString( InputStream is )
{ if (is == null) return "ERR_noStream"; StringBuilder sb = new StringBuilder(); .... Das muss ich dann jetzt bei jedem Update bedenken. Also, das probier ich jetzt gleich mal aus.... Danke [Edit] Also es funktioniert! Jetzt bekomme ich einen String zurück, den ich in der App auswerten kann. Danke nochmals! |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group