Тема: AHK: Перемещение текстового фрагмента в переменной
Не знаю насколько коректно назвал тему, как смог вообщем ![]()
Собственно есть переменная, она используется как список например в ListBox, 1 - верх и 4 - низ списка:
Var = 1|2|3|4|
Хочется "сообразить" две кнопки Вверх и Вниз. Например если выбрана 1 и один раз нажать кнопку Вниз, то на выходе хочется иметь:
Var = 2|1|3|4|
а если нажать кнопку Вверх (при изначальном значении Var), то хочется иметь:
Var = 2|3|4|1|
Var = 1|2|3|4|
Select = 1
1:: ; Вверх
???
MsgBox %Var%
Return
2:: ; Вниз
???
MsgBox %Var%
ReturnСпасибо.
_______ MY_ARRAY _______
Arr = vkA6:RWin|vkA4:LAlt|!!!!!!!:KJCM|vkA5:RAlt|vkA2:LCtrl|vkA3:RCtrl|vkA0:LShift|vkA1:RShift|vk5B:LWin
Key := "vkA6"
Val := "LWin"
NewKey = Замена ключа
NewVal = Замена значения
Return
msgbox,,RemoveKeyValue, % RemoveKeyValue(Arr, "", Val)
msgbox,,RemoveKeyValue, % RemoveKeyValue(Arr, Key)
msgbox,,ChangeValue, % ChangeValue(Arr, Key, NewVal)
msgbox,,ChangeKey, % ChangeKey(Arr, Val, NewKey)
msgbox,,GetKey, % GetKey(Arr, Val)
msgbox,,GetValue, % GetValue(Arr, Key)
Return
3::
msgbox % "0 " . S . "`r1 " . S1 . "`r2 " . S2 . "`r3 " . S3
Return
1::
ToolTip % Arr := MoveKeyValue(Arr, "L", Key)
Return
2::
ToolTip % Arr := MoveKeyValue(Arr, "", "", Val)
ReturnMoveKeyValue(Arr, Shift, Key = "", Val = "") {
(Val = "") ? Val := GetValue(Arr, Key) : (Key = "") ? Key := GetKey(Arr, Val)
If (Shift = "L")
{ If RegExMatch(Arr, "(^\Q" Key ":" Val "\E)\|", S)
Return RegExReplace(Arr, "^(\Q" S "\E)", "","",1) . "|" . S1
RegExMatch(Arr, ".*(^|\|)(.*?:.*?)?(\|)\Q" Key ":" Val "\E($|\|).*", S)
Return RegExReplace(Arr, "(^|\|)\Q" S2 "|" Key ":" Val "\E($|\|)", "$1" Key ":" Val "|" S2 "$2","",1)
} If RegExMatch(Arr, ".*\|(\Q" Key ":" Val "\E)$.*", S)
Return S1 . "|" . RegExReplace(Arr, "(\Q|" S1 "\E)", "","",1)
Return RegExReplace(Arr, "(^|\|)\Q" Key ":" Val "|\E(.*?:.*?)?($|\|)", "$1$2|" Key ":" Val "$3" )
}
ChangeValue(Arr, Key, NewVal) {
RegExMatch(Arr, ".*(^|\|)\Q" Key "\E:(.*?)?($|\|).*", S)
Return RegExReplace(Arr, "\Q" S1 "" Key ":" S2 "" S3 "\E", "" S1 "" Key ":" NewVal "" S3 "", "",1)
}
ChangeKey(Arr, Val, NewKey) {
RegExMatch(Arr, ".*(^|\|)(.*?)?:\Q" Val "\E($|\|).*", S)
Return RegExReplace(Arr, "\Q" S1 "" S2 ":" Val "" S3 "\E", "" S1 "" NewKey ":" Val "" S3 "", "",1)
}
GetValue(Arr, Key) {
RegExMatch(Arr, ".*(^|\|)\Q" Key "\E:(.*?)?($|\|).*", S)
Return S2
}
GetKey(Arr, Val) {
RegExMatch(Arr, ".*(^|\|)(.*?)?:\Q" Val "\E($|\|).*", S)
Return S2
}
RemoveKeyValue(Arr, Key = "", Val = "") {
(Val = "") ? Val := GetValue(Arr, Key) : (Key = "") ? Key := GetKey(Arr, Val)
Return RTrim(RegExReplace(Arr, "(^|\|)\Q" Key ":" Val "\E($|\|)", "$1","",1), "|")
}
Win10x64 AhkSpy, Hotkey, ClockGui

