Уроки по составлению скриптов для HTP.


Урок 1 (Создание первого скрипта)
Урок 2 (Улучшение первого скрипта)
Урок 3 (Cборка нужных алгоритмов из частей)

Создание первого скрипта - Перевод текста в группе файлов в верхний регистр.

Предположим, имеется задача обработать группу файлов таким образом, что бы весь текст в каждом файле был переведён в верхний регистр (написан заглавными буквами).

Прежде чем создать алгоритм, выпишем действия алгоритма:
1. Получить имя файла номер N из списка файлов.
2. Проверить имя файла - не пустая ли это строка (т.е. не конец ли списка)?
3. Если имя файла пустая строка, то мы достигли конца списка - завершить работу.
4. Загрузить содержимое файла.
5. Перевести содержимое файла в верхний регистр.
6. Сохранить содержимое под тем же именем.
7. Прибавить к N единицу (для перехода к следующему файлу в списке).
8. Перейти к пункту 1

Теперь, можно приступить к написанию алгоритма:


Шаг 1

Загрузите HTP, выберите в меню программы "Алгоритмы" - "Новый алгоритм", или нажмите кнопку "редактировать алгоритм" в нижней части открывшегося окна нажмите кнопку "новый".

После этого в поле редактора кода алгоритма останется только строка:
; FACE="", "3"

Впишите в кавычки: "Поднятие регистра символов в группе файлов".


Шаг 2

Теперь нам необходимо "перевести" наш список действий в реальные команды языка HTP.

Воспользовавшись выпадающим списком "быстрый ввод регистров и справка по регистрам системы", найдём регистр @FL, как свидетельствует справка, это список файлов в рабочей директории. Теперь мы знаем где система хранит список наших файлов, далее нам потребуется найти команду, которая могла бы из всего списка извлекать только один элемент.
Воспользовавшись выпадающим списком "быстрый ввод команд и справка по командам системы", мы обнаружим команду GetEl, как свидетельствует справка, данная команда получает элемент с указанным номером.
Введём команду в поле редактирования кода алгоритма, в новую строку, отступив одну табуляцию или пробел от начала сроки, для этого нажатием на кнопку со стрелкой слева от выпадающего списка команд или впишем её вручную.

Теперь укажем аргументы команды:
 GetEl @0, @FL, "\00", $1

Если вы пользовались выпадающими списками для ввода аргументов команды, то обратили внимание, что @0 является текстовым регистром общего назначения (ячейкой памяти которая может хранить любой текст), регистр $1 является числовым регистром общего назначения (ячейкой памяти, которая может хранить числа).
При выполнении нашего кода, регистр @0 будет являться приёмником (получателем) имени файла из списка файлов, номер файла в списке будет указан в регистре $1.
То есть эта команда реализует действие, описанное нами в пункте 1, текстового описания алгоритма.

Необходимо напомнить, что, судя по текстовому описанию, наш алгоритм должен возвращаться к этой строке многократно, проходя весь список файлов один за другим. Для этого укажем в строке с командой метку WORK (метки указываются сначала строки и отделяются от команд пробелом или табуляцией), в итоге у нас получится строка:
WORK GetEl @0, @FL, "\00", $1



Шаг 3

Впишем в код скрипта, в следующей строке, так же отступив одну табуляцию или пробел от начала строки команду:
 JmpEq @0, "", END_WORK

Как свидетельствует справка, данная команда сравнивает строки и осуществляет переход на указанную метку, в случае если строки равны, в нашем случае, если регистр @0 содержит пустую строку осуществляется переход на метку END_WORK.
Команда JmpEq в нашем случае служит цели, указанной нами в пунктах 2 и 3 текстового описания, которое мы составили ранее.


Шаг 4

После того как вы немного разобрались с тем как вводить коды команд, для вас не составит вписать остальной код алгоритма скрипта:
 LoadF @2, @0           ; загрузка содержимого файла в регистр @2 с именем в регистре @0
 UCase @2, 0, -1        ; поднятие регистра символов во всём содержимом регистра @2
 SaveF @0, @2           ; сохранение содержимого регистра @2 в файл с именем в регистре @0
 Add $1, $1, 1          ; прибавить к регистру $1 единицу
 Jmp WORK               ; перейти к команде в строке помеченной меткой WORK

END_WORK ; метка END_WORK
 PrintT 0,0, "Работу закончил." ; выводим на консоль сообщение

