比较两个 .ini 文件条目数组

Compare two arrays of .ini file entries

我有一个 .ini 文件如下:

[Step]
A=DONE
B=DONE
C=DONE
D=DONE

我需要获取 [Step] 部分并将其放入一个数组中。以下是我所做的:

$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

现在我需要将数组与另一个数组进行比较,如果两个数组中都存在一个元素,它将递增一个数组。

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 文件的内容,如下所示:

  [Step]
  A=DONE

  C=DONE
  D=DONE

该代码将递增一个数组,但不会检查该元素是否存在。

我的理解:Compare two arrays and do some action if two elements match.

首先你需要把事情弄清楚。 你想比较什么?顺序显而易见很重要 ..所以我决定首先在动态数组上循环,如果找到匹配对,我也会出于资源原因退出循环...

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