Meine "gefixte" Version wäre so HansJ54 :
AutoIt
Opt('MustDeclareVars', 1)
#include <Array.au3>
Global $sIniDatei = @ScriptFullPath
Global $aErgebnis = Ini2Array($sIniDatei, True, True) ; sort sections and keys
$aErgebnis[0][0] = "Client"
Local $aRowLatest = _ArrayFindAll($aErgebnis, "Latest-->") ; row for latest version
For $i = 1 To UBound($aErgebnis, $UBOUND_COLUMNS) - 1
$aErgebnis[$aRowLatest[0]][$i] = _ArrayMax($aErgebnis, 0, 1, $aRowLatest[0], $i)
Next
_ArrayDisplay($aErgebnis, "Browser- und WebDriver-Versionen", "1:", $ARRAYDISPLAY_NOROW + $ARRAYDISPLAY_COLALIGNCENTER, Default, _ArrayToString($aErgebnis, "|", 0, 0))
Func Ini2Array($sIni, $bSortSections = False, $bSortKeys = False, $bTranspose = False, $sEmptyField = "---") ;Habe auch mal den "Füller" für leere Felder Optional gemacht, nicht jeder mag das dort etwas drin steht obwohl dort nix drin steht^^
Local $sSection
Local $aSectionNames = IniReadSectionNames($sIni)
;~ If @error Then Return SetError(@error, 0, 0); Aus meiner Sicht greift das nicht, da du in deiner Funktion keinen Seterror nutzt und somit überflüssig
Local $aKeys = IniGetAllKeys($sIni)
Local $aResult[$aSectionNames[0] + 1][$aKeys[0] + 1] ;Ubound unnötig, da bei allen Arrays die Anzahl mit übergeben werden
; Das sortieren ist kritisch, wenn ein Schlüssel Zahlen enthält passt das ganz so nicht mehr, daher geändert.
If $bSortSections Then _ArraySort($aSectionNames, Default, 1)
If $bSortKeys Then _ArraySort($aKeys, Default, 1)
For $I = 1 To $aKeys[0]
$aResult[0][$I] = $aKeys[$I]
Next
For $I = 1 To $aSectionNames[0]
$sSection = $aSectionNames[$I]
$aResult[$I][0] = $sSection
For $J = 1 To $aKeys[0]
$aResult[$I][$J] = IniRead($sIni, $sSection, $aKeys[$J], $sEmptyField)
Next
Next
If $bTranspose Then _ArrayTranspose($aResult)
Return $aResult
Endfunc
Func IniGetAllKeys($sIni)
Local $sData = "|"
Local $aSectionNames = IniReadSectionNames($sIni)
If @error Then Return SetError(@error, 0, 0)
For $i = 1 To $aSectionNames[0]
Local $aInhalt = IniReadSection($sIni, $aSectionNames[$i])
If @error = 0 Then
For $j = 1 To $aInhalt[0][0]
If Not StringInStr($sData, "|" & $aInhalt[$j][0] & "|") Then $sData &= $aInhalt[$j][0] & "|"
Next
EndIf
Next
If StringRight($sData, 1) = "|" Then $sData = StringTrimRight($sData, 1)
Local $aKeys[0]
_ArrayAdd($aKeys, $sData)
$aKeys[0] = Ubound($aKeys) - 1 ;Lieber direkt die Anzahl mit übergeben, da hier so oder so Zeile 0 leer ist
Return $aKeys
EndFunc
#Region eingebettete INI
#cs
[Latest-->]
[BLP1-WX]
EdgeVersion=105.0.1293.63
FirefoxVersion=103.0.3.8255
ChromeVersion=105.0.5112.102
OfficeVersion=16.0.10389.20033
[BLP3-WX]
ChromeVersion=104.0.5112.102
EdgeVersion=104.0.1293.63
FirefoxVersion=103.0.2.8255
OfficeVersion=16.0.10389.20033
[BLP2-WX]
EdgeVersion=104.0.1293.63
ChromeVersion=104.0.5112.102
FirefoxVersion=103.0.2.8255
OfficeVersion=16.0.10389.20033
[BLP4-WX]
ChromeVersion=104.0.5112.102
EdgeVersion=105.0.1293.63
FirefoxVersion=104.0.2.8255
OfficeVersion=16.0.10389.20033
[BLP5-WX]
ChromeVersion=104.0.5112.102
EdgeVersion=104.0.1293.63
FirefoxVersion=103.0.2.8255
OfficeVersion=16.0.10389.20033
[BLP6-WX]
ChromeVersion=104.0.5112.102
EdgeVersion=104.0.1293.63
FirefoxVersion=103.0.2.8255
OfficeVersion=16.0.10389.20033
[WebDriver]
ChromeVersion=104.0.5112.79
EdgeVersion=104.0.1293.63
FirefoxVersion=0.31.1
#ce
#EndRegion eingebettete INI
Alles anzeigen