1 (изменено: _Квас_, 2013-09-07 23:53:11)

Тема: AHK: Gui, radio ( переключатель )

Недавно начал заниматься ahk скриптингом.  В общем, написал такой скрипт, который генерирует четные и нечетные числа рандомно.
Не буду расписывать весь код, напишу только самое основное.
Вот:

Нечетные := Array("1", "3", "5", "7", "9", "11", "13")
Четные := Array("2", "4", "6", "8", "10", "12", "14", "16")

Gui, add, button, gvar gvar1, Сгенерировать
Gui, add, radio, vVar, Нечетные
Gui, add, radio, vVar1, Четные
Gui, add, edit,,
Gui, Show
return

Var:
send, {down}
Random, A, 1, 7
send, % Нечетные
return

Var1:
send, {down}
Random,  B, 1, 8
send, % Четные
return

Так вот, проблема в том, что не получается сделать переключатель ( radio ). Например, нажал на "Четные" и потом "сгенерировать", и сгенерировались только четные числа, ну и аналогично с нечетными. А у меня генерируются только не четные числа, переключатель вообще не работает и числа генерируются даже тогда, когда в переключателе ничего не выбрано.. Что только не пробовал, ничего не получалось.  Надеюсь на вашу помощь

2

Re: AHK: Gui, radio ( переключатель )

Нутк если выбрано нечетные, проверка на число и заново генерировать пока не выйдет нечетное число. Так же и с четными.

3

Re: AHK: Gui, radio ( переключатель )

Не понял если честно.

4 (изменено: serzh82saratov, 2013-09-08 00:43:25)

Re: AHK: Gui, radio ( переключатель )

На скорую руку, приходит в голову, такой не адаптированный бред:


Gui, add, button, gGen, Сгенерировать
Gui, add, radio, vUnEven Checked, Нечетные
Gui, add, radio, , Четные
Gui, add, edit, vedit
Gui, Show
return

Gen:
    GuiControlGet, UnEven 
    Random, Rand, 1, 16
    If (UnEven && !Mod(Rand, 2)) || (!UnEven && Mod(Rand, 2)) || (Rand = 15)
        GoTo Gen
    GuiControl,, edit, % Rand
    return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: Gui, radio ( переключатель )

Gui, add, button, gGen, Сгенерировать
Gui, add, radio, vUnEven Checked, Четные
Gui, add, radio, , Нечетные
Gui, add, edit, vedit
Gui, Show
return

Gen:
    GuiControlGet, UnEven 
    Random, Rand, 1, 8
    GuiControl,, edit, % UnEven - 1 + 2*Rand
    return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Gui, radio ( переключатель )

teadrinker
Так может быть число 15.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Gui, radio ( переключатель )

А нельзя? Я просто показал, что два прохода тут не нужно, можно подправить параметры Random в зависимости от переменной UnEven для любых диапазонов.

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

8

Re: AHK: Gui, radio ( переключатель )

Если исключений из порядка чисел несколько, то лучше так:


UnEven := "|1|3|5|7|9|11|13|"
Even := "|2|4|6|8|10|12|14|16|"

Gui, add, button, gGen, Сгенерировать
Gui, add, radio, vUnEvenRadio Checked, Нечетные
Gui, add, radio, , Четные
Gui, add, edit, vedit
Gui, Show
return

Gen:
    GuiControlGet, UnEvenRadio  
    GuiControlGet, edit
    Random, Rand, 1, 16 
    If (Rand = edit) || (UnEvenRadio && !InStr(UnEven, "|" Rand "|")) || (!UnEvenRadio && !InStr(Even, "|" Rand "|"))
        GoTo Gen 
    GuiControl,, edit, % Rand
    return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Gui, radio ( переключатель )

Так про исключения не говорилось, вроде.

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

10

Re: AHK: Gui, radio ( переключатель )

А нельзя?  Я просто показал, что два прохода тут не нужно, можно подправить для любых диапазонов.

Твоё решение более логично, спору нет. Но я так понял что могут быть исключения в порядке чисел.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

