jj119120 发表于 2021-10-7 11:59:08

【已解决】_ArrayDisplay数组显示为一堆array的解决办法

本帖最后由 jj119120 于 2021-10-7 17:32 编辑

先上代码,运行后点搜索,显示数组那里看不到具体内容全是array,但如果_ArrayDisplay($aResult1,"显示数组","","64")改为_ArrayDisplay($aResult1,"显示数组","","64")却又能正确显示,但只能显示一个结果,不知道哪里出错了
配合使用的excel表格https://www.lanzouw.com/ipPvFv0zpub
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 324, 40, 459, 157)
$Input1 = GUICtrlCreateInput("关于", 8, 8, 225, 21, $ES_MULTILINE, $WS_EX_ACCEPTFILES)
GUICtrlSetState($Input1, $GUI_DROPACCEPTED)
$Button1 = GUICtrlCreateButton("搜索", 240, 8, 73, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Local $oExcel = _Excel_Open(False, False, False, False, True)
Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\特种作业考试题库题库.xls")
Local $xinzuobiao0, $xinzuobiao,$j
Global $aResult1
While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        _Excel_Close($oExcel, False, True);关闭EXCEL
                        Exit
                Case $Button1
                        cl()
      EndSwitch
WEnd

Func cl()
      $neirong = GUICtrlRead($Input1);处理$Input1的内容以便搜索
      $aResult = _Excel_RangeFind($oWorkbook, $neirong);查找EXCEL
      $j=UBound($aResult) - 1;获取最大值
      For $h = 0 To $j;从0到最大值
                $xinzuobiao0 = StringReplace($aResult[$h], "$", "");获取单元格地址,并去掉$
                $xinzuobiao = $xinzuobiao0 & ":" & StringReplace($xinzuobiao0, StringLeft($xinzuobiao0, 1), "I");单元格地址范围
                $aResult1[$h] = _Excel_RangeRead($oWorkbook, 1, $xinzuobiao);读取指定单元格地址范围的内容
      Next
      _ArrayDisplay($aResult1,"显示数组","","64");显示数组
EndFunc   ;==>cl


yuantian 发表于 2021-10-7 12:57:42

本帖最后由 yuantian 于 2021-10-7 13:04 编辑

不知道你是想把所有内容都获取,还是仅仅获取答案啊。。。。

获取所有相关的内容的话,只改两个地方:
1、第18行,这里应该是二维数组,不是一维数组。
2、第37行,这里用_ArrayAdd也行


=================
第18行:改为:
Global $aResult1====================
第37行:
改为
$TmpResult = _Excel_RangeRead($oWorkbook, 1, $xinzuobiao);获取查询的行信息
If $h = 0 Then ReDim $aResult1;调整数组列
_ArrayAdd($aResult1, $TmpResult);读取指定单元格地址范围的内容增加内容是为了调整18行的二维数组列
====================


图:


=====================
仅仅是我自己一点的想法

sh1536 发表于 2021-10-7 13:12:57

本帖最后由 sh1536 于 2021-10-7 13:19 编辑

那是因为第37行取到的值是数组,论坛有个专门调试变量的UDF叫“DD.au3”,搜索一下,加在程序里就可以看到$aResult1整个数组$aResult1[$h] = _Excel_RangeRead($oWorkbook, 1, $xinzuobiao);读取指定单元格地址范围的内容
例如,搜索“气体”,可以看到$aResult1整个数组的值,具体怎么修改就看你的需求是怎么样的


PS:帖子标题似乎违规了,不利于检索,看看版规

jj119120 发表于 2021-10-7 17:28:20

sh1536 发表于 2021-10-7 13:12
那是因为第37行取到的值是数组,论坛有个专门调试变量的UDF叫“DD.au3”,搜索一下,加在程序里就可以看到$ ...

我不知道怎么问这个问题啊   标题也不知道说什么好   一会改下

jj119120 发表于 2021-10-7 17:30:18

yuantian 发表于 2021-10-7 12:57
不知道你是想把所有内容都获取,还是仅仅获取答案啊。。。。

获取所有相关的内容的话,只改两个地方:


十分感谢,问题解决了,原先是被帮助误导了   帮助里这样写的_Excel_RangeRead返回指定单元格的数据. 单元格字符串, 单元格范围的 0 基数组.   以为是一维数组

afan 发表于 2021-10-8 07:43:39

显示 {Array} 的元素自身也是数组,_ArrayDisplay无法显示数组中的数组,要查看这种需单独取值查看
页: [1]
查看完整版本: 【已解决】_ArrayDisplay数组显示为一堆array的解决办法