Если можно, то хотелось бы посмотреть примеры схем:
1. С использованием InlineCode в FASM.
2. Можно ли делать с помощью InlineCode визуальные элементы, тот же Button например.
Этот топик читают: Гость
Ответов: 82
Рейтинг: 2
|
|||
карма: 0 |
|
Ответов: 2125
Рейтинг: 159
|
|||
1. Вообще-то, текст в InlineCode практически не отличается от кода элементов, за исключением того, что ключевые слова Element и EndElement не нужны, т.к. они вставляются автоматически.
2. Визуальные элементы в HiAsm не предполагалось разрабатывать в InlineCode. Но если очень хочется, то можно : code_8928.txt Дополнительная строчка "macro InlineCode.MessageMap Self,Parent {}" нужна лишь потому, что имя класса элемента не InlineCode, а генерируется типа такого InlineCode_123456, чтобы если их несколько, то не было коллизий (именно поэтому ключевые слова Element и EndElement вставляются автоматически). В результате базовый пустой макрос отсутствует и его пришлось вставить вручную. |
|||
карма: 1 |
| ||
файлы: 1 | code_8928.txt [768B] [375] | ||
Голосовали: | Алексей |
Ответов: 82
Рейтинг: 2
|
|||
Ага, спасибо tsdima. Но вот еще вопрос:
Как мне посмотреть на исходник? После компиляции он, видимо, удаляется. |
|||
карма: 0 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Есть в ХиАсм такая хитрая фича: Ctrl+D
Если нажать один раз, то исходник не будет удаляться, при этом внизу слева вместо справки (при наведении мышки на компонент) будут показываться некие идентификаторы. Это, так сказать, режим отладки для разработчиков ХиАсм. Если нажать ещё раз - всё вернётся на место ![]() Исходиник искать в папке ...ElementsFASMcode |
|||
карма: 1 |
| ||
Голосовали: | Алексей |
Ответов: 82
Рейтинг: 2
|
|||
М-да, исходник сложноват, ну ладно разберусь как-нибудь.
А вот что получилось с InlineCode: code_8935.txt, вроде работает. Вот, есть над чем подумать - сравнил 2 пакета Delphi и FASM по скорости работы созданных на них программ. Схема для Delphi: code_8936.txt Схема для FASM: code_8937.txt Оказалось, что программа сделанная на FASM, справилась с задачей примерно в 3 раза быстрее, чем прогамма на Delphi. Хоть и говорят, что API вызовы в любом пакете занимают одинаковое время. В чём же, все-таки, такая разница? |
|||
карма: 0 |
| ||
файлы: 3 | code_8935.txt [245B] [319], code_8936.txt [1.4KB] [281], code_8937.txt [1.4KB] [284] |
Ответов: 2125
Рейтинг: 159
|
|||
Между точками, между которыми замеряется время, нету НИ ОДНОГО вызова API
![]() А разница в том, что в пакете Delphi происходит больше операций копирования строк (такая уж реализация передачи данных между компонентами). Алексей писал(а): вот что получилось с InlineCodeМожно и так записать, так короче:
А вот так - с параметром:
Алексей писал(а): ну ладно разберусь как-нибудьАга, если будешь разбираться, имей ввиду, что там макросы трёхэтажные ![]() Макрос, который определяет макрос, который определяет макрос. ![]() |
|||
карма: 1 |
|
Ответов: 82
Рейтинг: 2
|
|||
tsdima писал(а): нету НИ ОДНОГО вызова APIА разьве в компонентах Position и Replace не используются функции API, что-то я совсем запутался. tsdima писал(а): Можно и так записать, так короче:А мне call больше нравится ------------ Дoбавленo: А так не работает:
|
|||
карма: 0 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Строковые константы надо где-то определять.
code_8938.txt ------------ Дoбавленo: Хотел, сейчас вот, просто вместо win32a.inc использовать win32ax.inc - ошибки полезли, разбираться надо. А так - можно было бы и строки в параметрах использовать. |
|||
карма: 1 |
| ||
файлы: 1 | code_8938.txt [364B] [293] |
Ответов: 82
Рейтинг: 2
|
|||
tsdima писал(а): Строковые константы надо где-то определять.![]() Не могу заставить code_8941.txt работать, проблема с внешними данными |
|||
карма: 0 |
| ||
файлы: 1 | code_8941.txt [569B] [288] |
Ответов: 2125
Рейтинг: 159
|
|||
Может кое-что и неочевидно, но разобравшись с кодами компонент, я думаю, можно было сделать так:
code_8944.txt Тут, правда, есть отход от принципа, что данные из потока используются для верхних точек слева направо. Если не отходить от этого принципа, то пришлось бы сделать как в hiMessage.inc |
|||
карма: 1 |
| ||
файлы: 1 | code_8944.txt [680B] [369] |
Ответов: 82
Рейтинг: 2
|
|||
tsdima, спасибо.
tsdima писал(а): Может кое-что и неочевидноКонечно неочевидно, например: Self#. ... что такое? ------------ Дoбавленo: Без Self#. ... схема работать не будет ------------ Дoбавленo: В List Editor нет всплывающего меню, ну очень не удобно. |
|||
карма: 0 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Self это один из параметров макроса, который впоследствии заменяется на уникальное имя компонента, таким образом, если используется несколько одинаковых компонент, каждый получает своё имя. Есть ещё Parent - имя окна-контейнера.
# это служебный символ FASM, означающий конкатенацию имён. . это просто точка, один из символов имени, применяется для удобства ![]() Используемые в макросе ReadStr (в примере выше) имена Self#.s1 и Self#.s2, это тоже имена макросов, которые определяются в сгенерированном исходнике на основе связей точек s1 и s2. Вобщем, макрос сидит на макросе, и макросом погоняет ![]() ------------ Дoбавленo: Алексей писал(а): В List Editor нет всплывающего меню, ну очень не удобноПро какой List Editor идёт речь? |
|||
карма: 1 |
| ||
Голосовали: | Алексей |
Ответов: 82
Рейтинг: 2
|
|||
tsdima писал(а): Про какой List Editor идёт речь?Который в HiAsm'e - редактор кода. У компонета InlineCode, напротив вкладки code щелкнишь, и откроется ListEditor. tsdima писал(а): Вобщем, макрос сидит на макросе, и макросом погоняет ![]() Ну теперь более-менее стало ясно, спасибо большое!!! |
|||
карма: 0 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Алексей писал(а): Который в HiAsm'e - редактор кодаНу это не ко мне, это к Dilma. |
|||
карма: 1 |
|
Ответов: 82
Рейтинг: 2
|
|||
карма: 0 |
| ||
файлы: 1 | code_8950.txt [938B] [273] |