Что нового

[Элементы GUI] Определение наибольшего значения в полях ввода

eus_deus

Новичок
Сообщения
118
Репутация
0
Здравствуйте!
Есть форма приложения с кучей текстовых полей (поля заполняются при старте с ini файла, через двумерный массив).
Нужно при старте определять наибольшее значение и закрашивать цветом поле, следующее ниже на найденным. Прошу прощения, что не могу отправить код - пока вдали от своего компьютера. Пробовал _ArrayMaxIndex, получал -1. Наверное, функция только для одномерных массивов.Спасибо!
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
рад бы был, ну нет у меня своего компьютера рядом и версию автоита я просто не знаю. простите


Добавлено:
Сообщение автоматически объединено:

вот примерно так там было... он просто в ремонт ушел

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

Global $Veli=IniReadSection($stat ,"Veli")
Global $Label_veli[6]=[5]
Global $Button_veli[6]=[5]
Global $Input_veli[6]=[5]

$Form1 = GUICreate("Учет", 910, 530, -1, -1)
$Label_veli[$a] = GUICtrlCreateLabel($Veli_persi[$a], 20, $a*32+88, 130, 25)
GUICtrlSetFont($Label_veli[$a], 10, 600, 0, "MS Sans Serif")
$Button_veli[$a] = GUICtrlCreateButton("", 170, $a*32+88, 25, 25, $BS_ICON)
$Input_veli[$a] = GUICtrlCreateInput("", 200, $a*32+88, 50, 25)
Next
GUISetState(@SW_SHOW)
_open_stat()
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
EndSwitch
WEnd

Func _open_stat()
For $i=1 to 5
GUICtrlSetData($Input_veli[$i],$Veli[$i][1])  
Next
EndFunc





Добавлено:
Сообщение автоматически объединено:

вот мне и надо при старте в функции open_stat определять, какое значение в ini файле максимальное и закрашивать input, который идет сразу ниже
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
eus_deus [?]
Наверное, функция только для одномерных массивов
Верно. Поэтому преобразуйте двумерный массив в одномерный массив значений параметров
Код:
#include <Array.au3>

; заполнение массива - имитация IniReadSection из 10 параметров
Global $n = 11
Global $ar2D[$n][2] = [[$n-1,0]]
For $i = 1 To $n - 1
  $ar2D[$i][1] = Random(0, 10, 1)
Next
_ArrayDisplay($ar2D)

; преобразование в одномерный
Global $ar1D[$n] = [-100]
For $i = 1 To $n - 1
  $ar1D[$i] = $ar2D[$i][1]
Next
_ArrayDisplay($ar1D)

; максимальный индекс
MsgBox(0, "", _ArrayMaxIndex($ar1D))
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
InnI, нечто странное... Массив преобразуется нормально, а вот индексы абсолютно не те...
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
eus_deus
Попробуйте так
Код:
Global $Veli = IniReadSection($stat, "Veli")
Global $Idx, $Max = -100
For $i = 1 To $Veli[0][0]
  If Int($Veli[$i][1]) > Int($Max) Then
    $Max = $Veli[$i][1]
    $Idx = $i
  EndIf
Next
ConsoleWrite("Индекс: " & $Idx & ", Значение: " & $Veli[$Idx][1] & @CRLF)
 
Автор
E

eus_deus

Новичок
Сообщения
118
Репутация
0
InnI, выручили! По второму варианту работает как положено. Тема решена!
 
Верх