Re: AHK: Gui, radio ( переключатель )

Так про исключения не говорилось, вроде.

Нечетные := Array("1", "3", "5", "7", "9", "11", "13")
Четные := Array("2", "4", "6", "8", "10", "12", "14", "16")

Тут нет 15.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: Gui, radio ( переключатель )

Думаю, случайно. Ну, или так:

Gui, add, button, gGen, Сгенерировать
Gui, add, radio, vUnEven Checked, Четные
Gui, add, radio, , Нечетные
Gui, add, edit, vedit
Gui, Show
return

Gen:
    GuiControlGet, UnEven 
    Random, Rand, 1, UnEven ? 8 : 7
    GuiControl,, edit, % UnEven - 1 + 2*Rand
    return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: Gui, radio ( переключатель )

Но я так понял что могут быть исключения в порядке чисел.

Нечетные := Array("1", "3" , "5", "7", "9", "11", "13")
Четные := Array("2", "4", "6" , "8", "10", "12", "14", "16")
Gui, add, button, gGen, Сгенерировать
Gui, add, radio, vUnEven Checked, Четные
Gui, add, radio, , Нечетные
Gui, add, edit, vedit
Gui, Show
return

Gen:
    GuiControlGet, UnEven
    Arr := UnEven ? "Четные" : "Нечетные"
    Random, Rand, 1, % %Arr%.MaxIndex()
    GuiControl,, edit, % %Arr%[Rand]
    return

14

Re: AHK: Gui, radio ( переключатель )

Извращенцы.

Gui, add, button, gGen, Сгенерировать
Gui, add, radio, vUnEven Checked, нечетные
Gui, add, radio, vEven, четные
Gui, add, edit, vedit
Gui, Show
return

Gen:
    GuiControlGet, UnEven 
    Random, Rand, 1, 8
    GuiControl,, edit, % Rand*2 - UnEven
    return
Ходит Спесь, надуваючись, С боку на бок переваливаясь. Ростом-то Спесь аршин с четвертью, Шапка-то на нём во целу сажень, Пузо-то его всё в жемчуге, Сзади-то у него раззолочено... Идет Спесь, видит: на небе радуга; Повернул Спесь во другую сторону: Не пригоже-де мне нагибатися!
А. К. Толстой

15

Re: AHK: Gui, radio ( переключатель )

Все, всем спасибо. Разобрался

16 (изменено: _Квас_, 2013-09-08 19:32:42)

Re: AHK: Gui, radio ( переключатель )

И еще 1 вопросик, как сделать, чтобы новое число перемещалось на новую строку, а старое не стиралось?

17

Re: AHK: Gui, radio ( переключатель )

Korobkoff пишет:

Извращенцы

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

18 (изменено: Irbis, 2013-09-08 19:49:28)

Re: AHK: Gui, radio ( переключатель )

Зато скрипт более универсальный

Нечетные := Array("Один", "3" , "5", "7", "9", "11", "13")
Четные := Array("2", "4", "6" , "8", "10", "Дюжина", "14", "16")
Gui, add, button, gGen, Сгенерировать
Gui, add, radio, vUnEven Checked, Четные
Gui, add, radio, , Нечетные
Gui, add, edit, r20 vedit
Gui, Show
return

Gen:
    GuiControlGet, UnEven
    GuiControlGet, edit
    Arr := UnEven ? "Четные" : "Нечетные"
    Random, Rand, 1, % %Arr%.MaxIndex()
    GuiControl,, edit, % edit . %Arr%[Rand] . "`n"
    return

19

Re: AHK: Gui, radio ( переключатель )

Irbis пишет:

Зато скрипт более универсальный

Нечетные := Array("Один", "3" , "5", "7", "9", "11", "13")
Четные := Array("2", "4", "6" , "8", "10", "Дюжина", "14", "16")
Gui, add, button, gGen, Сгенерировать
Gui, add, radio, vUnEven Checked, Четные
Gui, add, radio, , Нечетные
Gui, add, edit, r20 vedit
Gui, Show
return

