Array??

  • Hallo,

    ich habe ja versprochen ganz klein anzufangen also habe ich es getan ;)
    vermutlich ist das nur ein ganz kleiner fehler, mit der hilfe konnte ich mir leider auch nicht helfen ;(
    Eine fehlermeldung erscheint nicht, bloss der inhalt meine txt erscheint nicht in meiner $listview1
    eine idee?
    zurinfo meine txt sieht so aus:
    pc1
    pc2
    pc3


    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #Include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <file.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 700, 510, 257, 323)
    $ListView1 = GUICtrlCreateListView("", 24, 48, 170, 342)
    $ListView2 = GUICtrlCreateListView("", 224, 48, 170, 342)
    $ListView3 = GUICtrlCreateListView("", 424, 48, 186, 342)
    $Button1 = GUICtrlCreateButton("PC`s Laden", 24, 400, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Check", 24, 432, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("export1", 136, 400, 59, 25, 0)
    $Button4 = GUICtrlCreateButton("export2", 336, 400, 59, 25, 0)
    $Button5 = GUICtrlCreateButton("export3", 552, 400, 59, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Button1
    _insert()
    EndSwitch
    WEnd

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


    Func _insert()

    $string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4 )
    $array = $string
    For $i = 0 To UBound($array) - 1
    GUICtrlCreateListViewItem($array[$i], $ListView1)

    Next
    EndFunc

    [/autoit]

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

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

    2 Mal editiert, zuletzt von subzero007 (3. Juni 2009 um 09:06)

    • Offizieller Beitrag

    So geht's:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <array.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 700, 510, 257, 323)
    $ListView1 = GUICtrlCreateListView("Listview1", 24, 48, 170, 342)
    GUICtrlSendMsg($ListView1, $LVM_SETCOLUMNWIDTH, 0, 160) ; setzt die 1. Spalte des Listviews auf 160 Pixel Breite

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

    $ListView2 = GUICtrlCreateListView("Listview2", 224, 48, 170, 342)
    $ListView3 = GUICtrlCreateListView("Listview3", 424, 48, 186, 342)
    $Button1 = GUICtrlCreateButton("PC`s Laden", 24, 400, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Check", 24, 432, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("export1", 136, 400, 59, 25, 0)
    $Button4 = GUICtrlCreateButton("export2", 336, 400, 59, 25, 0)
    $Button5 = GUICtrlCreateButton("export3", 552, 400, 59, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _insert()
    EndSwitch
    WEnd

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

    Func _insert()
    $string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
    $array = StringSplit($string, '|')
    For $i = 1 To $array[0]
    If $array[0] = 1 Then
    GUICtrlCreateListViewItem($array[$i], $ListView1)
    Else
    If $i > 1 Then GUICtrlCreateListViewItem($array[1] & $array[$i], $ListView1)
    EndIf
    Next
    EndFunc ;==>_insert

    [/autoit]
  • Hallo subzero007,

    setze doch einfach einmal zwischen Zeile 36 und 37 folgendes:

    [autoit]

    ConsoleWrite($array)

    [/autoit]


    damit kannst du erkennen was in $array steht, du wirst dich zwaar sehr wundern und danach schaust du dir am besten alle Funktionen an die mit File..... anfangen. Wenn ich mich nicht ganz täusche hast du einige Beispiele in vorhergehenden Themen zu ListView bekommen (GroupMembers?),

    mfg (Auto)Bert

  • Der einzige Fehler war, das seine Variable $array gar kein Array war.
    Wie Oscar (kurz bevor ich meinen Vorschlag posten konnte ;) ) es schon gelöst hast,
    nämlich mit einen

    [autoit]

    StringSplit()

    [/autoit]


    wobei ich der Meinung bin, dass es so etwas "eleganter" ist ;)

    Spoiler anzeigen
    [autoit]

    Func _insert()
    $string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
    If @error Then
    $msgbox = MsgBox(48 + 5, "Keine Auswahl", "Es wurde/n keine Datei/en ausgewählt!")
    If $msgbox = 4 Then _insert()
    Else
    $array = StringSplit($string, '|')
    For $i = 1 To $array[0]
    If $array[0] = 1 Then
    GUICtrlCreateListViewItem($array[$i], $ListView1)
    Else
    If $i > 1 Then GUICtrlCreateListViewItem($array[1] & $array[$i], $ListView1)
    EndIf
    Next
    EndIf
    EndFunc ;==>_insert

    [/autoit]

    Edit2: +Fehlermeldung ;)

    4 Mal editiert, zuletzt von seTTs (2. Juni 2009 um 16:53)

  • Ok die fehlerbehandlung die mache ich selbst ;) habe es in der hilfe gefunden ;)
    aber ich wollte dern inhalt meiner txt darstellen und nicht die txt ?

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

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

  • Hallo subzero007,

    deswegen war ja mein Tip, dass du dir die Hilfe zu File... anschaust, bzw. eines deiner bisherigen Scripts anschaust. Ich bin mir sicher, dass dort das gleiche Problem (Einlesen einer CSV schon mal gelöst ist)!

    mfg (Auto)Bert

    Edit: die damalige Datei zum Einlesen hiess Gruppen.txt

  • Vielleicht so..

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <array.au3>
    #Include <File.au3>

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

    Local $ad, $array1, $x = 0

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 700, 510, 257, 323)
    $ListView1 = GUICtrlCreateListView("Listview1", 24, 48, 170, 342)
    GUICtrlSendMsg($ListView1, $LVM_SETCOLUMNWIDTH, 0, 160) ; setzt die 1. Spalte des Listviews auf 160 Pixel Breite

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

    $ListView2 = GUICtrlCreateListView("Listview2", 224, 48, 170, 342)
    $ListView3 = GUICtrlCreateListView("Listview3", 424, 48, 186, 342)
    $Button1 = GUICtrlCreateButton("PC`s Laden", 24, 400, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Check", 24, 432, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("export1", 136, 400, 59, 25, 0)
    $Button4 = GUICtrlCreateButton("export2", 336, 400, 59, 25, 0)
    $Button5 = GUICtrlCreateButton("export3", 552, 400, 59, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _insert()
    EndSwitch
    WEnd

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

    Func _insert()
    $string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
    If @error Then
    $msgbox = MsgBox(48 + 5, "Keine Auswahl", "Es wurde/n keine Datei/en ausgewählt!")
    If $msgbox = 4 Then _insert()
    Else
    $array = StringSplit($string, '|')
    If $array[0] = 1 Then $x = 1
    For $i = 2-$x To $array[0]
    If $x = 0 Then
    $path = $array[1]&"\"&$array[$i]
    Else
    $path = $array[1]
    EndIf
    If Not _FileReadToArray($path, $array1) Then
    MsgBox(4096, "Fehler", "Fehler beim einlesen der Datei in das Array"&@CRLF&"Fehler: "&@error)
    ExitLoop(1)
    EndIf
    If $array1[0] >=1 Then
    For $a = 1 To $array1[0]
    GUICtrlCreateListViewItem($array1[$a], $ListView1)
    Next
    EndIf
    Next
    EndIf
    EndFunc

    [/autoit]

    Probiers mal =)
    Ich bin mir nicht sicher, ob es auch beim .csv - Format geht.
    Ich bin mir nicht mal sicher, ob es überhaupt funktioniert. xD

    Edit1: Hab nen kleinen Fehler gefunden. Müsste jetzt funktionieren.
    Edit2: Jetzt endgültig xD - geht auch bei .csv

    4 Mal editiert, zuletzt von seTTs (2. Juni 2009 um 17:47)

  • Hallo seTTs,

    es ist ja nett, dass du helfen möchtest aber das wichtigste (nämlich das Einlesen der ausgewählten Datei mit File....) vermisse ich auch bei dir. Da aber subzero007 die Lösung (aus einem anderen Thread) auf seiner Festplatte hat, hab ich ihm schon viel zu viele Hinweise gegeben,

    mfg (Auto)Bert

  • Ich versteh dich nicht ganz.
    In meinem Script lese ich die Files aus und liste die Daten dann auf.
    ?
    Oder meintest du was anderes?

  • autoBert : du hast ja recht ich habe mir ja versprochen und euch, mehr selbst zu machen,
    hatte es ja von anfang an als beispiel genommen so hatte ich mir ja esversucht einfach zu machen aber was mache ich falsch?
    will doch kein lösungsweg sondern wissen was ich falsch mache?

    und was ist daran falsch wenn mir es jemand erklären würde wäre es für mich goldwert,
    anstatt alles fertig zu servieren ich hoffe ich lehne mich jetzt nicht dabei nicht zu sehr aus dem fenster

    Spoiler anzeigen
    [autoit]

    Func _insert()

    $string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4 )
    $array = $string
    For $i = 0 To UBound($array) - 1
    GUICtrlCreateListViewItem($array[$i], $ListView1)

    Next
    EndFunc

    [/autoit]


    so hatte ich es im grupp members gemacht ;)

    Spoiler anzeigen
    [autoit]

    Func NewItems1()
    _GUICtrlListView_DeleteAllItems($hListView)
    $string = FileRead(@ScriptDir & '\logs\gruppen.txt')
    $array = StringRegExp($string, 'CN=(.+?),.*', 3)
    For $i = 0 To UBound($array) - 1
    GUICtrlCreateListViewItem($array[$i], $hListView)
    Next
    EndFunc

    [/autoit]


    oder wenn keiner mir sagen kann was ich falsch mache ob jemand mir sagen kann wieso das funktioniert
    habe noch anfängliche probleme mit aarays habe ich das gefühl!!!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <array.au3>
    #Include <File.au3>

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

    Local $ad, $array1, $x = 0

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 700, 510, 257, 323)
    $ListView1 = GUICtrlCreateListView("Listview1", 24, 48, 170, 342)
    GUICtrlSendMsg($ListView1, $LVM_SETCOLUMNWIDTH, 0, 160) ; setzt die 1. Spalte des Listviews auf 160 Pixel Breite
    $ListView2 = GUICtrlCreateListView("Listview2", 224, 48, 170, 342)
    $ListView3 = GUICtrlCreateListView("Listview3", 424, 48, 186, 342)
    $Button1 = GUICtrlCreateButton("PC`s Laden", 24, 400, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Check", 24, 432, 75, 25, 0)
    $Button3 = GUICtrlCreateButton("export1", 136, 400, 59, 25, 0)
    $Button4 = GUICtrlCreateButton("export2", 336, 400, 59, 25, 0)
    $Button5 = GUICtrlCreateButton("export3", 552, 400, 59, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _insert()
    EndSwitch
    WEnd

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

    Func _insert()
    $string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
    If @error Then
    $msgbox = MsgBox(48 + 5, "Keine Auswahl", "Es wurde/n keine Datei/en ausgewählt!")
    If $msgbox = 4 Then _insert()
    Else
    $array = StringSplit($string, '|')
    If $array[0] = 1 Then $x = 1
    For $i = 2-$x To $array[0]
    If $x = 0 Then
    $path = $array[1]&"\"&$array[$i]
    Else
    $path = $array[1]
    EndIf
    If Not _FileReadToArray($path, $array1) Then
    MsgBox(4096, "Fehler", "Fehler beim einlesen der Datei in das Array"&@CRLF&"Fehler: "&@error)
    ExitLoop(1)
    EndIf
    If $array1[0] >=1 Then
    For $a = 1 To $array1[0]
    GUICtrlCreateListViewItem($array1[$a], $ListView1)
    Next
    EndIf
    Next
    EndIf
    EndFunc

    [/autoit]

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

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

    2 Mal editiert, zuletzt von subzero007 (2. Juni 2009 um 18:04)

  • Hallo subzero007,

    wenn du den Inhalt der ausgewählten Datei haben willst must du diese auch (wie in Group Members) mit FileRead einlesen. FileOpenDialog liefert dir ja nur den Namen der Datei(en) und da ich davon ausgehe, dass du dir die Namen der PC's in einer Datei gespeichert hast must du in diesem Fall, die ausgewählte Datei in der Function FileRead einsetzen:

    [autoit]

    Func _insert()
    $string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4 )
    $array = StringSplit(FileRead($string),"|")
    For $i = 0 To UBound($array) - 1
    GUICtrlCreateListViewItem($array[$i], $ListView1)
    Next
    EndFunc

    [/autoit]


    falls du ein anderes Trennzeichen in der Datei verwendest, must du "|" in StringSplit anpassen (evtl. @CRLF :?: ), auch solltest du wieder alle ListViewItems vorher löschen,

    Edit: habe gerade gesehen, dass du deinen Beitrag editiert hast, das Beispiel von seTTs funktioniert, wenn es für jeden PC eine Datei mit dem Namen des PCs als Dateinamen existiert, dann verstehe ich aber deinen Hinweis auf das CSV-Format nicht.

    mfg (Auto)Bert

  • autoBert
    Danke langsam aber sicher macht es klick mit dem Array

    habe kein | als trennzeichen sondern CRLF
    So ist das ja auch falsch,

    Spoiler anzeigen
    [autoit]

    Func _insert()
    $string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4 )
    $array = StringSplit(FileRead($string),"@CRLF")
    For $i = 0 To UBound($array) - 1
    GUICtrlCreateListViewItem($array[$i], $ListView1)
    Next
    EndFunc

    [/autoit]

    wo kann ich das nachlesen in der hilfe habe ich nichts gefunden??
    Weil die Pc so dargestellt werden
    pc1pc2pc3

    also springt nicht in die nächste zeile
    es sollte ja so aussehen
    pc1
    pc2
    pc3

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

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

  • Hallo subzero007,

    lass die Anführungszeichen weg und es sollte klappen,

    PS.: um eine einzelne Zeile einzulesen kannst du auch FileReadLine nehmen

    mfg (Auto)Bert