Author Topic: Константы в файле  (Read 3983 times)

0 Members and 1 Guest are viewing this topic.

123

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Константы в файле
« on: September 23, 2014, 04:50:32 PM »
В справке об этом сказано маловато. Как их туда правильно записать?

Quote
Константы играют ту же роль, что и переменные. За тем исключением, что константы нельзя изменить и их префикс "#".
Константы загружаются в программу при запуске из файла %Clickermann%/data/const.txt

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Константы в файле
« Reply #1 on: September 23, 2014, 05:37:33 PM »
Похоже ты первый кому потребовалось туда что то добавлять.
Если открыть файл все станет ясно

Например добавим в этот файл такую строчку
Code: (clickermann) [Select]
#NAME 12345
Типерь запустим вот такой скрипт
Code: (clickermann) [Select]
LOGWRITE (#NAME)
HALT

И в логе обнаружим "12345"


123

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Re: Константы в файле
« Reply #2 on: September 25, 2014, 09:53:06 AM »
Надо же, ведь очень часто какие-то элементы управления находятся или появляются всегда на одном и том же месте. Чтобы не засорять их координатами напрямую или через переменные каждый скрипт и править все эти скрипты, если всё же придётся изменить координаты, наверно, лучше такое 1 раз в константы записать.
А при многократном повторении скрипта память значениями переменных постепенно заполняется, если нет UNDEFINE, или эта команда только чтобы переменной назначить другое значение после какого-то первого? Странно, что нет команды UNDEFINE(ваще все переменные этого скрипта), чтобы очистить их все сразу.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Константы в файле
« Reply #3 on: September 25, 2014, 10:13:07 AM »
Конечно, просто заменяются. Ведь имя одно и под одним именем не могут быть несколько переменных. О памяти не беспокойся вообще в этом направлении, ты же не обрабатываешь массивы по десятку-сотне мегабайт... надеюсь :)

"при многократном повторении скрипта" - ??? при каждой остановке скрипта и так всё удаляется. Или ты про повторы? Так это один скрипт просто порядок команд изменён, как прыгнуть по GOTO.

Какие это постоянные элементы? Просто интересно.
Вон браузер обновился и привет, панели поехали.
Твой подход удобен если ты пишешь скрипты только для себя. А в универсальном вообще нет ни одной жёсткой координаты, все "плавающие", только смещения одинаковые.
Я даже в браузере не тыкаю кликами по интерфейсу. Как начал переходить всеми скриптами на клавиатурные команды и запуск с параметром, так столько проблем сразу перестали меня мучать.
« Last Edit: September 25, 2014, 10:15:32 AM by Vint »


123

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Re: Константы в файле
« Reply #4 on: September 25, 2014, 12:18:33 PM »
Во флэш играх часто набор действующих клавиш - далеко не вся клавиатура, только левый клик мышью и никаких горячих клавиш для моментального вызова чего-то в обход менюшек. Дизайнерам иногда неймётся и через сроки порядка года могут очень менять интерфейс по внешнему виду и расположению элементов информирования и управления, или сам додумаешься, как улучшить алгоритм, тогда только ручная правка координат остаётся, а всё остальное время их трогать не надо.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Константы в файле
« Reply #5 on: September 25, 2014, 12:33:59 PM »
Опять же, если скрипт только для тебя. Переходи на уровень выше, делай для всех и константы в таком понимании будут не нужны.
Та даже если и для себя. Вот ЗФ флешь игра, окно подстраивается под размер экрана (в ММ и ОК). Запустил скрипт не на стационаре, а на ноуте или вообще на работе и всё приехали. Экраны везде разные, всё потянулось, поплыло. Скрипт с жёсткими координатами сразу в мусор. Не говоря уже про режим FullScreen игры или при привязке к окну.
Всё это решается одним махом при изначальном создании под динамические координаты. Да, затраты сил чуть больше, но оно того стоит и большим скриптам просто обязательно.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Константы в файле
« Reply #6 on: September 25, 2014, 12:37:10 PM »
Всетаки мыслишь не верно, значения переменных легко сохранять и читать например из INI файла. А константы придется только в ручную всегда прописывать, да еще они находятся не в папке со скриптом.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Константы в файле
« Reply #7 on: September 25, 2014, 12:52:45 PM »
Туда стоит дописать какое нибудь
#PI  3.1415926536


123

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Re: Константы в файле
« Reply #8 on: September 25, 2014, 12:57:41 PM »
Если при разных разрешениях размеры в пикселях нужных объектов и расстояния между ними будут в разы отличаться, как с этим бороться?

Просто я чайник и про INI файл пока знаю меньше, чем с константами - первый попавшийся способ запихнуть одинаковые для нескольких скриптов или их копий величины сразу во все и править также только в одном месте.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Константы в файле
« Reply #9 on: September 25, 2014, 01:29:55 PM »
Можно устанавливать определенный размер окна
Code: (clickermann) [Select]
wndsize( wndfind("Блокнот"), 300, 300)

Вот пример чтения и записи INI
Создаешь в ручную или через такой скрипт файл конфигурации
Code: (clickermann) [Select]
INIWRITE("config.ini", "x1", "100", "Координаты")
INIWRITE("config.ini", "y1", "100", "Координаты")
INIWRITE("config.ini", "x2", "200", "Координаты")
INIWRITE("config.ini", "y2", "200", "Координаты")
INIWRITE("config.ini", "lclk_x", "300", "Клик")
INIWRITE("config.ini", "lclk_y", "450", "Клик")

Используешь чтение в твоем скрипте.
Code: (clickermann) [Select]
$x1 = INT(INIREAD("config.ini", "x1", "Координаты"))
$y1 = INT(INIREAD("config.ini", "y1", "Координаты"))
$x2 = INT(INIREAD("config.ini", "x2", "Координаты"))
$y2 = INT(INIREAD("config.ini", "y2", "Координаты"))
$lclk_x = INT(INIREAD("config.ini", "lclk_x", "Клик"))
$lclk_y = INT(INIREAD("config.ini", "lclk_y", "Клик"))

GETSCREEN
IF_PICTURE_IN ($x1,$y1, $x2,$y2, "file.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
ELSE
   LCLICK($lclk_x,$lclk_y)
END_IF

HALT
Обрати внимание, нужно обязательно использовать INT когда читаются цифры из текстовых файлов чтобы преобразовать строки в числа.