Gen:
    GuiControlGet, UnEven
    GuiControlGet, edit
    Arr := UnEven ? "Четные" : "Нечетные"
    Random, Rand, 1, % %Arr%.MaxIndex()
    GuiControl,, edit, % edit . %Arr%[Rand] . "`n"
    return

Так новое число уходит все ниже и ниже и приходится листать, как-нибудь по другому можно? Ну или другой вариант, новое число остается наверху, а старое уходит вниз. Заранее спасибо

20

Re: AHK: Gui, radio ( переключатель )

Исправь в таком случае строку

GuiControl,, edit, % %Arr%[Rand] . "`n" . edit

21

Re: AHK: Gui, radio ( переключатель )

Irbis пишет:

Зато скрипт более универсальный

Нечетные := Array("Один", "3" , "5", "7", "9", "11", "13")
Четные := Array("2", "4", "6" , "8", "10", "Дюжина", "14", "16")
Gui, add, button, gGen, Сгенерировать
Gui, add, radio, vUnEven Checked, Четные
Gui, add, radio, , Нечетные
Gui, add, edit, r20 vedit
Gui, Show
return

Gen:
    GuiControlGet, UnEven
    GuiControlGet, edit
    Arr := UnEven ? "Четные" : "Нечетные"
    Random, Rand, 1, % %Arr%.MaxIndex()
    GuiControl,, edit, % edit . %Arr%[Rand] . "`n"
    return

Ой ли...

Gui, add, button, gGen, Сгенерировать
Gui, add, radio, vUnEven Checked, нечетные
Gui, add, radio, vEven, четные
Gui, add, edit, vedit
Gui, Show
return

Gen:
    GuiControlGet, UnEven 
    Random, Rand, 1, 2147483647
    GuiControl,, edit, % Rand*2 - UnEven
    return

А массив-то с наименованиями прилепить нетрудно, причем только для тех чисел, которые должны их иметь по замыслу.

Ходит Спесь, надуваючись, С боку на бок переваливаясь. Ростом-то Спесь аршин с четвертью, Шапка-то на нём во целу сажень, Пузо-то его всё в жемчуге, Сзади-то у него раззолочено... Идет Спесь, видит: на небе радуга; Повернул Спесь во другую сторону: Не пригоже-де мне нагибатися!
А. К. Толстой

22

Re: AHK: Gui, radio ( переключатель )

Так "прилепи", в чем проблема-то.  Массивы - в посте #1

23

Re: AHK: Gui, radio ( переключатель )

Irbis пишет:

Так "прилепи", в чем проблема-то.  Массивы - в посте #1

Не вопрос. Держи.


SuperUniversalArray := {1: "Один", 12: "Дюжина", 15: "Сгенерировано число, отвечающее условиям задачи, но по неведомым причинам отсутствующее в массиве заказчика (15)", 100500: "Стопиццот"}
Gui, add, button, gGen, Сгенерировать
Gui, add, radio, vUnEven Checked, нечетные
Gui, add, radio, vEven, четные
Gui, add, edit, r2 vedit
Gui, Show
return

Gen:
    GuiControlGet, UnEven 
    Random, Rand, 1, 2147483647
    GuiControl,, edit, % SuperUniversalArray[Rand*2 - UnEven] ? SuperUniversalArray[Rand*2 - UnEven] : Rand*2 - UnEven
    return

Теперь твоя очередь. 2147483647 чисел в виде пары массивов - в студию!
Так яснее в чем на самом деле "проблема-то"?

Ходит Спесь, надуваючись, С боку на бок переваливаясь. Ростом-то Спесь аршин с четвертью, Шапка-то на нём во целу сажень, Пузо-то его всё в жемчуге, Сзади-то у него раззолочено... Идет Спесь, видит: на небе радуга; Повернул Спесь во другую сторону: Не пригоже-де мне нагибатися!
А. К. Толстой

24 (изменено: Irbis, 2013-09-09 22:11:48)

Re: AHK: Gui, radio ( переключатель )

