Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указание интерпретатора, javascript на 64-разрядных системах 
:(
    Опции темы
UndeadBlow
Дата 9.4.2012, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.12.2011

Репутация: нет
Всего: нет



Всем добра.
Такое дело, скрип выполняется только 32-разрядными интерпретаторами. В Win7, например, этот интерпретатор находится по адресу c:\\windows\sysWOW64\ wscript.exe. Каким образом указать в скрипте интерпретатор, которым его надо выполнять, во избежание ошибки на 64-разрядных системах?
PM MAIL   Вверх
ksnk
Дата 9.4.2012, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Указать в скрипте интерпретатор в Win нельзя. Если скрипт начал выполняться, он уже чем-то исполняется  smile 

Интересно, что можно написать на JavaSCript, чтобы была разница между 64 и 32 разрядными системами?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
UndeadBlow
Дата 9.4.2012, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.12.2011

Репутация: нет
Всего: нет



Сам в шоке, поверь. Препода замучал, втроем с аспирантом наконец вкурили, почему скрипт работает дома и не работает в аудитории.
Короче там объект COM'овский класса ScriptControl не хочет создаваться, когда скрипт запущен 64-разрядным интерпретатором.
Какие есть варианты решения? Желательно автоматизированного решения, ассоциировать файл вручную с нужным экзешником конечно всегда можно.
PM MAIL   Вверх
Aliance
Дата 10.4.2012, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



По вторникам мысли других людей не читаем, код бы увидеть...
PM MAIL WWW ICQ Skype   Вверх
UndeadBlow
Дата 10.4.2012, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.12.2011

Репутация: нет
Всего: нет



Кусок вызывающий проблемы на 64-разрядных системах.
Код

var vb = {};
vb.Function = function(func)
{
return function()
{
return vb.Function.eval.call(this, func, arguments);
};
};
vb.Function.eval = function(func)
{
var args = Array.prototype.slice.call(arguments[1]);
for (var i = 0; i < args.length; i++) {
if ( typeof args[i] != 'string' ) {
continue;
}
args[i] = '"' + args[i].replace(/"/g, '" + Chr(34) + "') + '"'; // '
}
var vbe;
vbe =WScript.CreateObject("ScriptControl");
vbe.Language = 'VBScript';
return vbe.eval(func + '(' + args.join(', ') + ')');
};


Конкретно не создается объект ScriptControl (неважно через WScript создавать или через ActiveX) на не 32-разрядных системах.
Через cmd если вызвать интерпретатор 32-разрядной системы в вин7 (windows\sysWOW64\wscript.exe) и запустить скрипт, то ок. Иначе проблемы.

Это сообщение отредактировал(а) UndeadBlow - 10.4.2012, 15:12
PM MAIL   Вверх
ksnk
Дата 10.4.2012, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Насколько я понимаю, проблема при создании объекта VBScript? А до работы с этим объектом все , в принципе, работает?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
UndeadBlow
Дата 10.4.2012, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.12.2011

Репутация: нет
Всего: нет



Цитата(ksnk @ 10.4.2012,  15:11)
Насколько я понимаю, проблема при создании объекта VBScript? А до работы с этим объектом все , в принципе, работает?

Подредактировал сообщение, указал в чем именно проблема.
Остальное да, работает.
Кстати, забавно, но у девушки на компе не вышло даже ассоциировать расширение с интерпретатором в sysWOW64. Запускается через него только через cmd. Что за фигня >.<

Это сообщение отредактировал(а) UndeadBlow - 10.4.2012, 15:20
PM MAIL   Вверх
ksnk
Дата 10.4.2012, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Если поискать по словам 
Цитата
scriptcontrol 32 64 ActiveX component can't create object
 в гугле, то можно найти много вопросов, но решения мне там не попадалось... Видимо - "доктор сказал - в морг"
Хотя, можно поковыряться тут слишком много букв для простого отлупа. Возможно там есть и решение... 
проверить все это я не могу ;) 

Это сообщение отредактировал(а) ksnk - 10.4.2012, 15:54


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
UndeadBlow
Дата 10.4.2012, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.12.2011

Репутация: нет
Всего: нет



В диких недрах стаковерфлова есть сие, что и помогло. Но больше я выжать из этого не смог.
http://stackoverflow.com/questions/2429477...ts-on-windows-7
Других вариантов создания InputBox на javascript я не знаю, кроме как через vb вот так.

Это сообщение отредактировал(а) UndeadBlow - 10.4.2012, 16:50
PM MAIL   Вверх
ksnk
Дата 10.4.2012, 18:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Цитата(UndeadBlow @  10.4.2012,  16:48 Найти цитируемый пост)
Других вариантов создания InputBox на javascript я не знаю, кроме как через vb вот так.

Это да. У нас в одном приложении используется JS в качестве скриптового языка. Там по просьбам трудящихся была в конце концов введена функция msgBox и inputBox и еще какие-то, поддерживаемые приложением. 
До этого реализация inputBox там была такая.
Код

function inputBox(Msg,Title,Default)
{
    var vbscript = new ActiveXObject("ScriptControl");
    vbscript.Language = "VBScript";
    vbscript.AddCode( [
        'Function inputB(ByVal Msg, ByVal Title, ByVal Default )',
        'inputB=InputBox(Msg,Title,Default)',
        'End Function'].join("\n"));
    return vbscript.Run("inputB",Msg,Title,Default);
}
 Выглядит она по другому, но, вероятно, с такими-же багами на 64разрядной машине.
В мистическом смысле функции в функции разбираться не было большого желания... smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
UndeadBlow
Дата 11.4.2012, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 15.12.2011

Репутация: нет
Всего: нет



Цитата(ksnk @ 10.4.2012,  18:08)
Цитата(UndeadBlow @  10.4.2012,  16:48 Найти цитируемый пост)
Других вариантов создания InputBox на javascript я не знаю, кроме как через vb вот так.

Это да. У нас в одном приложении используется JS в качестве скриптового языка. Там по просьбам трудящихся была в конце концов введена функция msgBox и inputBox и еще какие-то, поддерживаемые приложением. 
До этого реализация inputBox там была такая.
Код

function inputBox(Msg,Title,Default)
{
    var vbscript = new ActiveXObject("ScriptControl");
    vbscript.Language = "VBScript";
    vbscript.AddCode( [
        'Function inputB(ByVal Msg, ByVal Title, ByVal Default )',
        'inputB=InputBox(Msg,Title,Default)',
        'End Function'].join("\n"));
    return vbscript.Run("inputB",Msg,Title,Default);
}
 Выглядит она по другому, но, вероятно, с такими-же багами на 64разрядной машине.
В мистическом смысле функции в функции разбираться не было большого желания... smile

Проблема не в коде, а в создании com объекта, да :( Так что знай, эта хрень на 64 не пойдет, или пойдет, но с бубном диким)
Впрочем можно изголиться и сделать в скрипте создание смд файла и создание еще одного .js файла. Потом смд запускает js и после выполнения оба удаляются. Но это и есть жуткий бубен, хз. Попробую препода попытать одного умного, может подскажет что получше в итоге.
Кстати говоря, вся эта хрень - это плата за кроссплатформенность. 

Это сообщение отредактировал(а) UndeadBlow - 11.4.2012, 01:09
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0545 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.