Seltsamer Programm-Abbruch durch Fehler

  • Frohes Neues !!

    Ich habe mir ein Programm geschrieben, welches u.a. folgende Funktion nutzt (aus der Hilfe kopiert):

    $var=WinList()

    For$i=1to$var[0][0]
    If$var[$i][0]<>""AND IsVisible($var[$i][1])Then
    MsgBox(0,"Details","Title="&$var[$i][0]&@LF&"Handle="&$var[$i][1])
    EndIf
    Next


    Das Programm steigt nun manchmal mit der Fehlermeldung aus:

    Fehler Line -1 und dem Hinweis, dass ein Array nicht definiert wurde bzw. dessen Grenzen überschritten wurde.


    ?? 1 ?? : Fehler in Zeile -1 -->> was soll mir das sagen?

    Lösung : (kritischer) Programmfehler

    ?? 2 ?? : Muss ich $var als Global/Local definieren, welche Grenzen sollte man dann wählen, wenn man die Anzahl der laufenden Prozesse ja vorher nicht kennt ($var[30][2]?)

    Lösung :

    1. ja, Definition hat das Auftreten des Fehlers behoben

    2. ich habe einfach großzügige Grenzen vergeben (quick-and-dirty!)

  • [autoit]

    $var=WinList()

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

    If IsArray($var) Then
    For $i=1 to $var[0][0]
    If $var[$i][0]<>""AND IsVisible($var[$i][1])Then
    MsgBox(0,"Details","Title="&$var[$i][0]&@LF&"Handle="&$var[$i][1])
    EndIf
    Next
    Else
    MsgBox(0,"", "Fehler $var ist kein Array.")
    EndIf


    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf

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

    EndFunc

    [/autoit]

    also sollte eigentlich ohne Probleme funktionieren, der Fehler in Line -1 sagt aus, dass irgendwo ein schwerwiegender Fehler ist
    kannst ja mal den ganzen Code posten

  • naja was heisst schwerwiegend^^

    Fehlermeldung war doch klar lesbar^^ Array nicht definiert oder ungültige dimensionen

    Ich hätte das evt. so gelöst:

    Spoiler anzeigen
    [autoit]

    If IsArray($var) Then
    For $i=1 to Ubound($var)-1 ;immer ubound benutzen :)
    If $var[$i][0]<>""AND IsVisible($var[$i][1])Then
    MsgBox(0,"Details","Title="&$var[$i][0]&@LF&"Handle="&$var[$i][1])
    EndIf
    Next
    Else
    MsgBox(0,"", "Fehler $var ist kein Array.")
    EndIf

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    Einmal editiert, zuletzt von FireFlyer (5. Januar 2009 um 14:49)

    • Offizieller Beitrag

    latemail hast du das Prog unter Scite laufen, oder eigenständig? Das in Zeile -1 kommt bei mir nur wenn ein Fehler im der Fertigen Exe kommt.
    Normalerweise wird beim ausführen in Scite die Zeile mit angegeben bei einem Fehler .

  • @ mehrsolala : das würde hier den Rahmen sprengen ....... und ich habe mit einer GLOBAL-Definition mit üppigen Grenzen (die ich eigentlich vermeiden wollte) dem Übel scheinbar abgeholfen

    @ raupi : der Fehler ist mir sowieso erst aufgefallen, als ich die Exe erstellt habe, vorher tauchte die Meldung nicht auf .... dieses Problem haben wohl auch Andere, wie ich bei meiner Forumsuche festgestellt habe!! Aber ich werde nochmal einige Testläufe machen, sollte ich was rausfinden melde ich mich ........

  • aber dann kanns ja quasi nur sein das du die grenze in der 2. dimension übertrittst die 1. dimension (fehlerquelle) haben wir ja abgestellt
    Das array ist auf jeden falle ein array und in der ersten wird es auch bestimmt nicht über seine grenzen hüpfen^^ ubound:

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D