marusa122 wrote: ↑Можно ли этот скрипт сделать универсальным, чтобы не плодить несколько похожих скриптов?
Зачем плодить похожие скрипты самому, когда можно поручить это унылое занятие машине?
NB: тестил в Блокноте, поэтому Send и опции строки-автозамены несколько отличаются от исходного кода.
Code: Select all
Loop {
If (A_Index < 5)
Continue
If (A_Index > 99)
Break
HotString(":?*X:-" . A_Index, "SubtractNum")
}
SubtractNum() {
RegexMatch(A_ThisHotkey, "(?<=-)\d+", vNumber)
Clipboard=
Send, +{Home}^{c}
ClipWait, 2
Result:=Round(Clipboard-vNumber,2)
MsgBox, 0, Итоговое значение, %Result%
Return
}
Одно но: если мы хотим написать
-55, раньше сработает
-5.
Ещё можно переизобрести велосипед и сделать автозамену самим. Это более гибкий способ, что является как плюсом (хорошо гнётся), так и минусом (надо гнуть самому).
Code: Select all
:?*b0:-::
{
Input, vNumber, L3 V E, {Enter}{Space}{Tab} ; Максимум три цифры, или нажать Enter/Space/Tab
If vNumber Is Not Digit ; Если после минуса были не-цифры, это не наш случай
Return
Loop % StrLen(vNumbers) + 1 + (ErrorLevel ~= "EndKey:") ; Стираем набранные цифры, минус и пробел/таб/перенос, если он был
Send {BS}
Clipboard=
Send, +{Home}^{c}
ClipWait, 2
Result:=Round(Clipboard-vNumber,2)
MsgBox, 0, Итоговое значение, %Result%
Return
}