1

Тема: AHK: проблема с извлеченными из ListView данными

Здравствуйте,

Данные математических операций помещаются в ListView. При следующей операции они должны извлекаться и суммироваться по определенному критерию.

Однако выяснилось, что после извлечения из ListView с данными невозможно произвести некоторые операции:


...
LV_GetText(ThisPTV, A_Index, 8)
ThisPTV := ThisPTV / 10 * 10
ToolTip, %A_Index% PTV: %ThisPTV% Total: %ThisTripPTVDistance%, 700, 10, 5
...

Работает. А вот


...
LV_GetText(ThisPTV, A_Index, 8)
ThisPTV := ThisPTV / 10 * 10
ThisTripPTVDistance := ThisTripPTVDistance + ThisPTV
ToolTip, %A_Index% PTV: %ThisPTV% Total: %ThisTripPTVDistance%, 700, 10, 5
...

Уже не работает. Насколько понял, какие-то проблемы с форматом.
Подскажите, как обойти?
Кстати, пример ниже опять работает:


...
LV_GetText(ThisPTV, A_Index, 8)
ThisPTV := ThisPTV / 10 * 10

ThisPTV := 5000

ThisTripPTVDistance := ThisTripPTVDistance + ThisPTV
ToolTip, %A_Index% PTV: %ThisPTV% Total: %ThisTripPTVDistance%, 700, 10, 5
...

2

Re: AHK: проблема с извлеченными из ListView данными

equipment66 пишет:

после извлечения из ListView с данными невозможно произвести некоторые операции

Честно говоря, странный вопрос. Невозможно произвести числовые операции — значит в переменной не число.

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

3

Re: AHK: проблема с извлеченными из ListView данными

teadrinker

Число, вообще-то. К нему можно добавит или отнять, делить или умножать. Нельзя только сложить содержание 2 переменных.

4

Re: AHK: проблема с извлеченными из ListView данными

Значит, во второй не число.

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

5

Re: AHK: проблема с извлеченными из ListView данными

teadrinker

Еще вспомнилось, числа извлеченные из ListView невозможно сравнить обычным образом. То есть,



LV_GetText(Value1, A_Index, 8)
LV_GetText(value2, A_Index + 1, 8)
....
If Value1 = %Value2%
{
	...
}

У меня не работает. Вместо этого использую


If % Value1 - Value2 = 0

6 (изменено: equipment66, 2016-10-11 13:29:04)

Re: AHK: проблема с извлеченными из ListView данными

teadrinker

Teadrinker, элементарные причины я исключил перед тем, как тратить ваше драгоценное время. Во второй изначально ноль, потом результат суммы. Все работает, если первой переменной явно присвоить число (пример № 3).

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

7

Re: AHK: проблема с извлеченными из ListView данными

equipment66 пишет:

Еще вспомнилось, числа извлеченные из ListView невозможно сравнить обычным образом.

Это суеверие, бросьте.

Gui, Add, ListView, w300 h200, Col1|Col2|Col3
for k, v in [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
   LV_Add("", v*)
Gui, Show
Sleep, 1000
LV_GetText(Value1, 2, 2)
LV_GetText(Value2, 3, 1)

If Value1 = %Value2%
   MsgBox, Равно
else
   MsgBox, Не равно

Только вот так

If Value1 = %Value2%

не надо писать, выглядит странно. Лучше так

If (Value1 = Value2)
equipment66 пишет:

Единственное, чего я еще не сделал, не пробовал скрипт на другой машине.

Не-а, главное, чего вы не сделали, так это не проверили, что точно находится в переменных непосредственно перед проблемным местом.

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

8

Re: AHK: проблема с извлеченными из ListView данными

teadrinker

Увы, вы оказались правы. В одной из ячеек не было значения, в результате переменная оказывалась пустой...
Пошел горестно осознавать свою неправоту...