MsgBox statt abbruch bei Error in Function

  • Hallo zusammen,

    Function:

    Spoiler anzeigen
    [autoit]

    Func _deleteSchliessfach()
    $sBesitzer = GUICtrlRead($ComboUser)
    $aSections = IniReadSection("inis\data.ini", $sBesitzer)
    For $i = 1 To $aSections[0][0]
    If StringRegExp($aSections[$i][0], "Schliessfach") Then
    IniDelete("inis\data.ini", $sBesitzer, $aSections[$i][0])
    EndIf
    Next
    For $i = 1 To $aSections[0][0]
    If StringRegExp($aSections[$i][0], "SchließfachSilber") Then
    IniDelete("inis\data.ini", $sBesitzer, $aSections[$i][0])
    EndIf
    _clearkommplettGUI()
    Next
    EndFunc

    [/autoit]


    Bei der sich im Spoiler befindlichen Function ist es so, das wenn ich in der ComboBox (Combouser) niemanden ausgewählt habe, aber dennoch auf Schliessfach löschen gehe das das Programm wegen einem Error abstürtzt (weil kein Account in Combouser ausgewält ist).

    Fehler:

    Spoiler anzeigen

    C:\Dokumente und Einstellungen\Alexander\Desktop\Test Import Export\testlager neuer.au3 (1078) : ==> Subscript used with non-Array variable.:
    For $i = 1 To $aSections[0][0]
    For $i = 1 To $aSections^ ERROR


    Ich hätte es nun gerne so das statt des Programmabsturzes eine Msgbox erscheint und den User darauf hinweist das er keinen Account ausgewählt hat, nur leider bin ich nach zahlreichen versuchen nun verzweifelt!

    Ich hoffe das mir dafür jemand eine Lösung sagen kann!

    Mfg Ghostleader

    Einmal editiert, zuletzt von Ghostleader (2. Januar 2012 um 19:44)

  • hey,

    am bessten baust du in die Combo ein default wert wie "Auswählen..." ein und danach die Namen
    und dann erst auf fehlern prüfst

    Spoiler anzeigen
    [autoit]


    Func _deleteSchliessfach()
    $sBesitzer = GUICtrlRead($ComboUser)
    $aSections = IniReadSection("inis\data.ini", $sBesitzer)
    If @error Or $sBesitzer = "Auswählen..." Then ; prüfen ob bei IniRead was schief gelaufen ist UND ob Combo Default wert ausgewählt ist
    MsgBox(0, "Fehler", "Ein Fehler ist aufgetreten!")
    Exit
    EndIf
    For $i = 1 To $aSections[0][0]
    If StringRegExp($aSections[$i][0], "Schliessfach") Then
    IniDelete("inis\data.ini", $sBesitzer, $aSections[$i][0])
    EndIf
    Next
    For $i = 1 To $aSections[0][0]
    If StringRegExp($aSections[$i][0], "SchließfachSilber") Then
    IniDelete("inis\data.ini", $sBesitzer, $aSections[$i][0])
    EndIf
    _clearkommplettGUI()
    Next
    EndFunc

    [/autoit]
  • Hallo zusammen,

    danke für eure schnellen Antworten.

    @Krabat

    Ich habe jetzt dein´s genommen und geht auch soweit das die msgBox erscheint, habe dein Exit nurnoch mit Retürn getauscht nun ist es super!
    Danke

    Mfg Ghostleader

    Einmal editiert, zuletzt von Ghostleader (2. Januar 2012 um 19:43)