1 (изменено: BlackCat, 2021-10-20 20:07:45)

Тема: AHK: GuiControl и обнуление предыдущих переменных

Добрый вечер всем!
Код скрипта:


RegHex =
(
  54,00,65,00,73,00,74,00,3a,00,20,00,22,00,45,00,6e,00,67,00,6c,00,69,\
  00,73,00,68,00,20,00,61,00,6e,00,79,00,20,00,74,00,65,00,78,00,74,00,22,00,\
  20,00,2b,00,20,00,20,04,43,04,41,04,41,04,3a,04,38,04,39,04,20,00,42,04,35,\
  04,3a,04,41,04,42,04,3a,00,20,00,22,00,11,04,43,04,31,04,3b,04,4c,04,20,00,\
  13,04,43,04,3c,04,22,00,00,00,00,00
)

Gui Add, Edit, vSrcHex gGetTxt w600 h200, % RegHex ; Вставить hex из *reg файла
Gui Add, Edit, vOutTxt  w600 h200
Gui Add, Button, gReset, Очистить все
Gui Show,, % ProgName
Return

GetTxt:
	Gui Submit, NoHide
	GuiControl,, OutTxt, % GetTxt(SrcHex)
Return

Reset:
	Gui Submit, NoHide
	GuiControl,, SrcHex
	GuiControl,, OutTxt
Return

GuiClose:
ExitApp

GetTxt(SrcHex){
	global
	SrcHex := RegExReplace(SrcHex, "m),|\s|\\\n", "")
	Loop % StrLen(SrcHex) /2 {
		Txt .= Chr("0x" SubStr(SrcHex, A_index *4 -1, 2) SubStr(SrcHex, A_index *4 -3, 2))
		}
Return Txt
}

Нужно, чтобы при вставке новых данных hex, полностью удалялся выхлоп от предыдущих данных.
Они вновь вываливают и добавляются новые.
Пробовал очищать переменные
SrcHex := ""
OutTxt := ""
Не помогает.
Что делаю не так, что недодумал???
Заранее благодарен за любую помощь!

2

Re: AHK: GuiControl и обнуление предыдущих переменных

Не совсем понятно, что этот код должен делать. В данном виде он не делает ничего, кроме визуальной очистки поля ввода. Так же не очень понятно, что вы понимаете под «выхлопом». Это что-то связанное с автомобилями? В любом случае, чтобы очистить переменные, присвоить им пустое значение достаточно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: BlackCat, 2021-10-20 20:54:13)

Re: AHK: GuiControl и обнуление предыдущих переменных

teadrinker попробую объяснить ... у меня это плохо получается ...
Этот скрипт должен конвертировать данные hex из reg файла в текст.
После первой конвертации остаются текстовые данные, которые вновь добавляются к новым, если вставить другие данные hex для конвертации ...
Не знаю, получилось ли объяснить.
Лучше тестить скрипт на "живую", чтобы понять.
Я специально добавил hex строки в Edit для примера.
Попробуйте запустить скрипт, затем [Ctrl + X] и [Ctrl + V] и все станет понятно ... Больше никак не могу объяснить, извините за мою тупость.

4

Re: AHK: GuiControl и обнуление предыдущих переменных

Всё равно не понял, к сожалению, как он должен работать и в чём проблема.

BlackCat пишет:

Попробуйте запустить скрипт, затем [Ctrl + X] и [Ctrl + C] и все станет понятно

Запускаю, вижу в верхнем поле выделенный текст, после Ctrl + X он исчезает из поля и попадает в буфер обмена, Ctrl + C ничего не делает.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: BlackCat, 2021-10-20 20:30:33)

Re: AHK: GuiControl и обнуление предыдущих переменных

teadrinker перед вставкой [Ctrl + C] нужно ткнуть мышой в верхний Edit, чтобы он активировался и hex попал туда, куда нуна.

6

Re: AHK: GuiControl и обнуление предыдущих переменных

Всё настолько просто, что даже смешно:

RegHex =
(
  54,00,65,00,73,00,74,00,3a,00,20,00,22,00,45,00,6e,00,67,00,6c,00,69,\
  00,73,00,68,00,20,00,61,00,6e,00,79,00,20,00,74,00,65,00,78,00,74,00,22,00,\
  20,00,2b,00,20,00,20,04,43,04,41,04,41,04,3a,04,38,04,39,04,20,00,42,04,35,\
  04,3a,04,41,04,42,04,3a,00,20,00,22,00,11,04,43,04,31,04,3b,04,4c,04,20,00,\
  13,04,43,04,3c,04,22,00,00,00,00,00
)

Gui Add, Edit, vSrcHex gGetTxt w600 h200, % RegHex ; Вставить hex из *reg файла
Gui Add, Edit, vOutTxt  w600 h200
Gui Add, Button, gReset, Очистить все
Gui Show,, % ProgName
Return

GetTxt:
 Gui Submit, NoHide
 GuiControl,, OutTxt, % GetTxt(SrcHex)
Return

Reset:
 Gui Submit, NoHide
 GuiControl,, SrcHex
 GuiControl,, OutTxt
