找回密码
 加入
搜索
查看: 1112|回复: 5

[网络通信] 【已解决】_ArrayDisplay数组显示为一堆array的解决办法

[复制链接]
发表于 2021-10-7 11:59:08 | 显示全部楼层 |阅读模式
本帖最后由 jj119120 于 2021-10-7 17:32 编辑

先上代码,运行后点搜索,显示数组那里看不到具体内容全是array,但如果_ArrayDisplay($aResult1,"显示数组","","64")改为_ArrayDisplay($aResult1[0],"显示数组","","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[30]
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][2], "$", "");获取单元格地址,并去掉$
                $xinzuobiao = $xinzuobiao0 & ":" & StringReplace($xinzuobiao0, StringLeft($xinzuobiao0, 1), "I");单元格地址范围
                $aResult1[$h] = _Excel_RangeRead($oWorkbook, 1, $xinzuobiao);读取指定单元格地址范围的内容
        Next
        _ArrayDisplay($aResult1,"显示数组","","64");显示数组
EndFunc   ;==>cl

发表于 2021-10-7 12:57:42 | 显示全部楼层
本帖最后由 yuantian 于 2021-10-7 13:04 编辑

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

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


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


图:


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 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:帖子标题似乎违规了,不利于检索,看看版规

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

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

我不知道怎么问这个问题啊   标题也不知道说什么好   一会改下
 楼主| 发表于 2021-10-7 17:30:18 | 显示全部楼层
yuantian 发表于 2021-10-7 12:57
不知道你是想把所有内容都获取,还是仅仅获取答案啊。。。。

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

十分感谢,问题解决了,原先是被帮助误导了   帮助里这样写的_Excel_RangeRead返回指定单元格的数据. 单元格字符串, 单元格范围的 0 基数组.   以为是一维数组
发表于 2021-10-8 07:43:39 | 显示全部楼层
显示 {Array} 的元素自身也是数组,_ArrayDisplay无法显示数组中的数组,要查看这种需单独取值查看
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-9 02:15 , Processed in 0.072286 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表