String suchen

  • hey,

    ich komme mit einer string input output nicht klar möchte eine csv auslesen die mit ; getrennt ist.
    Beispiel:

    wert1;wert2;wert4;wert5;wert6;wert7;wert8;wert9;wert10;wert11;wert12;
    user1;user2;user4;user5;user6;user7;user8;user9;user10;user11;user12;
    user11;user22;user24;user25;user26;user27;user28;user29;user110;user111;user112;


    ich möchte in der csv zwischen dem 7 ten und dem 8 ten ";" einen bestimmten wert suchen wenn der wert ensprechen ist,
    dann wert zwischen 4 ten und 5 ten ; wiedergeben

    Wie mache ich das?

    Danke für die tipps

    SubZero

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

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

  • Moin,

    [autoit]

    $string1 = "wert1;wert2;wert4;wert5;wert6;wert7;wert8;wert9;wert10;wert11;wert12;"
    $string2 = "user1;user2;user4;user5;user6;user7;user8;user9;user10;user11;user12;"
    $string3 = "user11;user22;user24;user25;user26;user27;user28;user29;user110;user111;user112;"

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

    MsgBox (0,"String1", _suchestring ($string1, "wert9"))
    MsgBox (0,"String2", _suchestring ($string2, "user9"))
    MsgBox (0,"String3", _suchestring ($string3, "wert8"))

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

    Func _suchestring ($string, $suche)
    $tempstring = StringSplit ($string, ";")
    If StringInStr ($tempstring [8], $suche) <> 0 Then
    Return $tempstring [4]
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit]

    ;-))
    Stefan

  • Was mache ich falsch?


    [autoit]

    Local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
    For $i = 0 To $icount - 1
    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost, $i)
    $file = FileOpen("\\server\share\hostrep\" & $ListViewText[1] & ".log", 0)
    While 1
    $Text = ""
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $text = StringReplace($line, "USERNAME=", "")
    ;if @extended > 0 then GUICtrlCreateListViewItem($text, $Liste)
    Wend
    FileClose($file)
    $tcfile = FileOpen("\\server\share\serverrep.csv", 0)
    $user = _suchestring ($tcfile, $ListViewText[1])
    GUICtrlCreateListViewItem($text&'|'&$User, $Liste)
    FileClose($tcfile)

    [/autoit]

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

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

  • kriege diesen fehler:

    [autoit]

    If StringInStr ($tempstring [8], $suche) <> 0 Then;==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

    [/autoit]

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

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

  • ;)

    fehler post 4

    Func _suchestring ($string, $suche)
    $tempstring = StringSplit ($string, ";")
    If StringInStr ($tempstring [8], $suche) <> 0 Then
    Return $tempstring [4]
    Else
    Return 0
    EndIf
    EndFunc


    ;)

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

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

  • Hi,

    du übergibst der Funktion ein Filehandle:

    $tcfile = FileOpen("\\server\share\serverrep.csv", 0)
    $user = _suchestring ($tcfile, $ListViewText[1])

    Übergebe einen String. Evtl. mit FileRead....

    ;-))
    Stefan

  • Hey,

    habe es immer noch nicht hinbekommen,
    hänge immer noch an anfang:

    [autoit]

    Local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
    For $i = 0 To $icount - 1
    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost, $i)
    $file = FileOpen("\\server\share\hostrep\" & $ListViewText[1] & ".log", 0)
    While 1
    $Text = ""
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $text = StringReplace($line, "USERNAME=", "")
    ;if @extended > 0 then GUICtrlCreateListViewItem($text, $Liste)
    Wend
    FileClose($file)
    $tcfile = FileOpen("\\server\share\serverrep.csv", 0)
    $user = _suchestring ($tcfile, $ListViewText[1])
    GUICtrlCreateListViewItem($text&'|'&$User, $Liste)
    FileClose($tcfile)

    [/autoit]

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

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

    • Offizieller Beitrag

    Hast du nicht den Beitrag von Ojo gelesen?

    Zitat

    Hi,

    du übergibst der Funktion ein Filehandle:

    $tcfile = FileOpen("\\server\share\serverrep.csv", 0)
    $user = _suchestring ($tcfile, $ListViewText[1])

    Übergebe einen String. Evtl. mit FileRead....

  • Ja,
    habe ich gesehen leider ohne erfolg Gibt mir den Falschen wert zurück, "0"

    müsste man das nicht FileReadLine weil man zeile für zeile die werte Prüft oder
    habe ich ein verständniss Problem?

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

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

  • Anscheinend schon!
    Erst FileOpen DANN FileRead.

    [autoit]

    $Lesen = FileRead (...)

    [/autoit]


    Das übergibst du dann an die Funktion und nicht die Variabel von FileOpen!

  • hey,

    so ein Teil meines Scriptes läuft:

    [autoit]

    Local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
    For $i = 0 To $icount - 1
    $ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost, $i)
    $file = FileOpen("\\server\share\Clientrep\" & $ListViewText[1] & ".scan", 0)
    ;Zeilen des Textes einlesen bis EOF
    While 1
    $Text = ""
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $Text = StringReplace($line, "USERNAME=", "")
    If @extended > 0 Then GUICtrlCreateListViewItem($ListViewText[1] & '|' & $Text, $Liste)

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

    WEnd
    FileClose($file)

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

    Next

    [/autoit]

    aber dieser part funktioniert nicht??
    Diesen würde ich gerne mit einbauen eine idee?

    [autoit]

    $tcfile = FileOpen("\\server\share\rep\serverrep.csv", 0)
    $Lesen = FileRead($tcfile)

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

    $user = _suchestring ($Lesen, $ListViewText[1])
    GUICtrlCreateListViewItem($ListViewText[1] & '|' & $Text'|' & $user, $Liste)
    FileClose($tcfile)

    [/autoit]

    Eine idee?

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

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

  • Hi,

    Du übergibst einen Riesenstring an die Funktion. Die ist aber darauf nicht ausgelegt.

    Folgendes müsste funktionieren, wenn nicht musst Deine csv Datei mal anhängen.

    [autoit]

    ; gffs. brauchst Du noch
    ;#include <file.au3>
    ; am Anfang Deines Skriptes

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

    Local $arfile
    _FileReadToArray ("\\server\share\rep\serverrep.csv", $arfile)

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

    For $i = 1 To UBound ($arfile) - 1
    $user = _suchestring ($arfile [$i], $ListViewText[1]) ; hier weiss ich nicht ob $ListViewText [1] richtig ist
    GUICtrlCreateListViewItem($ListViewText[1] & '|' & $Text'|' & $user, $Liste)
    Next

    [/autoit]

    ;-))
    Stefan