1 (изменено: Morux2112, 2021-02-05 17:23:39)

Тема: AHK: Извлечение данных из массива

Добрый день. Есть переменная var := 1, 2, 3. Каждой цифре соответствует своё значение, например: 1 - привет, 2 - пока, 3 - как дела?. Попробую расписать подробно, что я хочу получить.
АХК читает Ini, в котором есть переменная. Далее, если в этой переменной (например var) будет три значения, написанные через запятую, то будет следующее:
var1 := привет
var2 := пока
var3 := как дела?

Если два значения, например: 3, 2, то так:
var1 := как дела?
var2 := пока

А если в переменной var значений больше, чем 5, то писало бы ошибку.

Не подскажите, как это грамотно реализовать?

2

Re: AHK: Извлечение данных из массива

В одной переменной может быть одно значение. Кажется, Вы решили пойти по какому-то запутанному пути. Проще спросить, что нужно, и получить ответ, как это делается по уму.

3

Re: AHK: Извлечение данных из массива

ypppu, я не знаю, как это правильно расписать.

Есть переменная "statia = 12.8, 12.16 часть 1, 12.16 часть 2". Ахк читает эту переменную, определяет, сколько значений введено (в моем случаи сколько введено статей, они разделяются запятыми). В примере, приведенным чуть ранее введено 3 значения, но может быть и одно "statia = 12.16 часть 1". В переменную statia записываются статьи и всё. Но мне надо, чтобы ахк считывал значения переменной statia, и приписывал к ним обозначения данных статей, которые будут вписаны в другие переменные, например:
statia = 12.16 часть 1
Ахк это видит, и добавляет приписку, которая будет где-нибудь введена.
То есть, должно получится так: "12.16 часть 1 - несоблюдение требований, предписанных дорожными знаками или разметкой проезжей части дороги."
А если в statia будет несколько значений, например:
statia = 12.8, 12.16 часть 2
то так:
"Статья 12.8 КоАП - управление транспортным средством водителем, находящимся в состоянии опьянения, если такие действия не содержат уголовно наказуемого деяния.
Статья 12.16 часть 2 КоАП - поворот налево или разворот в нарушение требований, предписанных дорожными знаками или разметкой проезжей части дороги."

4

Re: AHK: Извлечение данных из массива

Верно ли я понимаю:
Есть файл в котором записаны строки. Необходимо прочесть каждую строку и записать её в АХК скрипт в виде переменной. Далее заменить строки на их 'расширенное' пояснение.

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

5

Re: AHK: Извлечение данных из массива

Думаю, это звучит так.
Задача: сделать функцию. В функцию подаётся строка, разделённая запятыми на подстроки. Каждая подстрока проассоциирована со своей текстовой строкой. (Значит нужно предварительно создать ассоциативный массив.) Функция должна разбить входную строку на подстроки и, используя ассоциативный массив, произвести замену "номер статьи" на "расшифровка статьи". И дать на выходе результат в виде текста.

6

Re: AHK: Извлечение данных из массива

Ну я так и понял.
Для такой задачи думаю подойдёт простая замена через StringReplace.

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

7

Re: AHK: Извлечение данных из массива

Всё верно. Просто не знал как это понятнее объяснить) Не поможете сделать?

8

Re: AHK: Извлечение данных из массива

Необходимы данные, мы ведь не телепаты или экстрасенсы все тут.

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

9

Re: AHK: Извлечение данных из массива

__Михаил__ пишет:

Необходимы данные, мы ведь не телепаты или экстрасенсы все тут.

какие?

10

Re: AHK: Извлечение данных из массива

Morux2112 пишет:

ypppu, я не знаю, как это правильно расписать.

Есть переменная "statia = 12.8, 12.16 часть 1, 12.16 часть 2". Ахк читает эту переменную, определяет, сколько значений введено (в моем случаи сколько введено статей, они разделяются запятыми). В примере, приведенным чуть ранее введено 3 значения, но может быть и одно "statia = 12.16 часть 1". В переменную statia записываются статьи и всё. Но мне надо, чтобы ахк считывал значения переменной statia, и приписывал к ним обозначения данных статей, которые будут вписаны в другие переменные, например:
statia = 12.16 часть 1
Ахк это видит, и добавляет приписку, которая будет где-нибудь введена.
То есть, должно получится так: "12.16 часть 1 - несоблюдение требований, предписанных дорожными знаками или разметкой проезжей части дороги."
А если в statia будет несколько значений, например:
statia = 12.8, 12.16 часть 2
то так:
"Статья 12.8 КоАП - управление транспортным средством водителем, находящимся в состоянии опьянения, если такие действия не содержат уголовно наказуемого деяния.
Статья 12.16 часть 2 КоАП - поворот налево или разворот в нарушение требований, предписанных дорожными знаками или разметкой проезжей части дороги."

Я думаю этих данных вполне хватит, а дальше я как нибуь постараюсь сам. Если нужно еще что-то — напиши.

11

Re: AHK: Извлечение данных из массива


var = 1, 2, 3 

Arr := {1:"привет", 2:"пока", 3:"как дела?"}
ovar := StrSplit(var, ","," ") 

If ovar.Length() > Arr.Count()
	throw "var  > Arr"

for k, v in ovar
{  
	If Arr[v] = ""
		throw "value is empty"
	var%k% := Arr[v]
}
MsgBox % var1 "`n" var2 "`n" var3 "`n" 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: Извлечение данных из массива

serzh82saratov пишет:

var = 1, 2, 3 

Arr := {1:"привет", 2:"пока", 3:"как дела?"}
ovar := StrSplit(var, ","," ") 

If ovar.Length() > Arr.Count()
	throw "var  > Arr"

for k, v in ovar
{  
	If Arr[v] = ""
		throw "value is empty"
	var%k% := Arr[v]
}
MsgBox % var1 "`n" var2 "`n" var3 "`n" 

А как сделать по вот этому примеру?

Morux2112 пишет:
Morux2112 пишет:

ypppu, я не знаю, как это правильно расписать.

Есть переменная "statia = 12.8, 12.16 часть 1, 12.16 часть 2". Ахк читает эту переменную, определяет, сколько значений введено (в моем случаи сколько введено статей, они разделяются запятыми). В примере, приведенным чуть ранее введено 3 значения, но может быть и одно "statia = 12.16 часть 1". В переменную statia записываются статьи и всё. Но мне надо, чтобы ахк считывал значения переменной statia, и приписывал к ним обозначения данных статей, которые будут вписаны в другие переменные, например:
statia = 12.16 часть 1
Ахк это видит, и добавляет приписку, которая будет где-нибудь введена.
То есть, должно получится так: "12.16 часть 1 - несоблюдение требований, предписанных дорожными знаками или разметкой проезжей части дороги."
А если в statia будет несколько значений, например:
statia = 12.8, 12.16 часть 2
то так:
"Статья 12.8 КоАП - управление транспортным средством водителем, находящимся в состоянии опьянения, если такие действия не содержат уголовно наказуемого деяния.
Статья 12.16 часть 2 КоАП - поворот налево или разворот в нарушение требований, предписанных дорожными знаками или разметкой проезжей части дороги."

Я думаю этих данных вполне хватит, а дальше я как нибуь постараюсь сам. Если нужно еще что-то — напиши.

13

Re: AHK: Извлечение данных из массива

Я же вам пример привёл, делайте также.

var = Статья 12.8, Статья 12.16 часть 2

Arr := {"Статья 12.8": "КоАП - управление транспортным средством водителем, находящимся в состоянии опьянения, если такие действия не содержат уголовно наказуемого деяния."
, "Статья 12.16 часть 2": "КоАП - поворот налево или разворот в нарушение требований, предписанных дорожными знаками или разметкой проезжей части дороги."}




ovar := StrSplit(var, ","," ") 

If ovar.Length() > Arr.Count()
	throw "var  > Arr"

for k, v in ovar
{  
	If Arr[v] = ""
		throw "value is empty"
	var%k% := v " " Arr[v] "`n" 
}
MsgBox % var1 "`n" var2 "`n" var3 "`n" 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

14

Re: AHK: Извлечение данных из массива

serzh82saratov, спасибо.