Проблема в том, что заказчику не нужно 2147483647 чисел - если все-таки внимательно посмотреть на код в посте #1, то можно заметить, что для нечетных чисел задано 7 вариантов, в то время как для четных - ровно 8, то есть можно предположить, что "15" ТС пропустил ввиду каких-то своих соображений, а не "по неведомым причинам" (с)

Хотя конечно можно сказать заказчику - ты хочешь не это, и вообще ничего не понимаешь, сбацаю-ка я тебе вариант на 2147483647 чисел, ибо так гораздо круче ХКТТБ.

25

Re: AHK: Gui, radio ( переключатель )

Заказчик не просил и универсальность, о которой ты начал разговор. А большое страшное число - лишь ответ на псевдоуниверсальность.
Если уж совсем-совсем внимательно читать, то можно заметить, что заказчик вообще не просил алгоритм генерирования,- его затруднения, по крайней мере как ему казалось, были связаны исключительно с GUI, а именно с тем, что по нажатии разных кнопок происходило одно и то же.

Но зачем вникать так глубоко, когда можно ухватиться хоть за что-то и отстаивать что-нибудь свое, не важно какое, но свое, родное.

P.S. Вариант не предложен, а демагогия - суть признание отсутствия обоснованных возражений.
P.Р.S. Отдельное спасибо за ("ввиду каких-то своих соображений" != "по неведомым причинам") - очень комично вышло.

Ходит Спесь, надуваючись, С боку на бок переваливаясь. Ростом-то Спесь аршин с четвертью, Шапка-то на нём во целу сажень, Пузо-то его всё в жемчуге, Сзади-то у него раззолочено... Идет Спесь, видит: на небе радуга; Повернул Спесь во другую сторону: Не пригоже-де мне нагибатися!
А. К. Толстой

26 (изменено: serzh82saratov, 2013-09-10 09:32:17)

Re: AHK: Gui, radio ( переключатель )

Korobkoff
Так ты тут и есть первый демагог, выводы которого произрастают из неведомых остальным условий. А аргументы совсем туманны и абстрактны.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

27

Re: AHK: Gui, radio ( переключатель )

Ну, если и т.н. разработчики вступают в подобные дискуссии в подобном тоне, то и я не прочь продолжить. Я не creature.ws, меня воинствующая демагогия не пугает, а совсем даже напротив
Тебе, бедолага, я должен напомнить, что пару лет назад наблюдал твое появление здесь, сопровождавшееся перманентным приставанием ко всем подряд с бестолковыми вопросами. С тех пор я смотрю ты сильно вырос в собственных глазах и от тотального безлюдья стал т.н. разработчиком. С интересом ознакомился с твоей, если можно так назвать, карьерой. Все как и в жизни - успех достигнут издевательством над чужими идеями и показушной активностью.

Мусье хватит - мусье потрет-побанит? Или мусье жаждет продолжить обзор персоналий?

Ходит Спесь, надуваючись, С боку на бок переваливаясь. Ростом-то Спесь аршин с четвертью, Шапка-то на нём во целу сажень, Пузо-то его всё в жемчуге, Сзади-то у него раззолочено... Идет Спесь, видит: на небе радуга; Повернул Спесь во другую сторону: Не пригоже-де мне нагибатися!
А. К. Толстой

28

Re: AHK: Gui, radio ( переключатель )

А по существу - полагаю, что предложил самый лаконичный и универсальный вариант, к которому несложно прикрутить любые дополнения и исключения.
Что особенно приятно - именно после моего поста ТС во всем разобрался. Негодуйте, завистники.

Ходит Спесь, надуваючись, С боку на бок переваливаясь. Ростом-то Спесь аршин с четвертью, Шапка-то на нём во целу сажень, Пузо-то его всё в жемчуге, Сзади-то у него раззолочено... Идет Спесь, видит: на небе радуга; Повернул Спесь во другую сторону: Не пригоже-де мне нагибатися!
А. К. Толстой

29

Re: AHK: Gui, radio ( переключатель )

Злость на весь мир и демисезонное обострение - гремучая смесь.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

30

Re: AHK: Gui, radio ( переключатель )

Полагаю, хэппиэнд.