Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Java Applet и Jscript - как возвратить массив?  (Прочитано 16545 раз)
0 Пользователей и 1 Гость смотрят эту тему.
acidron
Гость
« : 05-09-2005 19:35 » 

собственно, сабж.. как в методе апплета вернуть массив и затем как его прочитать в скрипте, вызвавшем метод.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 06-09-2005 06:50 » 

В доке смотрел?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
acidron
Гость
« Ответ #2 : 06-09-2005 09:12 » 

извиняюсь, в каком доке? по js или java?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 06-09-2005 10:13 » 

В JavaScript - в книгах по Java я ниразу не видел, чтобы такое упомяналось.

Например:
http://experiment.net.ru/js2/index.php?f=lc.htm#1014290
http://olddos.narod.ru/doc/comp/bsp/v34/ch6.htm
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 06-09-2005 11:09 » 

Java массив автоматически обернётся в объект JavaArray языка JavaScipt

http://docs.sun.com/source/816-6408-10/javarray.htm
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
acidron
Гость
« Ответ #5 : 06-09-2005 21:58 » 

Что то у меня он в объект не оборачивается...Прикрепил скрин дебагера... E - это то, что вернул апплет, E2 - стандартный объект массив JS... Как добраться до полей E? По индексу не выходит...

* 1.JPG (14.28 Кб - загружено 1263 раз.)
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 07-09-2005 18:36 » 

acidron, код давай - не телепаты, чай.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
acidron
Гость
« Ответ #7 : 07-09-2005 19:14 » 

Код прост до безобразия.
Код:
В апплете:
    public int[] getDisks(){
        int result[] = new int[4];
        result[0] = 0;
        result[1] = 1;
        result[2] = 2;
        result[3] = 3;
        return result;
   }
В скрипте
   var diskList = applet.getDiscs();
   alert (diskList[1]);
ошибка "1 есть null или не является объектом". Соответсвтенно, никаких "методов" length у массива(именно массива, а не объекта типа array) disksList нет.
MSE между тем показывает наличие нужных полей в просматриваемой переменной disksList, при этом тип переменно определен как "Array of long", осталось узнать, как поля прочесть.
Записан
acidron
Гость
« Ответ #8 : 09-09-2005 08:33 » 

Никто не встречался с таким явлением? ;(
Как же вы массивы передаёте?...
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #9 : 09-09-2005 10:33 » 

Никто не встречался с таким явлением? ;(
Как же вы массивы передаёте?...
Ну не все же пишут в связке Java + Jscript Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 11-09-2005 14:41 » 

HTML:
Код:
<HTML>
<HEAD>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=windows-1251" />
</HEAD>
<BODY>
<DIV ID="out"></DIV>
<APPLET NAME="app" CODEBASE="classes/" CODE="applet_test"></APPLET>
<SCRIPT TYPE="text/javascript">

var out = document.getElementById('out');
var a = document.app.get();

for ( var i in a )
{
out.innerHTML += a[i] + '<BR/>';
}

</SCRIPT>
</BODY>
</HTML>

Applet:
Код:
import java.applet.*;

public class applet_test extends Applet
{
public static int[] get()
{
int result[] = new int[4];
result[0] = 0;
result[1] = 1;
result[2] = 2;
result[3] = 3;
return result;
}
}

Результат в Mozilla:
Код:
0
1
2
3
В IE и Opera не заработало и причина не известна, т.к. средств отладки там не предусмотрено.

В атаче - вид объекта "a" в javascript-отладчике Mozilla.

* pic1.PNG (3.74 Кб - загружено 1166 раз.)
« Последнее редактирование: 20-12-2007 20:45 от Алексей1153++ » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
acidron
Гость
« Ответ #11 : 11-09-2005 21:50 » 

Да, действительно в Мозилле всё работает, в том числе и мой код. Обращение по индексу (a) происходит корректно...
Значит вопрос теперь стоит так: как в IE и Opera подцепить массив Array of long...
Цитата
т.к. средств отладки там не предусмотрено.
Я использую не самый плохой дебаггер MSSE. Microsoft Word ->Сервис -> Макрос -> Редактор сценариев
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 12-09-2005 06:57 » 

Все же не Array of long, а JavaArray - по стандарту так.
app.isActive() во всех трех браузерах дало true - значит аплет они видят, а вот метод не вызывают.
Надо подумать ж)
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
acidron
Гость
« Ответ #13 : 12-09-2005 09:20 » 

Цитата
Все же не Array of long, а JavaArray - по стандарту так.
Я читал Ага Мне дебагер маздаевский выдал Array of long вместо Object, что должно быть в случае JavaArray.
Цитата
значит аплет они видят, а вот метод не вызывают.
Метод вызывается во всех трех браузерах, если вернуть не массив, всё отлично.
Уж что вернулось в опере действительно неизвестно, отладчика под неё не нашел, а в IE, ещё раз повторюсь, вернулось загадочное Array of Long.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines