Тема: OFF: Чего не хватает AHK? Какая функциональность повысит юзабилити?
Чего не хватает языку AHK для "полного счастья" разработчика/программиста?
Какой новой функциональности?
Что существенно повысит юзабилити AHK?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Script-Coding.com community → OFF: Чего не хватает AHK? Какая функциональность повысит юзабилити?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Чего не хватает языку AHK для "полного счастья" разработчика/программиста?
Какой новой функциональности?
Что существенно повысит юзабилити AHK?
Многопоточности?
В соседней ветке ypppu сообщил:
Чтобы можно было в GUI вставлять анимированные GIF-картинки без костылей.
Перенес его мнение в эту новую тему
Простоты без необходимости ковырять API (DllCall/VarSetCapacity), COM-объекты, WMI, комстроку, возможности сразу сравнивать/присваивать значения без записи в переменную из встроенных функций, отсутствия всяких неочевидностей и индонюансов типа замыкающей #If, возможности писать = вместо :=, операторов типа With, Sub-процедур, Select Case, многократного переназначения (сочетаний) клавиш в строке (a::b::c::d) и т.д. (всего не помню).
возможности писать = вместо :=
Это из старого перекочевало, путаницу вносит, с другой стороны есть другая форма записи, почему то более понятная новичкам.
Простоты без необходимости ковырять API (DllCall/VarSetCapacity)
А как проще организовать?
COM-объекты, WMI
Как бы есть.
комстроку
Тут не знаю о чём.
возможности сразу сравнивать/присваивать значения без записи в переменную из встроенных функций
При сравнении не обязательно сохранять результат выражения...
типа замыкающей #If
А как следующим хоткеям понять, что они не относятся к этой директиве?
Чтобы можно было в GUI вставлять анимированные GIF-картинки без костылей.
Бросьте, какие костыли:
html =
(
<body style="margin: 0; overflow: hidden;">
<img src="https://upload.wikimedia.org/wikipedia/commons/5/55/Tesseract.gif" width="200">
</body>
)
Gui, Margin, 0, 0
Gui, Add, ActiveX, vPic w200 h200, HTMLFile
Pic.write(html)
Gui, Show, w200 h200
-DPIScale
По умолчанию.
почему то более понятная новичкам
Сомневаюсь.
А как проще организовать?
Встроить новые функции.
Как бы есть.
Пример аналога хотя бы объектов MSOffice приведёте?
Тут не знаю о чём.
Консольные системные команды.
При сравнении не обязательно сохранять результат выражения...
Вот именно.
А как следующим хоткеям понять, что они не относятся к этой директиве?
По повторному переводу строки, например. Хотя нет, это не годится. По двойной решётке исходного If или хотя бы по привычному EndIf.
Встроить новые функции.
Спасибо, новые функци это конечно очень интересно, но как это должно по вашему выглядеть?
или хотя бы по привычному EndIf
Для кого привычному?
возможности сразу сравнивать/присваивать значения без записи в переменную
Вот именно.
Так не надо же присваивать значения...
но как это должно по вашему выглядеть?
Так же, как и сейчас. Ничего примечательного.
Для кого привычному?
Для кодеров на других языках. Ну, или пусть фигурные скобки сигнальными будут.
Так не надо же присваивать значения...
Так всё равно ErrorLevel на след. строке пойдёт. В одностроковый If не записать.
Простоты без необходимости ковырять API (DllCall/VarSetCapacity), COM-объекты, WMI, комстроку, возможности сразу сравнивать/присваивать значения без записи в переменную из встроенных функций, отсутствия всяких неочевидностей и индонюансов типа замыкающей #If, возможности писать = вместо :=, операторов типа With, Sub-процедур, многократного переназначения (сочетаний) клавиш в строке (a::b::c::d) и т.д. (всего не помню).
Flasher, Sub-процедуры есть, возможность = вместо := есть, #If писать не обязательно, доступ к COM-объектам есть, возможность сравнивать результат работы встроенных функций есть, простоты достаточно для начального уровня.
Sub-процедуры есть
Только решили в справке и "гугле" не указывать?
возможность = вместо := есть
Не буквально, а там, где применяются :=.
#If писать не обязательно
Скрипты писать и водку пить тоже.
доступ к COM-объектам есть, возможность сравнивать результат работы встроенных функций есть
Про достут и результат не писалось. См. внимательней.
Sub-процедура (и знак = заодно):
Gosub, Sub
MsgBox, % a
Return
Sub:
a = test
Return
COM-объекты, WMI, комстроку, возможности сразу сравнивать/присваивать значения без записи в переменную из встроенных функций
Ну, прочитал, что дальше?
Sub-процедура
В русской справке по процедур* ничего нет, как и по Sub в английской. GoSub я знаю. Параметры-то где?
Ну, прочитал, что дальше?
Дальше не вырываем из контекста "без необходимости ковырять" и смотрим русский язык > склонение имён существительных.
В русской справке по процедур* ничего нет, как и по Sub в английской. GoSub я знаю.
Не понял смысла. Я же вам показал, что Sub-процедуры есть. В чём проблема-то? В том, что они называются не так, как вам бы этого хотелось?
В том, что они называются не так, как вам бы этого хотелось?
А как они называются?
А как она называется?
Подпрограмма.
Продолжаете утверждать, что подпрограммы в AHK отсутствуют? Или Sub-процедура — это не подпрограмма? Или вы к названию придираетесь?
Будете утверждать дальше, что в AHK нет возмозможности использовать знак = так же, как := ?
Или Sub-процедура — это не подпрограмма? Или вы к названию придираетесь?
Первое. Это не то же, что и Sub в бэйсиках, где есть параметры.
Будете утверждать дальше, что в AHK нет возмозможности использовать знак = так же, как := ?
В определённых ситуациях, как я и пояснял, да, буду.
Shell = ComObjCreate("WScript.Shell")
MsgBox % Shell.CurrentDirectory
Первое. Это не то же, что и Sub в бэйсиках, где есть параметры.
Так, теперь вы обвиняете AHK, что в нём не так же, как в бейсике? Ну приведите мне конструкцию из бейсика, которую нельзя воспроизвести в AHK.
Shell = % ComObjCreate("WScript.Shell")
MsgBox % Shell.CurrentDirectory
Да, синтаксис другой, так и знак другой. Как они должны различаться для интерпретатора? Вообще, знак = в современном AHK позиционируется, как оператор сравнения, а не присвоения. В любом языке они различаются.
Так, теперь вы обвиняете AHK, что в нём не так же, как в бейсике?
Обвиняю? Это вы меня только и делаете, что обвиняете. Я же ответил на вопрос про "полное счастье" и юзабилити.
Ну приведите мне конструкцию из бейсика, которую нельзя воспроизвести в AHK.
Воспроизвести каким образом?
Как они должны различаться для интерпретатора?
По мне так их и не надо различать.
Изложите своё видение вопроса, как тогда по-вашему отличить
if (var := "value")
от
if (var = "value")
В первом случае присвоение, во втором — сравнение.
Воспроизвести каким образом?
В коде.
А пока изложите своё видение вопроса, как тогда по-вашему отличить
А какой смысл в первом примере?
В коде.
Я не спрашивал - где.
Обнулять по команде все переменные.
А где такое есть и зачем это нужно?
Ну например когда в вечном цикле используются различные переменные и при каждой последующей итерации нужно их всех сделать пустыми.
Loop {
MyFunc()
}
MyFunc()
{
MsgBox, % x
x := 1
}
Да - можно рассматривать, как вариант засунуть весь код в функцию.
Но я был бы не против такой команды, по типу как здесь:
http://se.mathworks.com/help/matlab/ref/clearvars.html
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться