Fehlermeldung am Script

  • Hallo,

    ich hab eine kleine Funktion erstellt, doch es kommt immer ein Fehler:

    [Blockierte Grafik: http://download.lima-city.de/deepred/Bilder/385318298862564201.png]

    Mein Script:

    Spoiler anzeigen
    [autoit]

    Dim $Array[5]

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

    $Array[0] = "Eintrag1"
    $Array[1] = "Eintrag2"
    $Array[2] = "Eintrag3"
    $Array[3] = "Eintrag4"
    $Array[4] = "Eintrag5"

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

    _INI_Write_Array(@ScriptDir & "\Test.ini", "FDFDFD", "TESTDFF", $Array)

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

    Func _INI_Write_Array($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, $_SR_INI_Array)
    Local $INI_Var_Funktion = 0
    $INI_Bound_Array = UBound($_SR_INI_Array)
    For $INI_Var = 0 To $INI_Bound_Array
    If $INI_Var_Funktion = 0 Then
    $INI_Read_INI = IniRead($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, "")
    IniWrite($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, $_SR_INI_Array[$INI_Var])
    $INI_Var_Funktion = 1
    Else
    $INI_Read_INI = IniRead($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, "")
    IniWrite($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, $INI_Read_INI & "|" & $_SR_INI_Array[$INI_Var])
    EndIf
    Next
    EndFunc ;==>_INI_Write_Array

    [/autoit]
    • Offizieller Beitrag

    Eventuell so :

    Spoiler anzeigen
    [autoit]

    Dim $Array[5]

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

    $Array[0] = "Eintrag1"
    $Array[1] = "Eintrag2"
    $Array[2] = "Eintrag3"
    $Array[3] = "Eintrag4"
    $Array[4] = "Eintrag5"

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

    _INI_Write_Array(@ScriptDir & "\Test.ini", "FDFDFD", "TESTDFF", $Array)

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

    Func _INI_Write_Array($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, $_SR_INI_Array)
    Local $INI_Var_Funktion = 0
    $INI_Bound_Array = UBound($_SR_INI_Array)-1
    For $INI_Var = 0 To $INI_Bound_Array
    If $INI_Var_Funktion = 0 Then
    $INI_Read_INI = IniRead($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, "")
    IniWrite($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, $_SR_INI_Array[$INI_Var])
    $INI_Var_Funktion = 1
    Else
    $INI_Read_INI = IniRead($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, "")
    IniWrite($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, $INI_Read_INI & "|" & $_SR_INI_Array[$INI_Var])
    EndIf
    Next

    [/autoit]
  • Achtung Ubound-Falle ;)
    Array: 10 Einträge
    Index 0...9
    Ubound: 10 (Anzahl der Einträge)
    letzer Index: Anzahl-1

    //Edit: und das abdauernde Iniread -> Inwrite sind ein paar unnötige Schreibzugriffe.

  • Erst den String zusammenfügen und dann schreiben.

    [autoit]

    Func _INI_Write_Array($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, $_SR_INI_Array)
    Local $INI_Var, $INI_Str=""
    Local $INI_Bound_Array = UBound($_SR_INI_Array)
    For $INI_Var = 0 To $INI_Bound_Array-1
    $INI_Str &= $_SR_INI_Array[$i] & "|"
    Next
    $INI_Str = StringTrimRight($INI_Str,1) ;letzen Separator entfernen
    Local $Write = IniWrite($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, $INI_Str)
    Return SetError(@error, @extended, $Write)
    EndFunc ;==>_INI_Write_Array

    [/autoit]
    • Offizieller Beitrag

    Oder so:

    Spoiler anzeigen
    [autoit]

    Func _INI_Write_Array($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, $_SR_INI_Array)
    Local $INI_Var, $INI_Str=""
    $INI_Str = _ArrayToString( $_SR_INI_Array,"|")
    Local $Write = IniWrite($_SR_INI_Name, $_SR_INI_Sectionname, $_SR_INI_Key, $INI_Str)
    Return SetError(@error, @extended, $Write)
    EndFunc ;==>_INI_Write_Array

    [/autoit]