пятница, 16 октября 2009 г.

Устройство HiAsm

Я уже говорил, что HiAsm это не новый язык программирования, а среда, компилятором в которой является FPC/Delphi, значит, исходники тоже должны быть на этих языках. Схемы (файлы SHA) компилированы быть не могут.

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

Для начала рассмотрим папки, которые лежат рядом с HiAsm.
compiler - папка компиляторов. Там есть папка fpc, в ней компилятор fpc. Если вы установили компилятор Delphi, то там будет и такая папка. В compiler ничего лучше не трогать.
Elements - папка с компонентами. Там есть компоненты для различных проектов, но компоненты приложений Windows - в папке Delphi. Мы ещё вернёмся к ней.
Help - помощь. Когда вы выделяете компонент на рабочем поле HiAsm и нажимаете F1, то в случае наличия файла справки для компонента в этой папке он открывается. Вы и сами можете добавлять сюда новые файлы справки.
Int - папка с различными файлами и настройками HiAsm. Например, там есть папка cur, в которой находятся курсоры для разлиных ситуаций в среде. Есть папка ru, в которой содержатся настройки для русского языка: диалоговые окна в виде проектов hiasm (их, кстати, можно отредактировать прямо в hiasm), разные пояснения, появляющиеся в среде HiAsm.
Plug - плагины. Файлы, обеспечивающие правильную работу некоторых компонентов.
Tutorial - учебник в виде схем HiAsm.

Разберёмся наконец, как же происходит сборка программы в HiAsm. Для этого нужно знать, из чего состоят компоненты HiAsm. В среде вы видите только графические представления компонентов, а устроены они гораздо сложнее, чем кажется.

Практически любой компонент в HiAsm состоит из 3-х файлов: конфигурация компонента, код компонента и значок. Конфигурационный файл отвечает за отображение точек, параметров, подсказок, а также участвует в сборке программы. Но самая главная часть для сборки - это, конечно, код компонента. Почти все коды компонентов (для проектов программ Windows) написаные на языке Pascal.
Ну а значок вы видите прямо на компоненте.

Перейдём в папку Elements\Delphi. Здесь есть файл CodeGen.dll. Это кодогенератор. Когда вы компилируете программу, то сначала кодогенератор обрабатывает коды всех используемых в схеме компонентов и создаёт файлы модулей (это файлы на языке Pascal, содержащие код не отдельного компонента, а сразу части программы). А затем компилятор уже создаёт из них машинный код - готовую программу.

В папке Elements\Delphi есть три папки: code, conf и icon. Там хранятся коды, конфигурации и значки, соответственно. Значки и конфигурации имеют те же имена, что и компоненты. Значки можно поменять на другие (но вряд ли это нужно - большинство значков подобрано очень логично). А вот файлы конфигурации мы рассмотрим подробнее.

Возьмём, например, файл WinEnum.ini. Этот компонент перечисляет все окна в Windows. В файле есть 4 секции: About, Type, Property и Methods. В первой содержится информация об авторе компонента. Почти у всех компонентов автор - Dilma, потому что именно он является создателем этой среды и разработчиком большинства компонентов для неё.

В секции Type находится разная служебная информация о компоненте. А вот в секции Property идут параметры компонента. Здесь только один параметр, VisibleOnly. После знака равенства идёт подсказка, а затем, через черту, тип параметра, начальное значение и все возможные значения. Более подробно можно прочитать в справке к HiAsm.
В секции Methods находятся точки компонента. О них также подробно написано в справке.
Файлы конфигурации лучше не трогать без понимания своих действий, иначе можно вывести компонент из строя.

А теперь перейдём в папку code. Там находится очень много файлов, и не каждый из них соответствует компоненту. Есть общие файлы библиотек, ресурсы и т. д. А файлы кодов компонентов называются так же, как компоненты, только впереди идёт приставка hi, например hiWinEnum. Если вы его откроете, то увидите уже настоящий код, из которого компилятор собирает программы. Конечно, такой код воспринимается труднее, чем графические схемы, потому он и спрятан подальше. Менять здесь ничего не нужно, потому что иногда достаточно изменить один символ, чтобы вывести компонент из строя. Пока вы не знаете язык Pascal, ничего полезного вы здесь сделать не сможете.

Вот так, в общих чертах, устроен HiAsm. Конечно, есть такие проекты, которые используют другой компилятор, и файлы кода получаются другие. Например, проекты html. Однако основная концепция HiAsm понятна - с кодом при создании программ вы не сталкиваетесь, и "чёрной работой" занимается кодогенератор, что ускоряет и облегчает создание программ.

7 комментариев:

  1. Хотелось бы, чтоб рассказал про файлы кода, как их редактировать. В общем, синтаксис, характерный для hiasm.

    ОтветитьУдалить
  2. Для общей ориентировки полезное занятие. Но вот одна мысль из него должна была прозвучать уже в первом уроке: стоит выделить компонент на рабочем поле HiAsm и потом нажать клавишу F1 - как тут же открывается справка по этому элементу!!!

    ОтветитьУдалить
  3. Во-первых, это обычно и так известно - клавиша F1 практически всегда используется для помощи.
    Во-вторых, не для каждого компонента есть справка. В папке Help есть все html-файлы помощи, которые являются действительно справкой и открываются для соответствующих компонентов. А для остальных открывается лишь описание точек и параметров, которые легко увидеть, подведя мышь к ним.

    ОтветитьУдалить
  4. А коды компонентов HiAsm в Delphi открываются?

    ОтветитьУдалить
  5. В смысле? Коды компонентов находятся в pas-кодах и могут быть открыты в Delphi, но вот запущены - вряд ли. Потому что HiAsm использует библиотеку KOL, а Delphi - VCL.

    ОтветитьУдалить
  6. подскажите как в полученной программе изменить: иконку; описание; дописать автора

    ОтветитьУдалить
    Ответы
    1. Два раза щёлкните по форме - можно изменить иконку.
      На вкладке Помощники есть компонент Version, где можно указать некоторые данные об авторстве (хотя и не все).

      Удалить