Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - vlad

Страницы: [1] 2 3 ... 93
1
Общий раздел / Re: OberonJS
« : Март 20, 2017, 01:22:39 pm »
https://models.molpit.org/model/49

У тебя глобальный String перекрывается твоей собственной функцией String. Обратиться к глобальному можно так: JS.String.fromCharCode

2
Общий раздел / Re: OberonJS
« : Март 20, 2017, 03:12:30 am »
Еще прошу поделиться опытом, как быть с динамическими объектами. Скажем, если мне надо создать массив под данные из файла.
NEW нельзя получается, массивы объявить тоже только по константе возможно.
Только статические типы получается? То есть заранее делать огномный буфер под предполагаемый размер?
Или есть какие-то варианты?

1. Eberon (я там сделал поддержку динамических массивов).
2. Системный модуль JS: Вызвать RTL$.makeArray c нужным размером.

Вообще если ты собрался что-то читать из файла, то тебе все равно без JS не обойтись. Там же в биндинге сделай и массив нужного размера.

По подводу "как с этим жить" тебе Info21 расскажет на oberoncore  8) По мне так никакого глубинного смысла в этом нет вообще - Вирт сэкономил в очередной раз на простоте компилятора при том, что динамические массивы ему все равно не нужны были для очередной задачи.

3
Общий раздел / Re: OberonJS
« : Март 20, 2017, 03:04:16 am »
Firefox почему-то ругается
String.fromCharCode is not a function

Должно быть. Вот мозилловская документация: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

Приведи весь сгенеренный код или минимальный пример, где оно не работает.

4
Общий раздел / Re: OberonJS
« : Март 20, 2017, 02:02:43 am »
Еще хочется понять как выполнять преобразования типов. Мне надо четыре байта переделать в INTEGER.
В вики написано:
No SYSTEM module
А как делать тогда?

Модуль JS вместо SYSTEM. Но в твоем случае можно обойтись обычным обероном:
    result := b1 + LSL(b2, 8) + LSL(b3, 16) + LSL(b4, 24);

5
Общий раздел / Re: OberonJS
« : Март 20, 2017, 01:27:29 am »
Столкнулся с тем, что CHAR транслятор понимает как числа.

На это были причины. Для твоего случая надо просто сделать String.fromCharCode(arg)

6
Общий раздел / Re: OberonJS
« : Февраль 22, 2017, 02:55:26 pm »
Влад, я сделал модуль для базовых операций со строками. Но вот ASSERT когда срабатывает, нельзя ли указывать в какой он процедуре сработал?

Процедуру вытащить можно, но непонятно зачем, если тебе и так весь стек доступен - см. свойство "stack" у перехваченного исключения.

7
Общий раздел / Re: OberonJS
« : Февраль 22, 2017, 02:20:16 pm »
Добавил обработчики мыши, получился слайдер
https://models.molpit.org/model/52

Слайдер не работает на мобиле. А вот все остальное работает. Профит! :)

8
Общий раздел / Re: OberonJS
« : Февраль 22, 2017, 05:42:24 am »
Влад, а тут Comdiv интересовался, почему проверка индексов так много времени занимает?

Потому что не считать выход за границы ошибкой одно из многих идиотских решений в джаваскрипте :)

Он пример накидал, что разница в 10 раз получается:
https://models.molpit.org/model/59

Да, если есть тест на котором хорошо видно разницу - гляну.

9
Общий раздел / Re: OberonJS
« : Февраль 21, 2017, 04:10:08 pm »
Вот эти две функции работают с русскими буквами и прочими пи в моем хроме:
function encode( s ) {
  return btoa( unescape( encodeURIComponent( s ) ) );
}
function decode( s ) {
  return decodeURIComponent( escape( atob( s ) ) );
}

encode("варпваπ");
"0LLQsNGA0L/QstCwz4A="

decode("0LLQsNGA0L/QstCwz4A=")
"варпваπ"

10
Общий раздел / Re: OberonJS
« : Февраль 21, 2017, 03:53:00 pm »
вот так заработало!

Да, это типа рекомендованный способ. Видимо проблема где-то в другом месте.

11
Общий раздел / Re: OberonJS
« : Февраль 21, 2017, 02:26:31 pm »
Может кто-то знает метод?!

Ты гуглил? ;) Из общих соображений и для проверки правильного понимания концепций: base64 это кодировка для бинарей, перед тем как ее использовать надо текст перегнать в бинарь, чтобы текст перегнать в бинарь надо определиться в какой кодировке будет этот текст будучи в бинаре (UTF8?).

12
Общий раздел / Re: OberonJS
« : Февраль 20, 2017, 03:40:07 pm »
Это плохая идея, так как компилятор пол мегабайта весит :)

Ты так говоришь, как будто пол гигабайта ;) Я не специалист в Web и не знаю как такие проблемы решаются правильно с текущими технологиями, но одно из существующих/проверенных решений это добавление хэша к имени файла скрипта. Естественное это подразумевает какую-то автоматизацию сборки сайта.

13
Общий раздел / Re: OberonJS
« : Февраль 18, 2017, 07:31:21 am »
Создал тебе issue на GitHub. А обновлять надо с Ctrl+F5, чтобы весь кэш обновился.

Фикснул. Но возможно еще будут какие-то похожие штуки вылазить - сообщай плз.
А с кэшем надо что-то делать - иначе у других пользователей такая же проблема будет.

14
Общий раздел / Re: OberonJS
« : Февраль 17, 2017, 06:18:40 am »
А в качестве value нельзя будет подставить "Math.sin(x)" ?

Можно и так сделать.

Цитата: Ivan Denisov
Дополнительные переменные, это ведь получается лишние затраты на оперативную память. Лучше сразу вернуть значение как-то.

Этого нельзя предположить для современного JS движка. Скорее всего в данном случае код с дополнительной переменной будет оптимизирован так же как и без. Эта фича имеет смысл только для того, чтобы биндинги проще писать было.

15
Общий раздел / Re: OberonJS
« : Февраль 16, 2017, 03:02:04 pm »
Возможно ли вернуть результат без создания переменной res?

В текущей реализации нельзя. Можно сделать что-то типа "JS.cast(value, type)". Как там принято в обероновском SYSTEM - SYSTEM.VAL?

Страницы: [1] 2 3 ... 93