IniReadKeyNames?

  • Aloha,

    Mein Problem ist, dass ich eine .ini habe, mit vielen Keys. Ich würde jetzt sehr gerne die Keys rauslesen und als Arrays in eine Combo packen.
    Es gibt ja die Funktion IniReadSectionNames.

    Nun die Frage, wie kriege ich eine Art "IniReadKeyNames" hin?
    Mit FileRead und StringBetween?!?

    Danke im Vorraus

    Goaku

    Einmal editiert, zuletzt von Goaku (28. April 2010 um 19:50)

    • Offizieller Beitrag

    Für was gibt es IniReadSection ?

    Zitat

    Return Value

    Success: Returns a 2 dimensional array where element[n][0] is the key and element[n][1] is the value.

  • Keys und Keynames ist bei dir das selbe?
    Und das alles in einem Array? Du hast dich ziemlich missverständlich ausgedrückt.
    Meine interpretation:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    Global $keys[1]
    Global $file = @WindowsDir & "\win.ini"

    [/autoit] [autoit][/autoit] [autoit]

    $var = IniReadSectionNames($file)
    If Not @error Then
    For $i = 1 To UBound($var) - 1
    $section = IniReadSection($file, $var[$i])
    If Not @error Then
    For $j = 1 To $section[0][0]
    _ArrayAdd($keys, $section[$j][0])
    Next
    EndIf
    Next
    EndIf
    $keys[0] = UBound($keys)
    _ArrayDisplay($keys)

    [/autoit]
  • Zitat von Hilfe

    IniReadSection

    Liest alle Schlüssel-/Wert-Paare aus einer Sektion einer standardkonformen .ini-Datei.

    IniReadSection ( "filename", "section" )

    hier ein zusammenkopiertes Beispiel aus der Hilfe zu IniReadSectionNames und IniReadSection:

    Spoiler anzeigen
    [autoit]

    $sIniName = @WindowsDir & "\win.ini"
    $var = IniReadSectionNames($sIniName)
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Wahrscheinlich keine INI Datei vorhanden.")
    Else
    For $i = 1 To $var[0]
    _readSectionKeys($var[$i])
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Func _readSectionKeys($sSection)
    Local $var2 = IniReadSection($sIniName, $sSection)
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else
    For $i = 1 To $var2[0][0]
    MsgBox(4096, $sSection, "Schlüssel: " & $var2[$i][0] & @CRLF & "Wert: " & $var2[$i][1])
    Next
    EndIf
    EndFunc

    [/autoit]

    mfg (Auto)Bert

  • [autoit]

    #include <String.au3>
    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    $array=IniReadSection("datei.ini","section") ;ließt section aus
    ;_ArrayDisplay($array) ->hiermit könntest du dir das ergebnis anzeigen lassen
    $end=$array[0][0] ;in [0][0] steht die gesamtzahl der einträge
    $var=$array[1][0]

    [/autoit][autoit][/autoit][autoit]

    For $i=2 to $end step 1
    $var=$var&'|'&$array[$i][0] ;verknüpft ausgaben miteinander
    Next

    [/autoit][autoit][/autoit][autoit]

    ;MsgBox(0,"test",$var)->ausgabe des gesamtstrings

    [/autoit]

    ist meiner meinung nach der leichteste weg -> $var ist schon so formatiert, dass du sie direkt in die combobox stecken kannst du musst nur datei.ini und section ändern

    Einmal editiert, zuletzt von luckylukas92 (28. April 2010 um 00:09)

  • Ich will auch mal ;). Ein Beispielscript.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $aIni[1][3] = [["- Sektion -", "- Schlüssel -", "- Wert -"]]

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aIni)

    [/autoit] [autoit][/autoit] [autoit]

    $sFile = @ScriptDir & "\Daten.ini"

    [/autoit] [autoit][/autoit] [autoit]

    $aIniSectionNames = IniReadSectionNames($sFile)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aIniSectionNames[0]
    $aIniSection = IniReadSection($sFile, $aIniSectionNames[$i])
    For $k = 1 To $aIniSection[0][0]
    ReDim $aIni[UBound($aIni) + 1][3]
    $aIni[UBound($aIni) - 1][0] = $aIniSectionNames[$i]
    $aIni[UBound($aIni) - 1][1] = $aIniSection[$k][0]
    $aIni[UBound($aIni) - 1][2] = $aIniSection[$k][1]
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aIni)

    [/autoit]
  • Viele Dank für eure Posts, ich hab das erstmal alles überflogen und denke, dass das richtige dabei ist. Danke vielmals^^
    ps: Liebe dieses Forum xD