Здравствуйте!
Подскажите в чем подвох?
Есть файл экселя такого содержания
С помощью _ExcelReadSheetToArray делаю массив.
Проверяю вывод массива _ArrayDisplay
Вроде все корректно.
Далее например идет вот такой вот код:
И вижу в комбобоксе, что колонка с именами искажена!
Если встречались одинаковые значения то они воспринимаються как одно и размер колонки массива сокращается
(все повторы не выводяться)
и соответственно весь код работает неккоректно.
Что посоветуете?
Это глюк, или я что то не учел?
Подскажите в чем подвох?
Есть файл экселя такого содержания
1 Коля Иванов
2 Петя Сидоров
3 Вася Барашкин
4 Оля Тихонькая
5 Таня Зорина
6 Коля Трехин
7 Петя Козликов
8 Валя Друникова
9 Катя Сотникова
10 Катя Дубцова
С помощью _ExcelReadSheetToArray делаю массив.
Проверяю вывод массива _ArrayDisplay
Вроде все корректно.
[1]|1|Коля|Иванов|
[2]|2|Петя|Сидоров|
[3]|3|Вася|Барашкин|
[4]|4|Оля|Тихонькая|
[5]|5|Таня|Зорина|
[6]|6|Коля|Трехин|
[7]|7|Петя|Козликов|
[8]|8|Валя|Друникова|
[9]|9|Катя|Сотникова|
[10]|10|Катя|Дубцова||
Далее например идет вот такой вот код:
Код:
#include <ComboConstants.au3>
#include <GUIConstants.au3>
#include <Array.au3>
#include <Excel.au3>
$sFilePath = (@ScriptDir & "\Accounts.xls")
$oExcel = _ExcelBookOpen($sFilePath, 0)
$aAccount = _ExcelReadSheetToArray($oExcel, 1, 1, 0, 0, True)
_ArrayDisplay($aAccount)
_ExcelBookClose($oExcel)
GUICreate ("test", 240, 160)
;~ *******************************************************
$Account1 = GUICtrlCreateCombo ("", 20, 20, 50, 20)
;~ *******************************************************
$Account2 = GUICtrlCreateCombo ("", 20, 50, 200, 20)
;~ *******************************************************
$Account3 = GUICtrlCreateCombo ("", 20, 80, 200, 20)
;~ *******************************************************
$bEnter = GUICtrlCreateButton ("GO!", 65, 120, 120, 30)
;~ *******************************************************
Sleep(50)
_DataSetCombo1 ()
Sleep(50)
_GetIndexAccount1 ()
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Account1
_GetIndexAccount1 ()
Case $Account2
_GetIndexAccount2 ()
Case $Account3
_GetIndexAccount3 ()
Case $bEnter
$rAccount1 = GUICtrlRead ($Account1)
$rAccount2 = GUICtrlRead ($Account2)
$rAccount3 = GUICtrlRead ($Account3)
MsgBox (48, "User", $rAccount1 & " - " & $rAccount2 & " " & $rAccount3)
EndSwitch
WEnd
Func _DataSetCombo1 ()
For $i = 1 To 11 - 1
GUICtrlSetData ($Account1, $aAccount[$i][0], $aAccount[1][0])
GUICtrlSetData ($Account2, $aAccount[$i][1], $aAccount[1][1])
GUICtrlSetData ($Account3, $aAccount[$i][2], $aAccount[1][2])
Next
EndFunc
Func _GetIndexAccount1 ()
$n = GUICtrlSendMsg ($Account1, $CB_GETCURSEL,-1,0)
GUICtrlSetData ($Account2, $aAccount[$n+1][1])
GUICtrlSetData ($Account3, $aAccount[$n+1][2])
EndFunc
Func _GetIndexAccount2 ()
$n = GUICtrlSendMsg ($Account2, $CB_GETCURSEL,-1,0)
GUICtrlSetData ($Account1, $aAccount[$n+1][0])
GUICtrlSetData ($Account3, $aAccount[$n+1][2])
EndFunc
Func _GetIndexAccount3 ()
$n = GUICtrlSendMsg ($Account2, $CB_GETCURSEL,-1,0)
GUICtrlSetData ($Account1, $aAccount[$n+1][0])
GUICtrlSetData ($Account2, $aAccount[$n+1][1])
EndFunc
И вижу в комбобоксе, что колонка с именами искажена!
Если встречались одинаковые значения то они воспринимаються как одно и размер колонки массива сокращается

и соответственно весь код работает неккоректно.
Что посоветуете?
Это глюк, или я что то не учел?