Aus ini listview item erstellen

  • Hey,

    wie kann ich aus einer ini listview items erstellen:

    so sieht meine ini aus:

    [SW_PACK]
    Adobe Acrobat ActiveX Fix=1.0;1.01;2007-02-28 13:40:00;RK0;MUI;BS111ADDC4H
    Microsoft Windows XP Patch KB900725=1.01;1.01;UA-Setup;RK0;;
    Stefan Heinz FreePDF XP=3.26;1.03;2009-06-19 18:38:25;RK0;MUI;QRV111AD0L4G
    ....

    so sollten meinen items aussehen:

    Adobe Acrobat ActiveX Fix|1.0|1.01|2007-02-28 13:40:00|RK0|MUI|BS111ADDC4H
    Microsoft Windows XP Patch KB900725|1.01|1.01|UA-Setup|RK0||
    Stefan Heinz FreePDF XP|3.26|1.03|2009-06-19 18:38:25|RK0|MUI|QRV111AD0L4G

    Wie mache ich das am besten?

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

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

    Einmal editiert, zuletzt von subzero007 (20. April 2010 um 10:43)

  • hey,
    an welcher stelle gibst du an welche Sektion gelesen werden soll?
    habe es nicht so richtig verstanden?

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

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

  • Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    global $ini = @ScriptDir & "\dvb-tools.ini" ;Pfad zur ini

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

    $Form1 = GUICreate("Ini read to Listview - Beispiel", 700, 500, -1, -1)
    $ListView1 = GUICtrlCreateListView("", 20, 20,660 , 350)
    $hlistview= GUICtrlGetHandle($ListView1)
    _GUICtrlListView_AddColumn($hListView, "Key", 200)
    _GUICtrlListView_AddColumn($hListView, "Value", 450)

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

    $Button2 = GUICtrlCreateButton("Iniread", 20, 420, 120, 33, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Button2
    _Initolistview($hlistview, $ini)
    EndSwitch
    WEnd

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

    Func _Initolistview($hwnd, $path)
    ; nuts (http://www.autoit.de)
    ; $hwnd = Handle to the listview
    ; $path = ini path
    local $anames, $aread
    If not IsHWnd($hwnd) then
    SetError(1) ;not a handle -> @error = 1
    Return
    ElseIf not FileExists($path) then
    SetError(2) ;ini not found -> @error = 2
    Return
    endif
    $anames = IniReadSectionNames($path) ; Namen aller Sections in ein Array laden
    $counter = -1;_GUICtrlListView_GetItemCount($hwnd) ;zählt mit start bei -1
    for $i = 1 to $anames[0] ;loop durchs Array der Sectionnames
    $aread = IniReadSection($path, $anames[$i]) ;ganze Section in ein Array laden
    if @error then ;sollte die Section leer sein
    $counter+= 1
    _GUICtrlListView_EnableGroupView($hwnd)
    _GUICtrlListView_InsertGroup($hwnd, -1, $i, $anames[$i]) ;die Gruppe für die Section erstellen
    _GUICtrlListView_AddItem($hwnd, "Kein Eintrag") ; Item "Kein Eintrag" erstellen -> hat nur informationscharakter
    _GUICtrlListView_SetItemGroupID($hwnd, $counter, $i) ; Item zur eben erstellten Gruppe zuordnen
    ContinueLoop ; loop verlassen und zum nächsten springen
    endif
    ;hier landen wir wenn die Section nicht leer war
    _GUICtrlListView_EnableGroupView($hwnd)
    _GUICtrlListView_InsertGroup($hwnd, -1, $i, $anames[$i]) ; die Gruppe für die Section erstellen
    for $x = 1 to $aread[0][0] ; Das Array mit den Daten zur Section durchgehen
    $counter+= 1
    _GUICtrlListView_AddItem($hwnd, $aread[$x][0]) ; Item erstellen für den Key in der INI
    _GUICtrlListView_AddSubItem($hwnd,$counter, $aread[$x][1],1) ; Subitem für den Value in der INI
    _GUICtrlListView_SetItemGroupID($hwnd, $counter, $i) ; Item der eben erstellten Gruppe hinzufügen
    next

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

    next
    endfunc

    [/autoit]


    In Zeile 46.

    Einmal editiert, zuletzt von nuts (21. April 2010 um 18:34)

  • ??

    er liesst doch alle sektionen wie kann ich ihm nur eine bestimmte sektion lesen lassen?

    SubZero

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

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

  • Zeiel 45 startet einen loop durch alle Sections.
    Anstatt dieser Schleife kannst du per Inireadsection auch nur eine bestimmte angeben.

    edit \ Habs mal kommentiert.

    Einmal editiert, zuletzt von nuts (21. April 2010 um 18:35)