Listview Item erstellen und Label erstellen.

  • Hey;

    habe folgende datei: Hardware.csv
    Systemname|Manufacturer|Product Name|Serial Number|Chassis Type|BIOS Name|BIOS Manufacturer|BIOS Version|Processor Type|Processor Description|Processor Max Clock Speed (Hz)|Logical CPU(s)|Physical CPU(s)|Memory Capacity (MB)|Memory Banks
    Hostname|FUJITSU SIEMENS|SCENIC W|YBES191407|Mini Tower|Version 5.00 R2.03.1567.01|FUJITSU SIEMENS // Phoenix Technologies Ltd.|5.00 R2.03.1567.01 |Intel(R) Pentium(R) 4 CPU 2.80GHz|x86 Family 15 Model 2 Stepping 9|2793|1|1|1024|4


    Möchte aus dieser datei folgedende listiview erstellen.
    Wie mache ich das?

    [autoit]

    $listview = GUICtrlCreateListView("Systemname|Manufacturer|Product Name|Serial Number|Chassis Type|BIOS Name|BIOS Manufacturer|BIOS Version|Processor Type|Processor Description|Processor Max Clock Speed (Hz)|Logical CPU(s)|Physical CPU(s)|Memory Capacity (MB)|Memory Banks", 32, 178, 300, 478)
    GUICtrlCreateListViewItem('Hostname|FUJITSU SIEMENS|SCENIC W|YBES191407|Mini Tower|Version 5.00 R2.03.1567.01|FUJITSU SIEMENS // Phoenix Technologies Ltd.|5.00 R2.03.1567.01 |Intel(R) Pentium(R) 4 CPU 2.80GHz|x86 Family 15 Model 2 Stepping 9|2793|1|1|1024|4', $ListView)

    [/autoit]

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

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

  • Hallo sbzero007,

    kannst du dafür sorgen, dass die CSV nach den Splatenbezeichnungen und jedem Datensatz anstelle von "|" @crlf als Trennzeichen benutzt. Dann wäre es sehr einfach zu lösen, (gibt es glaub ich schon)

    mfg (Auto)Bert

  • meinst du so?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $bsp = GuiCreate("bsp", 200, 200)
    $listview = GUICtrlCreateListView("Systemname|Manufacturer|Product Name|Serial Number|Chassis Type|BIOS Name|BIOS Manufacturer|BIOS Version|Processor Type|Processor Description|Processor Max Clock Speed (Hz)|Logical CPU(s)|Physical CPU(s)|Memory Capacity (MB)|Memory Banks", 1, 1, 198, 198)
    GUICtrlCreateListViewItem('Hostname|FUJITSU SIEMENS|SCENIC W|YBES191407|Mini Tower|Version 5.00 R2.03.1567.01|FUJITSU SIEMENS // Phoenix Technologies Ltd.|5.00 R2.03.1567.01 |Intel(R) Pentium(R) 4 CPU 2.80GHz|x86 Family 15 Model 2 Stepping 9|2793|1|1|1024|4', $ListView)
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    (ich hab die werte ein wenig abgeändert, das wird aber ja kein problem sein ;))

  • und wie kann ich dies aus der csv erzeugen?

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

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

  • statt GUICtrlCreateListViewItem("",... einfach GUICtrlCreateListViewItem(FileRead(".\DeineDatei.csv"),...
    ist das denn so schwer?

    Edit1:
    hab die erste spalte vergessen ^^
    einfach

    [autoit]

    $string = FileRead(".\DeineDatei.csv")
    $array = StringSplit($string, @CRLF, 1)
    ; Bei list view für die col : $array[1]
    ; Bei list view für die items : $array[2]

    [/autoit]

    wenn ich das jetzt richtig verstanden habe

  • ist wirklich nicht schwer mache ich bereits so:

    [autoit]

    Local $hFile = FileOpen(@ScriptDir&'\tools\sic\Output\'&$interface, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($ListViewSic) ; 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, $ListViewSic) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($ListViewSic) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf

    [/autoit]

    aber wie erzeuge ich aus der ersten zeile der csv folgendes?

    [autoit]

    $listview = GUICtrlCreateListView("Systemname|Manufacturer|Product Name|Serial Number|Chassis Type|BIOS Name|BIOS Manufacturer|BIOS Version|Processor Type|Processor Description|Processor Max Clock Speed (Hz)|Logical CPU(s)|Physical CPU(s)|Memory Capacity (MB)|Memory Banks", 1, 1, 198, 198)

    [/autoit]

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

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

  • Funktioniert soweit
    so jetzt zur meiner letzten frage ;)

    wie kann ich im dazu bringen das er nur ab der zweiten zeile listviewitems aus der csv erzeugt ?


    [autoit]


    Local $hFile = FileOpen(@ScriptDir&'\tools\sic\Output\'&$interface, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($ListViewSic) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen

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

    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen

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

    GUICtrlCreateListViewItem($sItem, $ListViewSic) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($ListViewSic) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf

    [/autoit]

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

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

  • Spoiler anzeigen
    [autoit]


    Func Load() ; Datenbank-Datei laden
    _GUICtrlListView_DeleteAllItems($hLVHandle)
    Local $sItem
    Local $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    Local $hLabelInfo = FileReadLine($hfile) ; 1. Zeile der Datenbank wird gelesen -> Für Labelbeschriftung
    ; GUICtrlSetData($hinput ,$hLabelInfo)
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($hLVHandle) ; 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, $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Load

    [/autoit]
  • hey,

    so mache ich es ja auch,

    Spoiler anzeigen
    [autoit]

    Func _fileconv($interface)

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

    if not FileExists(@ScriptDir&'\tools\sic\Output\'&$interface) then Return

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

    Dim $sFilePath = @ScriptDir&'\tools\sic\Output\'&$interface
    Dim $outFile = @ScriptDir&'\tools\sic\Output\'&$interface
    Dim $aArray
    _FileReadToArray($sFilePath, $aArray) ; datei in Array lesen
    For $i = 1 To $aArray[0] ; zeilenweise durchgehen
    $aArray[$i] = StringReplace($aArray[$i], ';', '|') ; der String wird ersetzt durch den String mit der Eingabe
    Next
    If FileExists($outFile) Then FileDelete($outFile) ; falls Ausgabedatei bereits vorhanden - löschen
    _FileWriteFromArray($outFile, $aArray, 1) ; vom Array in Ausgabedatei schreiben

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

    Local $hFile = FileOpen(@ScriptDir&'\tools\sic\Output\'&$interface, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($ListViewSic) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen

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

    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen

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

    GUICtrlCreateListViewItem($sItem, $ListViewSic) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($ListViewSic) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf
    ;$zeile1 = FileReadLine($hFile, 1)
    ;$zeile1 = FileReadLine($hFile, 1)
    ;$ListViewSic = GUICtrlCreateListView($zeile1 , 200, 216, 770, 470)

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

    EndFunc

    [/autoit]

    Aber er erstellt aus der ganzen datei die listview einträge und nicht ab der zweiten zeile?

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

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

  • Hallo subzero007,

    die Lösung von nuts funktioniert. Du must bei deiner Lösung nur den Beginn der Schleife erhöhen:

    [autoit]

    For $i = 2 To $aArray[0] ; zeilenweise durchgehen

    [/autoit]

    mfg (Auto)Bert

  • so jetzt richtig?

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIListView.au3>

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

    $string1 = StringReplace(FileReadLine(@ScriptDir & "\hardware.txt", 1), ";", "|")
    $string2 = FileReadLine(@ScriptDir & "\hardware.txt", 2)

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

    $Form1 = GUICreate("Form1", 327, 505, 192, 124)
    $ListView1 = GUICtrlCreateListView($string1, 8, 16, 313, 401)
    GUICtrlCreateListViewItem($string2, $ListView1)
    $Button1 = GUICtrlCreateButton("Button1", 112, 448, 105, 33, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • nuts
    Danke...........

    Funktioniert Super

    eine frage noch wenn ich mit:

    [autoit]

    GUICtrlSetData

    [/autoit]


    eine listview editiere
    1|2|3|4|5|6|
    und anschliessend in die gleiche listview folgendes schreibe:
    a|b|c|
    dann sehe ich noch 4|5|6|
    was kann ich dagegen tun?
    das ich nur a|b|c| sehe und nicht a|b|c|4|5|6| ??

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

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

  • Hier die Datei:autoit.de/wcf/attachment/8938/

    Aber verstehe nicht wenn ich das umsetze,
    For $i = 2 To $aArray[0

    dann habe ich doch nur in StringReplace was geändert oder verstehe ich jetzt was falsch?

    sorry ich habe es nur flüchtig überflogen, nimm die Lösung von nuts die funktioniert,

    Edit: wenn du mit GuiCtrlSetData alle Spalten verändert willst musst du auch alle angeben also

    [autoit]

    GuiCtrlSetData($LVId,"a|b|c||||")

    [/autoit]

    mfg (Auto)Bert

  • Mhhh??

    es sind immer unterschiedlich viele spalte die sich auch ändern?
    wie mache ich das am besten?

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

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

  • Hallo subzero007,

    Zitat von Hilfe

    Für ListView, ListViewItem Controls:
    Um eine bestimmte Spalte zu verändern, wird für die anderen Spalten einfach "nichts" angegeben, z.B. verändert "||update" nur die dritte Spalte.

    Falls "update" leer ist, wird die Spalte bzw. subitem gelöscht. Zum Beispiel wird "|" die zweite Spalte bzw. Subitem löschen, "" wird die erste Spalte löschen.


    mit

    [autoit]

    _GUICtrlListView_GetColumnCount

    [/autoit]

    kannst du die Spaltenanzahl ermitteln und dem entsprechend mit "|" auffüllen, falls die nachfolgenden Spalten gelöscht werden sollen,

    mfg (Auto)Bert

  • hey,

    kannst du mir das als beispiel erklären wie ich das mit diesen werten machen müsste?

    1|2|3|4|5|6|

    a|b|c


    Danke

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

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