Array Problem...

  • Hi,

    ich bin' nur..., mal wieder ! :rofl:

    Habe mal wieder 'nen Knoten im Hirn ! :hammer: :hammer:

    Was ist an diesem Code denn nun schon wieder falsch... :hm:

    Bis zur zweiten For ... Next Schleife läuft alles gut...

    Bei der zweiten For ... Next Schleife kommt zur Zeile 33: $tmp = $arTemp[$i] die Fehlermeldung ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

    Spoiler anzeigen
    [autoit]

    Func Unregister()
    #include <File.au3>
    #include <String.au3>
    #include <Array.au3>

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

    $RegASCI = StringReplace(FileGetShortName($regsource), ".reg", ".old")
    RunWait(@ComSpec & " /c type " & FileGetShortName($regsource) & ">" & $RegASCI, @MyDocumentsDir, @SW_HIDE)
    FileCopy($RegASCI, $regsource, 1)
    FileDelete($RegASCI)

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

    Dim $arFile, $str, $v, $tmp
    Dim $pfadRead = FileOpen($regsource, 0)
    Dim $arTemp[1]

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

    FileWriteLine($UnRegScript, "; Func Unregister()")

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

    If _FileReadToArray($regsource, $arFile) = 0 Then
    MsgBox(0, 'Achtung', "Datei konnte nicht eingelesen werden!")
    Exit
    EndIf
    For $i = 1 To UBound($arFile)-1
    $tmp = $arFile[$i]
    $vResult = StringRegExp($tmp, "[][]", 1)
    If @extended Then
    $keyname = StringRegExpReplace($tmp, "[][]", "")
    _ArrayAdd($arTemp, $keyname)
    EndIf
    Next

    $arTemp[0] = UBound($arTemp)

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

    For $i = 1 To UBound($arTemp)-1
    $tmp = $arTemp[$i]
    $tmp1 = $tmp & "\"
    $Pos = _ArraySearch($arTemp, $tmp1, 0, 0, 0, True)
    Select
    Case $Pos = -1
    FileWriteLine($UnRegScript, 'RegDelete("' & $tmp & '")')
    Case Else
    If $tmp1 = "\" Then ExitLoop
    $v = _ArrayDelete($arTemp, $Pos)
    $i = $i - 1
    EndSelect
    Next
    FileWriteLine($UnRegScript, "; EndFunc")
    FileClose($pfadRead)
    FileDelete(@TempDir & "\Temp.txt")
    EndFunc ;==>Unregister

    [/autoit]

    Gruß


    2 Mal editiert, zuletzt von Greenhorn (28. Januar 2007 um 17:44)

  • BugFix


    Hilfe:
    #include <Array.au3>
    _ArraySearch ( $avArray, $vWhat2Find, $iStart = 0, $iEnd = 0, $iCaseSense = 0, $fPartialSearch = False )


    $fPartialSearch (Optional) If set to True then executes a partial search. If omitted it is set to False


    Der Inhalt von $arTemp wurde aus einer Textdatei gelesen, bevor ich die Idee mit der ersten Schleife (Zeilen 21 bis 28 ) hatte und da hat es noch funktionert


    3 Mal editiert, zuletzt von Greenhorn (28. Januar 2007 um 19:25)

  • So geht's...

    Spoiler anzeigen
    [autoit]

    _ArrayAdd($arTemp, "")
    $arTemp[0] = UBound($arTemp)

    For $i = 1 To UBound($arTemp)-1
    $tmp0 = $arTemp[$i]
    $tmp1 = $tmp0 & "\"
    $Pos = _ArraySearch($arTemp, $tmp1, 0, 0, 0, True)
    Select
    Case $Pos = -1
    FileWriteLine($UnRegScript, 'RegDelete("' & $tmp0 & '")')
    Case Else
    If $tmp1 = "\" Then ExitLoop
    $v = _ArrayDelete($arTemp, $Pos)
    $i = $i-1
    EndSelect
    Next
    FileWriteLine($UnRegScript, "; EndFunc")
    FileClose($pfadRead)
    FileDelete(@TempDir & "\Temp.txt")

    [/autoit]

    Vielen Dank für die Hilfe !!!


    Gruß