Вверх ↑
Этот топик читают: Гость
Ответов: 82
Рейтинг: 2
#1: 2008-04-26 23:25:14 ЛС | профиль | цитата
Если можно, то хотелось бы посмотреть примеры схем:
1. С использованием InlineCode в FASM.
2. Можно ли делать с помощью InlineCode визуальные элементы, тот же Button например.

карма: 0

0
Ответов: 2125
Рейтинг: 159
#2: 2008-04-27 19:53:29 ЛС | профиль | цитата
1. Вообще-то, текст в InlineCode практически не отличается от кода элементов, за исключением того, что ключевые слова Element и EndElement не нужны, т.к. они вставляются автоматически.
2. Визуальные элементы в HiAsm не предполагалось разрабатывать в InlineCode. Но если очень хочется, то можно : code_8928.txt

Дополнительная строчка "macro InlineCode.MessageMap Self,Parent {}" нужна лишь потому, что имя класса элемента не InlineCode, а генерируется типа такого InlineCode_123456, чтобы если их несколько, то не было коллизий (именно поэтому ключевые слова Element и EndElement вставляются автоматически). В результате базовый пустой макрос отсутствует и его пришлось вставить вручную.

карма: 1

1
файлы: 1code_8928.txt [768B] [375]
Голосовали:Алексей
Ответов: 82
Рейтинг: 2
#3: 2008-04-28 11:00:22 ЛС | профиль | цитата
Ага, спасибо tsdima. Но вот еще вопрос:
Как мне посмотреть на исходник? После компиляции он, видимо, удаляется.
карма: 0

0
Ответов: 2125
Рейтинг: 159
#4: 2008-04-28 13:08:09 ЛС | профиль | цитата
Есть в ХиАсм такая хитрая фича: Ctrl+D
Если нажать один раз, то исходник не будет удаляться, при этом внизу слева вместо справки (при наведении мышки на компонент) будут показываться некие идентификаторы. Это, так сказать, режим отладки для разработчиков ХиАсм.
Если нажать ещё раз - всё вернётся на место
Исходиник искать в папке ...ElementsFASMcode
карма: 1

1
Голосовали:Алексей
Ответов: 82
Рейтинг: 2
#5: 2008-04-28 14:15:32 ЛС | профиль | цитата
М-да, исходник сложноват, ну ладно разберусь как-нибудь.
А вот что получилось с InlineCode: code_8935.txt, вроде работает.

Вот, есть над чем подумать - сравнил 2 пакета Delphi и FASM по скорости работы созданных на них программ.
Схема для Delphi: code_8936.txt
Схема для FASM: code_8937.txt
Оказалось, что программа сделанная на FASM, справилась с задачей примерно в 3 раза быстрее, чем прогамма на Delphi. Хоть и говорят, что API вызовы в любом пакете занимают одинаковое время. В чём же, все-таки, такая разница?
карма: 0

0
файлы: 3code_8935.txt [245B] [319], code_8936.txt [1.4KB] [281], code_8937.txt [1.4KB] [284]
Ответов: 2125
Рейтинг: 159
#6: 2008-04-28 16:09:57 ЛС | профиль | цитата
Между точками, между которыми замеряется время, нету НИ ОДНОГО вызова API
А разница в том, что в пакете Delphi происходит больше операций копирования строк (такая уж реализация передачи данных между компонентами).

Алексей писал(а):
вот что получилось с InlineCode

Можно и так записать, так короче:
PointWork doBeep
  invoke MessageBeep,0
EndPoint

А вот так - с параметром:
Add(Button,2515314,252,252)
{
Left=10
Top=10
Caption="Beep"
Data=Integer(0)
link(onClick,16630716:doWork2,[])
}
Add(InlineCode,2227711,329,252)
{
WorkPoints=#6:doBeep|
Code=#16:PointWork doBeep|25: invoke MessageBeep,data|8:EndPoint|
}
Add(Button,13388996,252,294)
{
Left=10
Top=35
Caption="Beep"
Data=Integer(32)
link(onClick,16630716:doWork3,[(305,300)])
}
Add(HubEx,16630716,301,245)
{
link(onEvent,2227711:doBeep,[])
}


Алексей писал(а):
ну ладно разберусь как-нибудь

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

карма: 1

0
Ответов: 82
Рейтинг: 2
#7: 2008-04-28 16:34:14 ЛС | профиль | цитата
tsdima писал(а):
нету НИ ОДНОГО вызова API

