_FileWriteToArray ohne Array[0]

  • ist der pfad sicher richtig
    ist $lines_A sicher ein array? (_arrayDisplay checken)

    was ist der fehler @scite

  • das prob ist nicht, dass es nicht funktioniert.

    ich schreibe das array in eine txt-datei und vergleiche diese später mit einer weiteren auf gleiche einträge.

    jedoch wird auch immer $array[0] mit in die txt-dateien geschrieben, die aber immer unterschiedlich sind. $array[0] benötige ich nicht und verfälscht mir mein vorhaben, deswegen suche ich ne möglichkeit, dass es nicht mit in die txt-dateien geschrieben wird.

  • versteh' ichs falsch?

    bei:

    #include <array.au3>
    #include <File.au3>
    $array = _ArrayCreate("a","b","c","d")

    _FileWriteFromArray(@ScriptDir & "\array.txt", $array)

    wird mir NUR a
    b
    c
    d


    in die .txt geschrieben ^^

  • Jain ...

    weil bei dir $array[0] = a ist

    aber wenn ich _FileReadToArray mache, enthält $array[0] die anzahl der arrays die existieren. die erste zeile der txt ist erst in $array[1] enthalten.

    hoffe das ist so verständlich =)

    um es mal genauer zu machen

    Spoiler anzeigen
    [autoit]


    Func _NewUser()
    _FileReadToArray($sFilePath, $lines_A)
    _FileWriteFromArray($sFilePath5, $lines_A)
    For $i = UBound($lines_A) - 1 To 1 Step - 1
    If Not StringRegExp($lines_A[$i], '230 Logged on', 0) Then
    _ArrayDelete($lines_A, $i)
    Else
    If StringRegExp($lines_A[$i], 'not logged in', 0) Then
    _ArrayDelete($lines_A, $i)
    Else
    $cutnr = StringMid($lines_A[$i], 1, 9)
    $trim = StringMid($lines_A[$i], 9)
    $trimright = StringTrimLeft($trim, 11)
    $trimright2 = StringTrimRight($trimright, 15)
    $final = _StringInsert($cutnr, $trimright2, 8)
    _ArrayAdd($lines_A, $final)
    _ArrayDelete($lines_A, $i)
    EndIf
    EndIf
    Next
    _FileWriteFromArray($sFilePath2, $lines_A)
    _FileReadToArray($sFilePath2, $lines_A)
    _FileWriteFromArray($sFilePath2, _ArrayUnique($lines_A))
    If @error Then
    Else
    $user = FileReadLine($sFilePath2, 1)
    $trimnow = StringMid($user, 9)
    If $user = $olduser Then
    Else
    $olduser = $user
    SplashTextOn("", "Log On: " & $trimnow, 350, 30, 671, 705, 1 + 32, "Lucida Console", 10)
    TraySetIcon()
    Sleep(3000)
    SplashOff( )
    EndIf
    EndIf
    EndFunc

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

    Func _UserLogOff()
    _FileReadToArray($sFilePath, $lines_A)
    For $i = UBound($lines_A) - 1 To 1 Step - 1
    If Not StringRegExp($lines_A[$i], 'disconnected.', 0) Then
    _ArrayDelete($lines_A, $i)
    Else
    If StringRegExp($lines_A[$i], 'not logged in', 0) Then
    _ArrayDelete($lines_A, $i)
    Else
    $cutnr = StringMid($lines_A[$i], 1, 9)
    $trim = StringMid($lines_A[$i], 9)
    $trimright = StringTrimLeft($trim, 11)
    $trimright2 = StringTrimRight($trimright, 15)
    $final = _StringInsert($cutnr, $trimright2, 8)
    _ArrayAdd($lines_A, $final)
    _ArrayDelete($lines_A, $i)
    EndIf
    EndIf
    Next
    _FileWriteFromArray($sFilePath3, $lines_A, 1)
    _FileReadToArray($sFilePath3, $lines_A)
    _FileWriteFromArray($sFilePath3, _ArrayUnique($lines_A), 1)
    If @error Then
    Else
    $user2 = FileReadLine($sFilePath3, 1)
    $trimnow2 = StringMid($user2, 9)
    If $user2 = $olduser2 Then
    Else
    $olduser2 = $user2
    SplashTextOn("", "Log Off: " & $trimnow2, 350, 30, 671, 705, 1 + 32, "Comic Sans MS", 10)
    Sleep(3000)
    SplashOff( )
    EndIf
    EndIf
    EndFunc

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

    Func _TrayView()
    _FileReadToArray($sFilePath2, $lines_A)
    For $i = UBound($lines_A) - 1 To 1 Step - 1
    If Not StringRegExp($lines_A[$i], '[^\s]', 0) Then
    _ArrayDelete($lines_A, $i)
    Else
    $cutnr = StringMid($lines_A[$i], 1, 8)
    _ArrayAdd($lines_A, $cutnr)
    _ArrayDelete($lines_A, $i)
    EndIf
    Next
    _ArrayDelete($lines_A, 0)
    _FileReadToArray($sFilePath3, $lines_B)
    For $i = UBound($lines_B) - 1 To 1 Step - 1
    If Not StringRegExp($lines_B[$i], '[^\s]', 0) Then
    _ArrayDelete($lines_B, $i)
    Else
    $cutnr = StringMid($lines_B[$i], 1, 8)
    _ArrayAdd($lines_B, $cutnr)
    _ArrayDelete($lines_B, $i)
    EndIf
    Next
    _ArrayDelete($lines_B, 0)
    _Array2DJoin($lines_A, $lines_B)
    _FileWriteFromArray($sFilePath4, $lines_A)
    _FileReadToArray($sFilePath4, $lines_A)
    _FileWriteFromArray($sFilePath4, _ArrayTotalUnique($lines_A), 1)
    _FileReadToArray($sFilePath4, $lines_A)
    _FileWriteFromArray($sFilePath4, _ArrayUnique($lines_A), 1)
    If $lines_A[0] = 0 Then
    TraySetToolTip("no user online")
    TraySetIcon("FileZilla Server.exe")
    Else
    TraySetToolTip($lines_A[0] & " user(s) Online")
    TraySetIcon()
    EndIf
    EndFunc

    [/autoit]

    hier werden 2 txt dateien erstellt, die nacher verglichen werden sollen. das ganze klappt aber nicht korrekt, da jeweils in die beiden ersten txts noch $array[0] geschrieben wird. aber _ArrayDelete funzt irgendwie auch nicht (es kann vorkommen dass nur noch $array[0] existiert, lösch ich das dann, erstellt er einen neuen eintrag).

    bzw, wenn es nicht geht, $array[0] nicht in die txt zu schreiben, könnte man ne auswahl machen, wenn $array[1] existiert oder leer ist?
    teilweise gibt es $array[1], aber ohne das was drin steht, teilweise gibt es das nicht ...

  • Dann mach ne FOR schleife :

    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.2.4.9
    Author: myName

    Script Function:
    Template AutoIt script.

    #ce ----------------------------------------------------------------------------

    ; Script Start - Add your code below here

    #include <array.au3>
    #include <File.au3>
    $array = _ArrayCreate("a","b","c","d")

    For $i = 1 to $array[0]

    FileWrite(@ScriptDir & "\txt.txt", $array[$i])

    Next

    sollte gehen

    • Offizieller Beitrag

    Hi!

    _ArrayUnique($lines_A) wird nach Ausführung durch seinen Rückgabewert ersetzt. Der wird dann in die Datei geschrieben. Wie praktisch alle Array-Funktionen wird das übergebene Array direkt bearbeitet ("ByRef") und Erfolg mit 0 oder 1 über den Rückgabewert gemeldet.

    [autoit]

    _ArrayUnique($lines_A)
    _FileWriteFromArray($sFilePath2, $lines_A, 1, 1)

    [/autoit]

    peethebee