For hochzählen oder alternative?

  • Hallo Benutze folgendes Um eine datei auszuwerten:

    [autoit]

    _FileReadToArray($file, $arfile)
    ;_ArrayDisplay($arfile)
    Local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
    For $j = 0 To $icount - 1
    ;$ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost, $i)

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

    $ListViewText = _GUICtrlListView_GetItemText($ListViewhost, $j)

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

    For $i = 1 To UBound($arfile) - 1 ; 1. Element ist Beschreibung der csv Daten
    $temp = StringSplit($arfile[$i], ";")


    If $temp[17] = $ListViewText Then

    $IP = _QueryDNS($ListViewText)
    Ping($ListViewText, 100) ; Host anpingen
    If Not @error Then $STATus = 'ON'
    Ping($ListViewText, 100) ; Host anpingen
    If @error Then $STATus = 'Offline'

    [/autoit]

    Jetzt habe ich das Problem wenn in der datei $temp[17] nicht vorhanden ist dann hängt er an der stelle?

    Wie kann ich sagen wenn er dort einen feherl hat das er weiter machen soll?
    z.b. wie
    If $temp[17] <> $ListViewText Then
    $i += 1

    aber irgendwie klappt es nicht was mache ich falsch oder was muss man beachten?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Ich bin leider jetzt zu hause kann es nicht testen.. werde es gleich morgen machen ...

    aber eine frage hätte ich was macht die neue zeile 12 ich verstehe die funktion von ubound nicht so richtig
    ja habe die hilfe gelesen, kann mir da jemand helfen ?


    [autoit]

    If UBound($temp) < 18 Then ContinueLoop

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • ???
    Der wert den ich kriege ist $temp[17] das ist eine bestimmt spalte in der datei mit einem bestimmten wert = $ListViewText

    Was hat das mit den Anzahl der einträgen zu tun oder verstehe ich das wieder falsch?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Ja jetzt wo ich das sehe ....
    war bestimmt nen Irrtum.
    mach doch einfach nen Else ...

    Spoiler anzeigen
    [autoit]

    If $temp[17] = $ListViewText Then

    $IP = _QueryDNS($ListViewText)
    Ping($ListViewText, 100) ; Host anpingen
    If Not @error Then $STATus = 'ON'
    Ping($ListViewText, 100) ; Host anpingen
    If @error Then $STATus = 'Offline'
    Else
    $i +=1
    Endif

    [/autoit]
  • Dann habe ich es ja doch eventuell verstanden ;) freu..........

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Was ist daran falsch wenn ich fragen darf?

    [autoit]

    If $temp[17] <> $ListViewText Then
    $i += 1

    [/autoit]


    In der zeile 12 . damit ich es verstehe??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hey,

    mhh mit else würde ich es ja tun aber die funktion ist etwas Complex für meine verhältnisse hat jemand einen vorschlag für mich wie ich das Optimieren kann ?

    [autoit]

    Func _befuelle_lv_liste()
    ;### Befülle Listview Liste aus Inhalten einer 26 - spaltigen csv Datei
    ;### Suchkriterium Hostname aus dem Listview $ListViewText [1] (noch zu überprüfen!!!!), gffs. musst Du den Hostnamen anders bestimmen
    ;### CSV Daten:
    ;### 7. Spalte Besitzer
    ;### 17. Spalte Hostname
    ;### 26. Spalte Last Logon
    _GUICtrlListView_DeleteAllItems($Liste)

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

    Local $arfile
    Local $file = '\\server\share\report\CI.csv'
    _FileReadToArray($file, $arfile)
    ;_ArrayDisplay($arfile)
    Local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
    For $j = 0 To $icount - 1

    $ListViewText = _GUICtrlListView_GetItemText($ListViewhost, $j)

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

    For $i = 1 To UBound($arfile) - 1 ; 1. Element ist Beschreibung der csv Daten
    $temp = StringSplit($arfile[$i], ";")


    If $temp[17] = $ListViewText Then

    $IP = _QueryDNS($ListViewText)
    Ping($ListViewText, 100) ; Host anpingen

    If Not @error Then $STATus = 'ON'
    Ping($ListViewText, 100) ; Host anpingen
    If @error Then $STATus = 'Offline'

    If not (FileExists("\\server\shareI\log2\" & $ListViewText & ".log")) And not (FileExists("\\server\shareI\log-m068\" & $ListViewText & ".log")) Then

    GUICtrlCreateListViewItem($temp[17] & "||" & $Text & "|" & $temp[7] & "|" & $IP & "|" & $STATus, $Liste)
    Else
    $FileToOpen = ""
    if FileExists("\\server\shareI\log2\" & $ListViewText & ".log") then $FileToOpen = "\\server\shareI\log2\" & $ListViewText & ".log"
    if ($FileToOpen = "") and FileExists("\\server\shareI\log-m068\" & $ListViewText & ".log") then $FileToOpen = "\\server\shareI\log-m068\" & $ListViewText & ".log"
    if $FileToOpen <> "" then $file = FileOpen($FileToOpen, 0)

    While 1
    $Text = ""
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $Text = StringReplace($line, "USERNAME=", "")
    If @extended > 0 Then ;GUICtrlCreateListViewItem($ListViewText[1]&'|'&$text, $Liste)
    If $Text = "" Then
    GUICtrlCreateListViewItem($temp[17] & "|" & "|" &$Text & "|" & $temp[7] & "|" & $IP & "|" & $STATus, $Liste)
    EndIf

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

    $result1 = _ADObjectExists($Text)
    If $result1 = 1 Then
    $result = _ADGetLastLoginDate($Text)
    If $result1 = 0 Then
    $result = ''
    EndIf
    $result = StringRegExpReplace($result, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", "$4:$5:$6 $3.$2.$1")

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

    GUICtrlCreateListViewItem($temp[17] & "|" & $Text & "|" & $result & '|' & $temp[7] & "|" & $IP & "|" & $STATus, $Liste)
    EndIf
    EndIf
    WEnd

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

    FileClose($file)
    EndIf ;

    EndIf
    Next
    Next
    EndFunc ;==>_befuel

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hi,
    du fängst doch jetzt ab ob Temp[17] warscheinlich ein "Hostname" ist oder?
    Somit must du jetzt nur abfangen was passieren solle wenn kein Hostname vorhanden ist.
    Einfach mal ins unreine sprechne, was dann passieren soll. Das würde helfen.

    Auch eine csv-Datei wäre super ;)