String Problem

  • was ma che ich falsch ich möchte alles was sich zwischen 'USERNAME">', '</KEY>' in eine listview schreiben
    eine fehler meldung kommt nicht.


    [autoit]

    $Text = ""
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop

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

    Local $aArray = _StringBetween($line, 'USERNAME">', '</KEY>')

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

    ; Display the results in _ArrayDisplay.
    _ArrayDisplay($aArray, "Default Search")

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

    if @extended > 0 then GUICtrlCreateListViewItem($text, $Liste)

    [/autoit]

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

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

  • Ein vollständiges Minimalbeispiel, dass jeder bei sich testen kann, wäre schonmal ein Anfang...
    Momentan ist es einfach nur sinnfrei.
    Da ist ein Exitloop wo keine Schleife ist, die zuvor als leer definierte Variable $text wird in ein Listview geschrieben, $file ist nicht defniert, von _ArrayDisplay wird @extended abgefragt obwohl @extended gar kein @extended setzt.
    etc... etc... etc...

  • [autoit]

    Func _Load() ; Datenbank-Datei laden
    _GUICtrlListView_DeleteAllItems($ListViewhost) ; Das Handle eben noch bestimmen (s. Anfang des Threads)

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

    RunWait(@ComSpec & " /c " & 'dir /b c:\xxx\*.xml > c:\qualys\dir.txt', "", @SW_HIDE)

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

    Local $sItem
    $FileOpenDialog = 'c:\xxx\dir.txt'
    Local $hFile = FileOpen($FileOpenDialog, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($ListViewhost) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen
    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
    GUICtrlCreateListViewItem($sItem, $ListViewhost) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($ListViewhost) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf
    _String()

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

    EndFunc

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

    Func _string()
    _GUICtrlListView_DeleteAllItems($Liste)

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

    Local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
    For $i = 0 To $icount - 1
    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost, $i)
    $file = FileOpen("c:\xxx\" & $ListViewText[1] & ".xml", 0)

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

    ;Zeilen des Textes einlesen bis EOF
    While 1
    $Text = ""
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    ; $text = StringReplace($line, "USERNAME=", "")

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

    Local $aArray = _StringBetween($line, 'USERNAME">', '</KEY>')

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

    ; Display the results in _ArrayDisplay.
    _ArrayDisplay($aArray, "Default Search")

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

    if @extended > 0 then GUICtrlCreateListViewItem($text, $Liste)

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

    Wend

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

    FileClose($file)

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

    Next

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

    EndFunc

    [/autoit]

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

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

  • und hier nochmal ein auszug aus dem xml

    HEADER><KEY value="USERNAME">xxx-wkxx</KEY><KEY value="COMPANY"><![CDATA[xxX]]>
    </KEY><KEY value="DATE">2014-10-01T07:01:10Z</KEY>

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

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

  • Ein paar Fragen:

    Was möchtest du mit der Abfrage If @extended > 0 in Zeile 43 erreichen? Worauf bezieht sich das @extended?

    Was hast du mit der Variable $Text vor welche du in Zeile 33 definierst aber dann nicht mehr verwendest außer als zu schreibender Inhalt für die Listview (was heißt: du schreibst nichts in die ListView).

  • ok sehe ich aber wieder kein ergebnis

    [autoit]

    $Text = ""
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    ; $text = StringReplace($line, "USERNAME=", "")

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

    Local $text = _StringBetween($line, 'USERNAME">', '</KEY>')

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

    ; Display the results in _ArrayDisplay.
    _ArrayDisplay($text, "Default Search")

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

    if @extended > 0 then GUICtrlCreateListViewItem($text, $Liste)

    [/autoit]

    ich will eigentlich mit extendet wenn er ein wert findet das er schreibt ..??!!
    hast du noch ein tipp für mich?

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

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

  • also aray display da kommt er garnicht hin
    und consolwrite habe ich ohne ende 000000000000000000

    [autoit]


    Local $text = _StringBetween($line, 'USERNAME">', '</KEY>')
    ConsoleWrite($text)
    ; Display the results in _ArrayDisplay.
    _ArrayDisplay($text, "Default Search")

    [/autoit]

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

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

  • Lies dir doch mal die Hilfe zu den Befehlen durch.
    Willst du wissen ob _StringBetween geklappt hat, dann frag nicht dessen Rückgabewert ab, sondern @error.
    In deinem Fall hat _StringBetween übrigens nicht funktioniert.
    Interessanter wäre es daher statt $text mal $line in die Console auszugeben.