1 (изменено: Aleksey7557, 2018-09-06 12:36:52)

Тема: Проблема с If и пробелом

Доброго времени суток, пишем программу с полноценным Gui и записью данных в реестр, но возникла проблема с пробелами в вариантах выбора меню DropDownList, то есть если есть вариант, состоящий из двух слов, то он записывается в реестр и сохраняется нормально, но в дальнейшем его использовать через команду не получается, додумались до того, чтобы выдать каждому значению свой порядковый номер, который тоже будет записываться отдельным параметром в реестр, но работает это только если вариант выбора в меню DropDownList состоит из одного слова, там где два слова пришлось разделять слова не пробелом, а знаком _, это работает, но нам не нужно т.к. для игры совершенно не подходит. Ниже прикладываю часть кода, может подскажете как его по другому написать?

2

Re: Проблема с If и пробелом

А для чего фигурные скобки? Кроме того, RegWrite имеет четыре параметра, а у вас ей передаётся пять аргументов. Либо я отстал от жизни и чего-то не знаю, либо одно из двух. И где DropDownList? Напишите пример, который можно скопировать, запустить и увидеть проблему.

3 (изменено: Aleksey7557, 2018-09-06 12:37:17)

Re: Проблема с If и пробелом

Проблема в том что если название ранга состоит из одного цельного слова, то всё записывается и считывается как надо, но если ранг состоит из двух слов, то скрипт отказывается работать, я уже как только ни пытался соединить эти слова и скобками и %A_Space% и кавычками.. в итоге функционирует как надо только если два слова одного ранга соединить знаком _, для скрипта это становится как бы одним словом, но в игре знак _ между словами не уместен.

4 (изменено: Aleksey7557, 2018-09-06 12:39:47)

Re: Проблема с If и пробелом

Проблему решил, может кому пригодится, хотя вряд ли))

	RegRead, Rang, HKLM, SOFTWARE\123, Rang
	
	If Rang in Помощник
	RegWrite, REG_SZ, HKLM, SOFTWARE\123, RangNumber, 1
	If Rang in Охранник
	RegWrite, REG_SZ, HKLM, SOFTWARE\123, RangNumber, 2
	If Rang in Старший охранник
	RegWrite, REG_SZ, HKLM, SOFTWARE\123, RangNumber, 3
	If Rang in Младший лицензёр
	RegWrite, REG_SZ, HKLM, SOFTWARE\123, RangNumber, 4
	If Rang in Лицензёр
	RegWrite, REG_SZ, HKLM, SOFTWARE\123, RangNumber, 5
	If Rang in Старший лицензёр
	RegWrite, REG_SZ, HKLM, SOFTWARE\123, RangNumber, 6
	If Rang in Заместитель депутата
	RegWrite, REG_SZ, HKLM, SOFTWARE\123, RangNumber, 7
	If Rang in Депутат
	RegWrite, REG_SZ, HKLM, SOFTWARE\123, RangNumber, 8
	If Rang in Мэр
	RegWrite, REG_SZ, HKLM, SOFTWARE\123, RangNumber, 9

5

Re: Проблема с If и пробелом

Я что-то так и не понял, в чём проблема была. Вроде всё пишется и читается нормально. Я только заменил HKLM на HKCU, чтобы не запускать от админа.


    RegKey = HKCU\SOFTWARE\ABSRP4\CH
    Gui, Add, DropDownList, x309 y60 w150 h150 vDDLRangCH, Помощник|Охранник|Старший охранник|Младший лицензёр|Лицензёр|Старший лицензёр|Заместитель депутата|Депутат|Мэр
    GuiControl, ChooseString, DDLRangCH, %RangCH%
    Gui, Add, Button, x168 y200 w144 h50 vSaveButtonCH gSaveButtonCH, Сохранить
    Gui, Add, Button, x168 y280 w144 h50 gReadButtonCH, Прочитать
    Gui, Show
    Return

SaveButtonCH:
    GuiControlGet, DDLRangCH
    RegWrite, REG_SZ, %RegKey%, RangCH, %DDLRangCH%
    Return

ReadButtonCH:
    RegRead, RangCH, %RegKey%, RangCH
    MsgBox, %RangCH%
    Return

6

Re: Проблема с If и пробелом

Нам помимо звания ещё нужен отдельный пункт реестра для присвоения номера каждому званию, уже всё функционирует.
Спасибо, что вникли в вопрос.