Script Fehler nach Exe erstellung

  • Moin zusammen,

    Hab da einen Fehler, wo ich nicht weis, wie ich den eingrenzen soll. Vorab: Die Exe funktioniert auf Vista und Win7 ohne Probleme ! Wenn ich die aber auf WinXP Prof. laufen lasse bekomme ich immer folgende Meldung :

    Line 4226: (File: usw.)
    Error: Array variable has incorrect number of subscripts or subscript dimension range exceeded.

    Finde aber keinen Fehler bei den Array Variablen und warum tritt der Fehler nur bei XP auf ?

    Bekomm ich irgendwie raus was mit Line 4226 genau gemeint ist ?

    Einmal editiert, zuletzt von MrB (28. März 2010 um 15:34)

  • Ja, schon klar :D . Hab da nur einiges drin stehen, was nicht unbedingt für die Allgemeinheit gedacht ist. Bin aber schon soweit das ich sagen kann das es an folgender Funktion liegt :

    [autoit]

    Func fullinfo()
    $file = FileOpen($pfadconfig, 0)
    $line = FileReadLine($file, 274)
    FileClose($file)
    $line2 = StringSplit($line, "" & Chr(34))
    _ArrayDisplay($line2)
    If IsArray($line2) Then
    If $line2[2] = 1 Then
    $full = "JA"
    Else
    $full = "NEIN"
    EndIf
    Return $full
    Else
    MsgBox(0, "Fehler", "Array Fehler: Func fullinfo()")
    EndIf

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

    EndFunc ;==>fullinfo

    [/autoit]
  • Du bist dir sicher, das es $line2[2] gibt?
    Oder heißt der Wert z.B $line2[0][2]?
    Also der Fehler besagt, das mit dieser Abfrage die "Range" (Reichweite) des Arrays überschritten wurde.

  • was zeigt dir das _Arraydisplay denn bei den Systemen an auf denen es nicht funktioniert?

    ps: das geht so auch $line2 = StringSplit($line, ' " '); ohne die Leerzeichen, die sind nur damit dus besser erkennst das das einfache ' sind ;)

  • Hallo MrB,

    ich würde so ändern:

    [autoit]

    Func fullinfo()
    $file = FileOpen($pfadconfig, 0)
    $line = FileReadLine($file, 274)
    FileClose($file)
    $line2 = StringSplit($line, "" & Chr(34))
    If IsArray($line2) Then
    _ArrayDisplay($line2) ;macht nur Sinn, wenn es ein Array gibt
    If $line2[0] > 2 then
    If $line2[2] = 1 Then
    $full = "JA"
    Else
    $full = "NEIN"
    EndIf
    Return $full

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

    Else
    Return "Nein" ;bei Bedarf auf JA ändern
    EndIf
    Else
    MsgBox(0, "Fehler", "Array Fehler: Func fullinfo()")
    EndIf

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

    EndFunc ;==>fullinfo

    [/autoit]

    Stell doch bitte die Daten die ArrayDisplay ausgibt hoch,

    mfg (Auto)Bert

  • @All

    Sry, lag einfach daran das ich unsauber programmiert hatte, welches bei Win7 nichts machte, da ich da die Dateien schon automatisch an der richtigen stelle hatte. Hab mir jetzt mit VMWare mal ein XP aufgesetzt und die Fehler gefunden. Bin einfach nicht drauf gekommen mal ein XP aufzusetzen und es dann zu testen. Manchmal ist man halt vernagelt grrrr..

    @PokerFace

    Stimmt. Bei XP gab´s $line[2] nicht. Fehler gefunden und behoben.

    autoBert

    Hast recht ist besser so. Hab´s geändert THX

    Einmal editiert, zuletzt von MrB (28. März 2010 um 16:03)