Return

GuiClose:
ExitApp

GetTxt(SrcHex){
 global
 Txt=
 SrcHex := RegExReplace(SrcHex, "m),|\s|\\\n", "")
 Loop % StrLen(SrcHex) /2 {
  Txt .= Chr("0x" SubStr(SrcHex, A_index *4 -1, 2) SubStr(SrcHex, A_index *4 -3, 2))
  }
Return Txt
}
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

7 (изменено: BlackCat, 2021-10-20 20:38:33)

Re: AHK: GuiControl и обнуление предыдущих переменных

__Михаил__ ну да, функцию не довел до ума, а копал не в том месте! ... Совсем тормознул!
Большущее спасибо!

8

Re: AHK: GuiControl и обнуление предыдущих переменных

BlackCat пишет:

перед вставкой [Ctrl + C] нужно ткнуть мышой в верхний Edit, чтобы он активировался

Так он и был изначально активным.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: GuiControl и обнуление предыдущих переменных

teadrinker благодарю за помощь!
Уже решили вопрос, спасибо огромное!

10

Re: AHK: GuiControl и обнуление предыдущих переменных

А, я понял, вы думаете, что вставка текста осуществляется по Ctrl + C.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: GuiControl и обнуление предыдущих переменных

teadrinker ага ... у меня так работает.
А разве иначе???

12

Re: AHK: GuiControl и обнуление предыдущих переменных

Странно, обычно по умолчанию в Windows по Ctrl + C осуществляется копирование, а вставка по Ctrl + V.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: GuiControl и обнуление предыдущих переменных

teadrinker ... блин!!! Перепутал ... [Ctrl + V] конечно же!!!!
Просто перепутал, когда писал.
Я не думаю, когда нажимаю клавиши и все само-собой происходит.

14

Re: AHK: GuiControl и обнуление предыдущих переменных

Ну вот вам и нужно было объяснить, что при вставке hex-кода в верхнее поле должен появляться декодированный текст в нижнем. Если так, то можно было проще:

RegHex =
(
  54,00,65,00,73,00,74,00,3a,00,20,00,22,00,45,00,6e,00,67,00,6c,00,69,\
  00,73,00,68,00,20,00,61,00,6e,00,79,00,20,00,74,00,65,00,78,00,74,00,22,00,\
  20,00,2b,00,20,00,20,04,43,04,41,04,41,04,3a,04,38,04,39,04,20,00,42,04,35,\
  04,3a,04,41,04,42,04,3a,00,20,00,22,00,11,04,43,04,31,04,3b,04,4c,04,20,00,\
  13,04,43,04,3c,04,22,00,00,00,00,00
)

Gui Add, Edit, vSrcHex gGetTxt w600 h200, % RegHex ; Вставить hex из *reg файла
Gui Add, Edit, vOutTxt  w600 h200
Gui Add, Button, gReset, Очистить все
Gui Show,, % ProgName
Return

Reset:
 GuiControl,, SrcHex
 GuiControl,, OutTxt
Return

GuiClose:
ExitApp

GetTxt(){
 GuiControlGet, SrcHex
 SrcHex := RegExReplace(SrcHex, "[^a-f\d]")
 Loop % StrLen(SrcHex) /2 {
  Txt .= Chr("0x" SubStr(SrcHex, A_index *4 -1, 2) SubStr(SrcHex, A_index *4 -3, 2))
  }
 GuiControl,, OutTxt, % Txt
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: GuiControl и обнуление предыдущих переменных

teadrinker ну я же писал, что не умею объяснять. Как собака - все понимаю, но сказать не могу!
БОЛЬШУЩЕЕ БЛАГОДАРЮ за помощь!
Теперь все хорошо работает.

16

Re: AHK: GuiControl и обнуление предыдущих переменных

Только вот какой смысл хранить в реестре в хексе? Можно и в виде строк хранить.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

17 (изменено: BlackCat, 2021-10-20 21:45:55)

Re: AHK: GuiControl и обнуление предыдущих переменных

__Михаил__ иногда мне нужно быстро конвертировать данные реестра из hex и обратно.
Это для модернизации образа WinPE нужно, где используются *.reg файлы.
Долго объяснять, а этого я не умею делать ...
Теперь буду доделывать этот код для обратной конвертации - из текста в hex для реестра.

18 (изменено: BlackCat, 2021-10-20 21:49:45)

Re: AHK: GuiControl и обнуление предыдущих переменных

__Михаил__ в сети есть конвертеры подобного рода, но они старые и многие не работают, к тому же на кириллице многие глючат - крякозябы выдают.
Нашел один "OTConvertIt", который что-то делает, но тоже старый и функционал не устраивает.
Хочу еще и мультистрочную конвертацию в этот код запихнуть ...

19

Re: AHK: GuiControl и обнуление предыдущих переменных

Тогда думаю АХК в этом поможет как раз.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

20 (изменено: BlackCat, 2021-10-20 21:59:04)

Re: AHK: GuiControl и обнуление предыдущих переменных

__Михаил__ именно об этом я и подумал ...
AHK почти как Perl - многое может!