|
楼主 |
发表于 2016-11-12 19:24:56
|
显示全部楼层
$FRTA_INTARRAYS (2) - 创建 "array of arrays"(全数组的单数组) - 参见备注
帮助没看懂,没明白全数组的单数组.....是啥意思
备 注
如果不指定分隔符, 则函数返回一个 1 维数组, 并且每个元素保存文件的一行内容 - 行尾可以是 @CR, @LF 与 @CRLF 的任何组合.
当指定分隔符时函数将试图进一步拆分文件的每一行 - 如何做到这一点取决于 $FRTA_INTARRAYS 标志的设置.
如果该标志没有被设置, 并且每行有相同的字段数, 则使用分隔符拆分后创建一个 2 维数组. 如果不是这样, 则 @error 被设置为 3, 并且数组没有返回.
如果设置了 $FRTA_INTARRAYS 标志, 函数创建一个 1 维数组, 每个元素保留的字段可以用分隔符进一步拆分为数组 - 行不需要具有相同的字段数. 看下面的例子.
如果分隔符是多个单字符, 则 $FRTA_ENTIRESPLIT 标志的设置决定拆分方法. #include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
Local $aRetArray, $sFilePath = @TempDir & "\Test.txt"
; 创建 1 维数组
Local $aArray[] = ["0", "1", "2", "3", "4"]
; 写到文件
_FileWriteFromArray($sFilePath, $aArray, Default, Default, @CRLF)
Sleep(1000)
; 重读 - 并计数
_FileReadToArray($sFilePath, $aRetArray)
_ArrayDisplay($aRetArray, "1 维数组 - 计数", Default, 8)
; 重读 - 不计数
_FileReadToArray($sFilePath, $aRetArray, $FRTA_NOCOUNT)
_ArrayDisplay($aRetArray, "1 维数组 - 无计数", Default, 8)
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; 创建 "square" 2 维数组
Local $aArray[][] = [ _
["00", "01", "02", "03"], _
["10", "11", "12", "13"], _
["20", "21", "22", "23"], _
["30", "31", "32", "33"]]
_ArrayDisplay($aArray, "Original", Default, 8)
; 写到文件
_FileWriteFromArray($sFilePath, $aArray, Default, Default, ",")
Sleep(1000)
; 重读 - 并计数
_FileReadToArray($sFilePath, $aRetArray, Default, ",")
_ArrayDisplay($aRetArray, "2 维数组 - 计数", Default, 8)
; 重读 - 不计数
_FileReadToArray($sFilePath, $aRetArray, $FRTA_NOCOUNT, ",")
_ArrayDisplay($aRetArray, "2 维数组 - 无计数", Default, 8)
; 读入 "array of arrays" 并计数
_FileReadToArray($sFilePath, $aRetArray, $FRTA_COUNT + $FRTA_INTARRAYS, ",")
_ArrayDisplay($aRetArray, "arrays 数组 - 计数", Default, 8)
; 现在看 arrays 内部返回的数组
_ArrayDisplay($aRetArray[1], "RetArray 内部数组 1 - 计数", Default, 8)
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; 改写 2 维数组与多个分隔符
_FileWriteFromArray($sFilePath, $aArray, Default, Default, ":|")
Sleep(1000)
; 重读, 每个分隔符作为一个拆分点
_FileReadToArray($sFilePath, $aRetArray, $FRTA_NOCOUNT, ":|")
_ArrayDisplay($aRetArray, "拆分每个字符", Default, 8)
; 重新读取,整个分隔符作为一个拆分点
_FileReadToArray($sFilePath, $aRetArray, $FRTA_NOCOUNT + $FRTA_ENTIRESPLIT, ":|")
_ArrayDisplay($aRetArray, "完整分隔符拆分", Default, 8)
FileDelete($sFilePath)
EndFunc ;==>Example
#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
; 定义一个传递给 _FileReadToArray() 的变量.
Local $aArray = 0
; 使用先前定义的变量读取当前文件到数组.
; 指定 $iFlag 为 0, 不定义数组元素计数. 使用 UBound() 查找数组的大小.
If Not _FileReadToArray(@ScriptFullPath, $aArray, 0) Then
MsgBox($MB_SYSTEMMODAL, "", "读取该文件时出错. @error: " & @error) ; 读取当前文件时出错.
EndIf
; 调用 _ArrayDisplay 函数显示该数组.
_ArrayDisplay($aArray)
EndFunc ;==>Example
|
|