Полностью код алгоритма выглядит следующим образом:
; FACE="Поднятие регистра символов в группе файлов", "3"

WORK    GetEl   @0, @FL, "\00", $1
   JmpEq   @0, "", END_WORK
   LoadF   @2, @0
   UCase   @2, 0, -1
   SaveF   @0, @2
   Add     $1, $1, 1
   Jmp     WORK

END_WORK
   PrintT 0,0, "Работу закончил."
Если Вы не выполняли действия, описанные в шагах 2 и 3, можете просто скопировать готовый код и вставьте его в окно редактирования кода алгоритма.


Шаг 5

Нажмите кнопку "проверить" в редакторе алгоритма системы HTP.
Если Вы всё выполнили верно, то увидите в поле "сообщения системы анализа кода":
Анализ листинга: успешно.
Задействованы регистры:
$1
@0 @2 @FL

Наш алгоритм составлен, теперь его можно сохранить и проверить в действии.


Шаг 6

Нажмите на кнопку "сохранить" в окне редактора алгоритма системы HTP.
В появившемся окне указания имени файла, кликните правой кнопкой мыши по пространству с папками и файлами, в появившемся меню выберите пункт "Создать -> Папка" и создайте папку "Поднятие регистра".
Войдите в папку "Поднятие регистра" и сохраните Ваш алгоритм под именем "action.src.htp".

В результате этих операций Ваш алгоритм будет доступен в качестве "установленного алгоритма" в системе HTP ("Алгоритмы -> Выбор установленных алгоритмов").
Можно было сохранить алгоритм и под любым другим именем в абсолютно любой каталог на Вашем жёстком диске, с той лишь разницей, что для его повторной загрузки потребовалось бы его потом искать и загружать вручную, через пункт меню системы HTP: "Алгоритмы -> Загрузить алгоритм", либо вызывать алгоритм двойным щелчком левой клавиши мыши, из файлового менеджера который Вы используете (например, из проводника windows).


Шаг 7

Пришло время испытать наш алгоритм.
Для этого нажмём на кнопку "ОК" в Редакторе алгоритма, окно редактора закроется.
Создадим на диске C:\ каталог "Проба", в каталоге создадим несколько (3-5) текстовых файлов, с разным текстом, некоторые файлы с текстом английскими символами, некоторые с русским текстом.
Выберем в качестве рабочего каталога в окне HTP, каталог "C:\Проба".
Нажмём на кнопку "Начать".
Через несколько мгновений, в консоли (поле "Сообщения системы") отобразится текст:
"Работу закончил."


Шаг 8

Наверняка, Вы обращали внимание, что при выборе профессиональных скриптов, через окно "Выбор установленных алгоритмов", в нижнем поле, под списком скриптов выводится краткое описание скрипта, комментарии автора скрипта, а в случае с вашим скриптом, этого не происходит.
Для того, что бы при выборе Вашего скрипта происходило то же самое, войдите в каталог, куда вы сохранили "action.src.htp" и создайте файл "description.txt", в который напишите (скопируйте отсюда и вставьте) следующий текст:
Это скрипт поднимает регистр всех символов текста в файлах находящихся в рабочем каталоге

После того как вы сохраните файл "description.txt", попробуйте снова открыть окно выбора установленных в систему скриптов и наведите курсор на Ваш алгоритм.
Вы увидите как текст из "description.txt" отобразится в поле под списком алгоритмов.


Примечания.

Для того, что бы алгоритм распознавался как установленный в систему, необходимо, что бы он был сохранён в подкаталог, каталога "scripts" в папке, куда установлена система HTP, и имя листинга скрипта было "action.htp" или "action.src.htp", соответственно для скомпилированного кода и для исходного.
Предположим что Вы установили систему HTP в папку по пути "c:\htp", в таком случае скрипты должны располагаться в каталоге "c:\htp\scripts", а например файлы только что созданного Вами алгоритма должны быть доступны по следующим путям:
c:\htp\scripts\Поднятие регистра\action.htp
c:\htp\scripts\Поднятие регистра\description.txt
Если Вы получили алгоритм, например, загрузив из сети интернет, Вы должны поместить каталог алгоритма в папку:
c:\htp\scripts
Обычно скрипты запакованы поставщиками архиватором ZIP, единственное, что от Вас требуется - это распаковать архив, учитывая подкаталоги, в папку:
c:\htp\scripts



Материал получен с сайта поддержки   HOD Text Processor - язык обработки текстов