Вверх ↑
Этот топик читают: Гость
Ответов: 4579
Рейтинг: 730
#1516: 2017-05-08 10:58:43 ЛС | профиль | цитата
Medvedoc писал(а):
Только не понял как добавлять другие эмуляторы
Зачем добавлять? У каждого эмулятора есть свой метод запуска приложений. В HiAsm компилируешь, получаешь файл *.apk, а потом в эмуляторе этот файл устанавливаешь. Или очень нужно, чтобы по зеленой кнопочке в HiAsm работало? Если будет командная строка для установки apk в эмулятор, то его можно добавить в запускальщик. На стр. 99 есть схема для Memu от Alex35567.

Редактировалось 1 раз(а), последний 2017-05-08 11:00:40
карма: 26

0
Ответов: 254
Рейтинг: 6
#1517: 2017-05-10 14:58:33 ЛС | профиль | цитата
Netspirit, спасибо большое!
Еще такой вопросик, а можно как-то отправлять письмо из приложения? В пакете только нашел компонент для чтения писем.
карма: 0

0
Ответов: 4579
Рейтинг: 730
#1518: 2017-05-10 15:04:15 ЛС | профиль | цитата
Нет пока такого компонента.
карма: 26

0
Ответов: 23
Рейтинг: 0
#1519: 2017-06-20 13:45:54 ЛС | профиль | цитата
Добрый день Netspirit! Нашел тут возможно небольшую ошибку в компоненте Counter, в строке 32 по-моему должно быть moveBlockTo(BLK_LOC_VAR), а не moveBlockTo(BLK_LOC_METHODS). Выше там создается объект Counter.ICounter, и получается что он как Public попадает внутрь какого-нибудь метода, когда счетчик подключен к выходу предыдущего компонента на схеме. Компилятору это естественно не нравиться. Ну про крайней мере так получается если использовать Bluetooth и к onFindDevice подключить увеличение счетчика.
карма: 0

0
Ответов: 4579
Рейтинг: 730
#1520: 2017-06-20 14:39:27 ЛС | профиль | цитата
Там в компоненте Bluetooth неправильно построена генерация кода событий. Код впечатывается напрямую в общие блоки, что нарушает работу последующих компонентов. Поправил на SVN. Пробуй.
карма: 26

0
Ответов: 23
Рейтинг: 0
#1521: 2017-06-20 22:30:33 ЛС | профиль | цитата
Заработало, спасибо! А можешь объяснить вкратце что есть block.reggen ну и конструкции типа
tmp = block.reggen()
old = block.select(tmp)
......
MoveBlockTo(BLK_LOC_VAR)

Я так понимаю блок переноситься в область определения переменных класса, а почему не надо писать просто block.select(BLK_LOC_VAR)? Или может это описано где-нибудь поподробнее? Почему в этом случае он не засовывает
Counter.ICounter во внутрь метода?
карма: 0

0
Ответов: 4579
Рейтинг: 730
#1522: 2017-06-21 12:25:14 ЛС | профиль | цитата
Смотри, в чём проблема. Есть общий блок, типа BLK_METHODS (BLK_LOC_VAR аналогично, но по его назначению с ним такое не возникает). В этот общий блок текст могут печатать различные компоненты.
Предположим, компонент Bluetooth хочет записать в этот блок текст метода:
public void ondevdiscoveryend1() {
  // Тело метода - то, что выводят компоненты по событию
}
Как это было сделано раньше:
if(linked(onDeviceDiscoveryEnd))
  block.select(BLK_METHODS)