А разьве в компонентах Position и Replace не используются функции API, что-то я совсем запутался.

tsdima писал(а):
Можно и так записать, так короче:

А мне call больше нравится
------------ Дoбавленo:

А так не работает:

Add(InlineCode,15766614,182,105)
{
WorkPoints=#12:doMessagebin|
Code=#22:PointWork doMessagebin|16: ;Окно сообщения|57: invoke MessageBoxA,[Parent#.hwnd],"text","caption",MB_OK|8:EndPoint|
}
Add(Button,10329807,133,105)
{
Left=40
Top=20
link(onClick,15766614:doMessagebin,[])
}
карма: 0

0
Ответов: 2125
Рейтинг: 159
#8: 2008-04-28 17:32:24 ЛС | профиль | цитата
Строковые константы надо где-то определять.

code_8938.txt
------------ Дoбавленo:

Хотел, сейчас вот, просто вместо win32a.inc использовать win32ax.inc - ошибки полезли, разбираться надо. А так - можно было бы и строки в параметрах использовать.
карма: 1

0
файлы: 1code_8938.txt [364B] [293]
Ответов: 82
Рейтинг: 2
#9: 2008-04-28 21:11:26 ЛС | профиль | цитата
tsdima писал(а):
Строковые константы надо где-то определять.

А я их пытался определить через Tchar

Не могу заставить code_8941.txt работать, проблема с внешними данными
карма: 0

0
файлы: 1code_8941.txt [569B] [288]
Ответов: 2125
Рейтинг: 159
#10: 2008-04-28 21:46:44 ЛС | профиль | цитата
Может кое-что и неочевидно, но разобравшись с кодами компонент, я думаю, можно было сделать так:
code_8944.txt

Тут, правда, есть отход от принципа, что данные из потока используются для верхних точек слева направо. Если не отходить от этого принципа, то пришлось бы сделать как в hiMessage.inc
карма: 1

0
файлы: 1code_8944.txt [680B] [369]
Ответов: 82
Рейтинг: 2
#11: 2008-04-28 22:32:50 ЛС | профиль | цитата
tsdima, спасибо.
tsdima писал(а):
Может кое-что и неочевидно

Конечно неочевидно, например: Self#. ... что такое?
------------ Дoбавленo:

Без Self#. ... схема работать не будет
------------ Дoбавленo:

В List Editor нет всплывающего меню, ну очень не удобно.
карма: 0

0
Ответов: 2125
Рейтинг: 159
#12: 2008-04-28 22:54:22 ЛС | профиль | цитата
Self это один из параметров макроса, который впоследствии заменяется на уникальное имя компонента, таким образом, если используется несколько одинаковых компонент, каждый получает своё имя. Есть ещё Parent - имя окна-контейнера.
# это служебный символ FASM, означающий конкатенацию имён.
. это просто точка, один из символов имени, применяется для удобства

Используемые в макросе ReadStr (в примере выше) имена Self#.s1 и Self#.s2, это тоже имена макросов, которые определяются в сгенерированном исходнике на основе связей точек s1 и s2. Вобщем, макрос сидит на макросе, и макросом погоняет
------------ Дoбавленo:

Алексей писал(а):
В List Editor нет всплывающего меню, ну очень не удобно

Про какой List Editor идёт речь?
карма: 1

1
Голосовали:Алексей
Ответов: 82
Рейтинг: 2
#13: 2008-04-28 23:15:04 ЛС | профиль | цитата
tsdima писал(а):
Про какой List Editor идёт речь?

Который в HiAsm'e - редактор кода. У компонета InlineCode, напротив вкладки code щелкнишь, и откроется ListEditor.

tsdima писал(а):
Вобщем, макрос сидит на макросе, и макросом погоняет

Ну теперь более-менее стало ясно, спасибо большое!!!
карма: 0

0
Ответов: 2125
Рейтинг: 159
#14: 2008-04-28 23:37:31 ЛС | профиль | цитата
Алексей писал(а):
Который в HiAsm'e - редактор кода

Ну это не ко мне, это к Dilma.
карма: 1

0
Ответов: 82
Рейтинг: 2
#15: 2008-04-29 18:24:43 ЛС | профиль | цитата
Переместить курсор получилось, а вот получить текущее значение курсора не могу:

code_8950.txt
карма: 0

0
файлы: 1code_8950.txt [938B] [273]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)