1 (изменено: Raven, 2017-09-05 16:47:54)

Тема: AHK: имя переменной из ini файла

Как читая ini файл, прочитать с него имя переменной и потом считать именно эту переменную?
Ну примерно так (ini файл):

[Oxygen]
x=850
y=70
analog=DB.110[720]

Вот нужно взять и вывести значение переменной DB.110[720]. Вот никак не могу вкурить как это нужно сделать?
Прочитать файл я могу iniRead, но я получу в переменной строку DB.110[720]. А в самой переменной числовое значение.
Вообще это нужно мне для того что бы объекты считывали все свои данные из ini файла, и потом периодически опрашивали свои переменные имена которых они возьмут из этого ini. Может есть более простой способ?

2 (изменено: Alectric, 2017-09-05 17:02:33)

Re: AHK: имя переменной из ini файла

Чего-то ты замудрил... В ини файл сохраняй последнее значение при чтении этой ДБ, при перезапуске скрипта читай это значение в ту же ДБ.

Образно:


start:
iniread,DB.110[720],file.ini,Oxygen,analog

...
...

readingdb:
DB.110[720]:=readdb()
iniwrite,DB.110[720],file.ini,Oxygen,analog

...

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

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

3

Re: AHK: имя переменной из ini файла

Alectric Не, зачем мне файл перечитывать постоянно то? Я хотел просто хранить имена переменных в файле дабы прочитать их один раз в начале программы.

4 (изменено: Alectric, 2017-09-05 17:16:29)

Re: AHK: имя переменной из ini файла

Raven пишет:

зачем мне файл перечитывать постоянно то?

Я написал не постоянно а только при старте программы.

...

Зачем в ини хранить названия переменных? В них обычно значения хранят.

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

DB=[]
DB.110[720]=4
res=5

name1=res
name2=DB.110[720]

v:=%name1%
msgbox,% name1 "=" v

v:=%name2%
msgbox,% name2 "=" v

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

5

Re: AHK: имя переменной из ini файла

Alectric Чет не запускается правильно. "the following variable name contains an illegal character"
Переменная DB.110[720] в программе меняется каждую секунду. Там значение каждый раз новое. Вот объект и должен считывать это значение с переменной.

6

Re: AHK: имя переменной из ini файла

Raven пишет:

Чет не запускается правильно.

Это я демонстрировал как скрипт воспримет имя переменной в переменной. Простое имя типа res работает, сложный объект (объект объектов) вида DB.110[720] не воспримет - нужно как-то приводить к простому виду.
Возможно я ошибаюсь.

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

7 (изменено: teadrinker, 2017-09-05 19:04:25)

Re: AHK: имя переменной из ini файла

DB.110[720] — такого имени переменной быть не может из-за присутствия недопустимых символов. Так может выглядеть обращение к элементу двумерного массива, что не является переменной, а является выражением. Но из строки "DB.110[720]" получить выражение DB.110[720] в рамках одного скрипта невозможно, так что придумывайте что-то попроще.

UPD. На самом деле при некоторых усилиях возможно (путём парсинга через RegEx), но такая замысловатость вряд ли может быть чем-то оправдвна.

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

8 (изменено: shahlik002, 2017-09-05 19:32:52)

Re: AHK: имя переменной из ini файла

Вот так вот:

peremenaua1:=123
peremenaua2=peremenaua1
peremenaua3:=%peremenaua2%
MsgBox %peremenaua3%

Нужно присвоить (:=) присвоенное значение (%%).
Все просто!

9

Re: AHK: имя переменной из ini файла

Вот поиск всех секций, переменных, значений переменных и совпадений имен переменных скрипта с значениями переменных в файле.

file=tatata.ini
tra:=1111
ra:=2222
try:=3333
ty:=4444

IniRead,x1,%file%
Loop,parse,x1, `n, `r
{
Section:=a_loopfield
iniread,x2,%file%,%a_loopfield%,,
Loop,parse,x2, `n, `r
{
peremenaua:=RegExReplace(a_loopfield,"=.*","")
znachenie:=RegExReplace(a_loopfield,".*=","")
znachenieVscripte:=%znachenie%
if znachenieVscripte=
    znachenieVscripte=Не найдено
    MsgBox,4,,Секция:`t`t%Section%`t`nПеременная: `t%peremenaua%`t`nЗначение: `t%znachenie%`t`n`nЗначение в скрипте: %znachenieVscripte%
    IfMsgBox, No, return
}
}
Post's attachments

tatata.ini 122 b, 3 downloads since 2017-09-05 

You don't have the permssions to download the attachments of this post.

10

Re: AHK: имя переменной из ini файла

Raven пишет:

Вообще это нужно мне для того что бы объекты считывали все свои данные из ini файла

Велосипед вроде есть уже.

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

11

Re: AHK: имя переменной из ini файла

Мда... Осталось научиться на нем кататься.

12

Re: AHK: имя переменной из ini файла

А с велосипедами так всегда, проще новый придумать.

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