比较两个.ini文件条目数组 [英] Compare two arrays of .ini file entries
问题描述
我有一个.ini文件,如下所示:
I have one .ini file as below:
[Step]
A=DONE
B=DONE
C=DONE
D=DONE
我需要获取[Step]
部分并将其放入数组中.以下是我的工作:
I need to get the [Step]
section and put it in an array . Below is what I do:
$iniSection_Step = "Step"
$PrevStep = ""
Local $Prev = IniReadSection($iniPath_LogFile, $iniSection_Step)
For $i = 1 To $Prev[0][0]
$PrevStep = $PrevStep &"|"& $Prev[$i][0]
Next
Global $PrevArray = StringSplit($PrevStep,"|",1)
_ArrayDisplay()
结果:
Row|Col 0
[0]|5
[1]|
[2]|A
[3]|B
[4]|C
[5]|D
现在,我需要将数组与另一个数组进行比较,如果两个数组中都存在一个元素,它将使一个数组递增.
Now I need to compare the array with another and if an element exists in both, it will increment one array.
For $j = 0 To UBound($array_StepComplete) - 1
if StringInStr($array_StepComplete[$j],$PrevArray[$i]) Then
GUICtrlSetData($Input_PresentStep,$array_StepComplete[$j+1])
EndIf
Next
这将增加一个数组,但是如果有人删除.ini文件的内容,如下所示:
This will increment one array but if someone deletes the content of .ini file as below:
[Step]
A=DONE
C=DONE
D=DONE
代码将递增一个数组,但不会检查元素是否存在.
The code will increment one array but it does not check if the element exists.
推荐答案
我的理解:Compare two arrays and do some action if two elements match.
首先,您需要清除所有内容. 您想比较什么? 顺序很明显很重要 ..所以我决定动态数组 >首先,如果找到匹配的对,出于资源原因,我也会退出循环...
First you need to clear things up. What do you want to compare? The order obvious does matter .. so I decided to Loop on the dynamical array first and if I found a matching pair I also exiting the loop for resource reasons ...
Local $aSteps = IniReadSection("Steps.ini", "Step")
If @error Then
ConsoleWrite("#1 An error occured while reading the 'Steps.ini' file." & @CRLF)
Exit
EndIf
Local $aAllsteps = IniReadSection("Steps.ini", "Allsteps")
If @error Then
ConsoleWrite("#2 An error occured while reading the 'Steps.ini' file." & @CRLF)
Exit
EndIf
; loop on the dynamical array first
For $i = 1 To $aSteps[0][0]
; then loop on the static array for each element
For $y = 1 To $aAllsteps[0][0]
; check if the elements match
If $aSteps[$i][0] = $aAllsteps[$y][0] Then
; if the element match print out and exit loop for resource reason
ConsoleWrite("MATCH - " & $aSteps[$i][0] & @CRLF)
ExitLoop
EndIf
Next
Next
Steps.ini
[Step]
A=DONE
C=DONE
D=DONE
[Allsteps]
A=DONE
B=DONE
C=DONE
D=DONE
输出
MATCH - A
MATCH - C
MATCH - D
这篇关于比较两个.ini文件条目数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!