array vor dem schreiben in eine datei filtern.

  • nun nerve ich euch zum letzten mal mit meinen fragen (für heute) :D

    bin aber schon ganz verzweifelt am suchen wo der fehler liegt:
    wenn ich versuche das array zu bearbeiten; quasi leere einträge und welche mit dem string "brackett" rauszufiltern, klappt das nicht ganz ... der zweite filter schlägt fehl.... ich weiss nicht was ich falsch mache bzw warum mein script abschmiert.

    [autoit]

    Func _listchange()
    Global $list123, $hfile, $array2[1], $searcharry, $y2, $z2, $i2, $buffer
    $list123 = Iniread("serverlist.ini" , "serverlist", "servers","")
    $list123 = StringRegExpReplace($list123, '\(.+?\)', '')
    $array2 = StringSplit($list123, '|')
    ; _ArrayDisplay($array2)
    Do
    for $y2=0 to $array2[1]
    $searcharry = _ArraySearch($array2,"")
    _ArrayDelete($array2,$searcharry)
    Next
    Until $searcharry=-1

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

    ;das hier geht nicht:
    ; Do
    ; for $z2=0 to $array2[1]
    ; $searcharry2 = _ArraySearch($array2,"bra")
    ; _ArrayDelete($array2,$searcharry2)
    ; Next
    ; Until $searcharry2=-1

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

    _ArrayDisplay($array2)
    Local $buffer = ''
    for $i2 = 0 to UBound($array2)-1
    $buffer &= $array2[$i2] & @CRLF
    Next
    FileWrite(@ScriptDir & 'temp.txt', $buffer)
    EndFunc

    [/autoit]
  • Ist ja auch klar...
    Also erstmal musst du alle $Array2[1] durch $Array[0] ersetzen
    Außerdem löscht

    [autoit]

    o
    for $y2=0 to $array2[0]
    $searcharry = _ArraySearch($array2,"")
    _ArrayDelete($array2,$searcharry)
    Next
    Until $searcharry==-1

    [/autoit]

    schleießlich den ganzen Inhalt des Array/den ganzen Array ^^

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • So klappts:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    _listchange()
    Func _listchange()
    Global $list123, $hfile, $array2[1], $searcharry, $y2, $z2, $i2, $buffer
    $list123 = Iniread("serverlist.ini" , "serverlist", "servers","")
    $list123 = StringRegExpReplace($list123, '\(.+?\)', '')
    $array2 = StringSplit($list123, '|')
    _ArrayDisplay($array2)
    While 1
    for $y2=0 to $array2[0]
    $searcharry = _ArraySearch($array2,"")
    _ArrayDelete($array2,$searcharry)
    If $searcharry == -1 Then ExitLoop
    Next
    WEnd
    _ArrayDisplay($array2)

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

    ;das hier geht nicht:
    Do
    for $z2=0 to $array2[0]
    $searcharry2 = _ArraySearch($array2,"bra")
    _ArrayDelete($array2,$searcharry2)
    Next
    Until $searcharry2=-1

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

    _ArrayDisplay($array2)
    Local $buffer = ''
    for $i2 = 0 to UBound($array2)-1
    $buffer &= $array2[$i2] & @CRLF
    Next
    FileWrite(@ScriptDir & 'temp.txt', $buffer)
    EndFunc

    [/autoit]

    Der konnte die Do Schleife nicht verlassen
    Jetzt hab ich sie mal durch ne While-Schleife ersetzt ^^

    Edit: Oh, merk gerade, das ich ne'n Doppelpost gemacht hab :S
    Na ja, sorry :D

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • wenn ich das tue, dann bekomme ich diesen fehler:
    ==> Array variable subscript badly formatted

    mein script sieht jetzt so aus:

    [autoit]

    Func _listchange()
    Global $list123, $hfile, $array2[0], $searcharry, $y2, $z2, $i2, $buffer
    $list123 = Iniread("serverlist.ini" , "serverlist", "servers","")
    $list123 = StringRegExpReplace($list123, '\(.+?\)', '')
    $array2 = StringSplit($list123, '|')
    Do
    for $y2=0 to $array2[0]
    $searcharry = _ArraySearch($array2,"")
    _ArrayDelete($array2,$searcharry)
    Next
    Until $searcharry==-1
    ; Do
    ; for $z2=0 to $array2[1]
    ; $searcharry2 = _ArraySearch($array2,"bra")
    ; _ArrayDelete($array2,$searcharry2)
    ; Next
    ; Until $searcharry2=-1

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

    _ArrayDisplay($array2)
    Local $buffer = ''
    for $i2 = 0 to UBound($array2)-1
    $buffer &= $array2[$i2] & @CRLF
    Next
    FileWrite(@ScriptDir & 'temp.txt', $buffer)
    EndFunc

    [/autoit]
  • Komisch 8|
    Na ja, so funzts:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    _listchange()
    Func _listchange()
    Global $list123, $hfile, $array2[1], $searcharry, $y2, $z2, $i2, $buffer
    $list123 = Iniread("serverlist.ini" , "serverlist", "servers","")
    $list123 = StringRegExpReplace($list123, '\(.+?\)', '')
    $array2 = StringSplit($list123, '|')
    _ArrayDisplay($array2)
    Do
    for $y2=0 to $array2[0]
    $searcharry = _ArraySearch($array2,"")
    _ArrayDelete($array2,$searcharry)
    If $searcharry == -1 Then ExitLoop
    Next
    Until $searcharry==-1
    _ArrayDisplay($array2)

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

    ;das hier geht nicht:
    Do
    for $z2=0 to $array2[0]
    $searcharry2 = _ArraySearch($array2,"bra")
    _ArrayDelete($array2,$searcharry2)
    Next
    Until $searcharry2=-1

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

    _ArrayDisplay($array2)
    Local $buffer = ''
    for $i2 = 0 to UBound($array2)-1
    $buffer &= $array2[$i2] & @CRLF
    Next
    FileWrite(@ScriptDir & 'temp.txt', $buffer)
    EndFunc

    [/autoit]

    doch wieder mit der Do-Schleife ^^

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • bei mir nicht ganz, wenn ich es so laufen lasse, dann löscht dei zweite schleife (die bei mir nicht ging) nicht das array mit dem inhalt "brackett", sondern den obersten eintrag... der richitge eintrag steht aber ganz unten und bleibt leider in der liste :( ... es wird also der falsche gelöscht :(

  • Aha...
    Kannst mal die .ini anhängen?

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Hi,

    warum die For-Schleife in der Do-Until-Schleife ???

    Versuche es mal bitte so ...

    Spoiler anzeigen
    [autoit]

    Func _listchange()

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

    Local $list123, $array, $search, $buffer
    $list123 = Iniread("serverlist.ini" , "serverlist", "servers","")
    $list123 = StringRegExpReplace($list123, '\(.+?\)', '')
    $array = StringSplit($list123, '|')

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

    If (not IsArray ($array)) Then _
    Return FALSE

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

    _ArrayDisplay($array)
    Do
    ;~ for $y2=0 to $array[1]
    $search = _ArraySearch($array,"")
    _ArrayDelete($array,$search)
    ;~ Next
    Until $search == -1

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

    ; das hier geht nicht:
    Do
    ;~ for $i=0 to $array[1]
    $search = _ArraySearch($array,"bra")
    _ArrayDelete($array,$search)
    ;~ Next
    Until $search == -1

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

    _ArrayDisplay($array)
    ;~ Local $buffer = ''
    for $i = 0 to UBound($array)-1
    $buffer &= $array[$i] & @CRLF
    Next
    FileWrite(@ScriptDir & 'temp.txt', $buffer)

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

    EndFunc

    [/autoit]

    Gruß
    Greenhorn


  • Wenn ich dich im ersten Post richtig verstanden habe, ginge es so doch viel einfacher ?( .

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    Global $aTest[5]
    $aTest[0] = ""
    $aTest[1] = "Test"
    $aTest[2] = "löschen"
    $aTest[3] = "Test2"
    $aTest[4] = "delete"

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

    Global $aSearch[4]
    $aSearch[0] = 3
    $aSearch[1] = "löschen"
    $aSearch[2] = "delete"
    $aSearch[3] = ""

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

    _ArrayDisplay($aTest)
    $aTest = _ArrayDeleteEx($aTest, $aSearch)
    _ArrayDisplay($aTest)

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

    Func _ArrayDeleteEx($aArray, $aSearch)
    Local $iI = 0
    Local $iArraySize = UBound($aArray)

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

    While $iI <= $iArraySize - 1
    For $iJ = 1 To $aSearch[0]
    If $aArray[$iI] = $aSearch[$iJ] Then
    $iArraySize = _ArrayDelete($aArray, $iI)
    ExitLoop
    EndIf
    Next
    $iI += 1
    WEnd

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

    Return $aArray
    EndFunc

    [/autoit]
  • Das Problem ist, das $search fast immer direkt -1 ist, deshalb evtl. so:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    _listchange()
    Func _listchange()
    Global $list123, $hfile, $array2[1], $searcharry, $y2, $z2, $i2, $buffer
    $list123 = Iniread("serverlist.ini" , "serverlist", "servers","")
    $list123 = StringRegExpReplace($list123, '\(.+?\)', '')
    $array2 = StringSplit($list123, '|')
    _ArrayDisplay($array2)
    for $y2=0 to $array2[0]
    $searcharry = _ArraySearch($array2,"")
    _ArrayDelete($array2,$searcharry)
    If $searcharry == -1 Then ExitLoop
    Next
    _ArrayDisplay($array2)

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

    ;das hier geht nicht:

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

    for $z2=0 to UBound($array2)-1
    $searcharry2 = _ArraySearch($array2,"test2");hier deinen String eintragen
    If $searcharry2 == -1 Then ContinueLoop
    _ArrayDelete($array2,$searcharry2)
    Next
    _ArrayDisplay($array2)
    Local $buffer = ''
    for $i2 = 0 to UBound($array2)-1
    $buffer &= $array2[$i2] & @CRLF
    Next
    FileWrite(@ScriptDir & 'temp.txt', $buffer)
    EndFunc

    [/autoit]

    name22: so auch nicht, und zwar weil $Array2[0] schon in der ersten Schleife gelöscht wird...
    Das hier ist ne Notlösung, denn ich muss jetzt ausmachen, aber sie klappt ;)

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Greenhorn ... leider bei allen scripts das gleche :(

    hier die ini:

    Code
    [serverlist]
    servers=www.web.net(Standdart)|127.0.0.1(localhost)|7.0.133.109(Ever)|7.0.133.111(Night)|7.3.247.97|7.1.14.12(steve)|||(Please edit serverlist.ini)|(to add/change servers)|(enter infos in - brackets )
  • Also so scheint es bei mir zu funzen ...

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    _listchange()

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

    Func _listchange()

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

    Local $list123, $array, $search, $buffer
    $list123 = Iniread("serverlist.ini" , "serverlist", "servers","")
    $list123 = StringRegExpReplace($list123, '\(.+?\)', '')
    $array = StringSplit($list123, '|')

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

    If (not IsArray ($array)) Then _
    Return FALSE

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

    _ArrayDisplay($array)
    Do
    ;~ for $y2=0 to $array[1]
    $search = _ArraySearch($array,"")

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

    If ($search == -1) Then _
    ExitLoop

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

    _ArrayDelete($array,$search)
    ;~ Next
    Until $search == -1

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

    ; das hier geht nicht:
    Do
    ;~ for $i=0 to $array[1]
    $search = _ArraySearch($array,"bra")

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

    If ($search == -1) Then _
    ExitLoop

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

    _ArrayDelete($array,$search)
    ;~ Next
    Until $search == -1

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

    _ArrayDisplay($array)
    ;~ Local $buffer = ''
    for $i = 1 to UBound($array)-1
    $buffer &= $array[$i] & @CRLF
    Next
    FileWrite(@ScriptDir & '\temp.txt', $buffer)

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

    EndFunc

    [/autoit]
    Spoiler anzeigen
    Code
    www.web.net
    127.0.0.1
    7.0.133.109
    7.0.133.111
    7.3.247.97
    7.1.14.12

    Gruß


  • bei mir schmierts ab und verweist mich auf ein array was damit mal gar nix zu tun hat;

    C:\Program Files\AutoIt3\AutoIT-eigenerkrams\Modernwarfare2-keysetter\keysetter05.au3 (402) : ==> Subscript used with non-Array variable.:
    Global $a_LV[$a_ip[0]+1][7]
    Global $a_LV[$a_ip^ ERROR

    kann jemand damit was anfangen ?