Что нового

_GUICtrlComboBoxEx_GetListArray() возвращает неверное количество элементов

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Если ComboBox пустой, то _GUICtrlComboBoxEx_GetListArray() возвращает 1 в нулевом элементе массива...

Код:
#Include <GUIComboBoxEx.au3>

$hGUI = GUICreate('MyGUI', 400, 300)
$hCombo = _GUICtrlComboBoxEx_Create ($hGUI, '', 2, 2, 394, 268)
GUISetState()

$aList = _GUICtrlComboBoxEx_GetListArray($hCombo)
ConsoleWrite($aList[0] & ' - _GUICtrlComboBoxEx_GetListArray()' & @CR)
ConsoleWrite(_GUICtrlComboBoxEx_GetCount($hCombo) & ' - _GUICtrlComboBoxEx_GetCount()' & @CR)

Do
Until GUIGetMsg() = -3
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Это потому что там используется StringSplit, который при ошибке всегда возвращает два элемента (первый это счётчик, а второй это то что было в оригинальной строке).

Фикс:

Код:
Func _GUICtrlComboBoxEx_GetListArray($hWnd)
	Local $sDelimiter = Opt("GUIDataSeparatorChar")
	Local $aRet = StringSplit(_GUICtrlComboBoxEx_GetList($hWnd), $sDelimiter)
	
	If @error Or _GUICtrlComboBoxEx_GetCount($hWnd) < 1 Then
		$aRet[0] = 0
		SetError(1)
	EndIf
	
	Return $aRet
EndFunc
 
Верх