println('public void ',ondevdiscoveryend,'() {')
block.inclvl()
event(onDeviceDiscoveryEnd)
block.declvl()
println('}')
end
Так вот, на момент вызова события event(onDeviceDiscoveryEnd), в блоке BLK_METHODS был впечатан текст:
public void ondevdiscoveryend1() {
с расчетом на то, что следующие компоненты по событию event(onDeviceDiscoveryEnd) выведут свой код после этого текста, затем компонент Bluetooth завершит метод закрывающей скобкой '}'. Но: другие компоненты тоже вызывают события и тоже хотят разместить свои методы в BLK_METHODS. И когда они начинают печатать в BLK_METHODS, код с объявлением ихних методов попадает внутрь метода ondevdiscoveryend1(), а не над или под него.

Решается эта проблема таким образом: компоненты выводят в общие блоки только завершенный код методов. Для этого объявляется временный приватный блок (tmp = block.reggen()), делается текущим (block.select(tmp)). Поскольку этот блок никому неизвестный, компонент Bluetooth может распоряжаться им как угодно. И в этот блок уже выводится первая часть метода. Затем вызывается событие. Компоненты пишут свой код либо в данный блок (для них - просто текущий), либо в общие блоки (соблюдая тот же принцип). По завершении события компонент Bluetooth выводит закрывающую скобку в этот блок, а затем целиком его копирует в BLK_METHODS (MoveBlockTo(BLK_METHODS)). Таким образом, в BLK_METHODS оказывается правильно сформированное тело метода, не нарушенное другими компонентами. Функция MoveBlockTo() объявлена в general.hws, копирует текущий блок в указаный блок, затем удаляет текущий блок (чтобы он не выводился кодогенератором автоматически в конечный код).

Редактировалось 6 раз(а), последний 2017-06-21 12:37:02
карма: 26

0
Ответов: 23
Рейтинг: 0
#1523: 2017-06-21 14:03:33 ЛС | профиль | цитата
Спасибо! Стало понятней, получается что счетчик перемещал свой временный блок с объектом Icounter в общий, в то время как Bluetooth уже успел там кусок OnFind вывести.
карма: 0

0
Ответов: 88
Рейтинг: 20
#1524: 2017-06-25 00:07:42 ЛС | профиль | цитата
Азвеняюсь, рр-ребят, а можно SKD из другого каталога подключить, например как у меня от Android Studio в С:\Android\SDK. Я за темай, правда, не слежу, если что "рецитируйте" кратко. Заранее спасибо!
карма: 0
Ильичёв IKA
0
Ответов: 4579
Рейтинг: 730
#1525: 2017-06-26 10:28:50 ЛС | профиль | цитата
Не стоит. Там для пакета выполняется некоторая подготовительная работа, также компоненты могут зависеть от конкретной версии. SDK, поставляемая с пакетом, по-моему, никак не конфликтует с остальными. Нет необходимости указывать стороннюю. Эмуляторы можно использовать от сторонней SDK, не используя запускальщик из пакета.
карма: 26

0
Ответов: 88
Рейтинг: 20
#1526: 2017-06-27 00:14:04 ЛС | профиль | цитата
Да вот у меня в компиляторах только Copy, почему-то Andoid'а нет?
карма: 0
Ильичёв IKA
0
Ответов: 4579
Рейтинг: 730
#1527: 2017-06-27 11:44:35 ЛС | профиль | цитата
А ты его устанавливал через инсталлятор?
Возьми файл HiAsm\compiler\Android\Install.his и перетащи в окно HiAsm. Перезапусти.

Редактировалось 1 раз(а), последний 2017-06-27 11:45:01
карма: 26

0
Ответов: 88
Рейтинг: 20
#1528: 2017-06-28 00:01:49 ЛС | профиль | цитата
В Alt-версии всё заработало, а в обычной нет?
карма: 0
Ильичёв IKA
0
Ответов: 88
Рейтинг: 20
#1529: 2017-06-28 16:04:16 ЛС | профиль | цитата
Да ещё .apk с Project.sha нету хорошо что ещё в temp'е есть
карма: 0
Ильичёв IKA
0
Ответов: 1328
Рейтинг: 69
#1530: 2017-07-25 15:58:05 ЛС | профиль | цитата
Как работает Camera кроме фонарика ничего не заработало?
код


Add(MainActivity,2953706,203,182)
{
Point(onPause)
link(onStart,9270531:doOpen,[])
}
Add(Camera,9270531,357,189)
{
Index=0
Point(doRelease)
Point(doSetPreviewDisplay)
link(SurfaceView,5118241:SurfaceView,[])
}
Add(Flashlight,13209964,371,287)
{
link(Camera,9270531:Camera,[])
}
Add(If_else,11529441,308,287)
{
Op2=Integer(1)
link(onTrue,13209964:doEnable,[])
link(onFalse,13209964:doDisable,[])
}
Add(SurfaceView,5118241,357,98)
{
Left=160
Top=45
Width=280
Height=257
}
Add(Menu,15331790,126,70)
{
ItemNames=#12:Предпросмотр|4:Фото|7:фонарик|5:выход|
ItemCount=4
link(onClick1,1733287:doEvent1,[(258,76)(258,230)])
link(onClick2,9270531:doTakePhoto,[(258,83)(258,209)])
link(onClick3,11097141:doNext,[(177,90)(177,293)])
link(onClick4,2953706:doClose,[(172,97)(172,188)])
}
Add(Counter,11097141,196,287)
{
Max=1
link(onNext,11529441:doCompare,[])
}
Add(Hub,1733287,266,224)
{
link(onEvent1,9270531:doSetPreviewDisplay,[(318,230)(318,223)])
link(onEvent2,9270531:doStartPreview,[(331,237)(331,202)])
}

карма: 2

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)