Hilfe bei ListView!

  • hallo,
    ich habe folgendes skript:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>

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

    GuiCreate("Server-Skript", 392, 315,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

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

    GuiCtrlCreateGroup("Liste", 10, 30, 370, 210)
    $start = GuiCtrlCreateButton("Starten", 20, 260, 150, 40)
    $add = GuiCtrlCreateButton("Server hinzufügen", 180, 260, 150, 20)
    $del = GuiCtrlCreateButton("Server entfernen", 180, 280, 150, 20)
    $list = GuiCtrlCreateListView("Name | IP/Domain", 20, 50, 340, 175)

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

    GuiSetState()

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

    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $start
    MsgBox(0,"",GUICtrlRead(GUICtrlRead($list)))
    Case $msg = $add
    GUICtrlCreateListViewItem(Inputbox("Server hinzufügen","Name des Servers:", "", "", 100, 120) & " | " & InputBox("Server hinzufügen","IP/Domain des Servers:", "", "", 100, 120), $list)
    Case $msg = $del
    GUICtrlDelete(GUICtrlRead($list))
    Case Else
    ;;;
    EndSelect
    WEnd
    Exit

    [/autoit]

    wie mach ich es, dass die einträge, die ich selber hinzufüge ("Server hinzufügen") in einer INI gespeichert und beim nächsten programmstart wieder geladen werden?

    danke!

    Gruß
    alexirsi

    Edit GtaSpider: [03.08.2007 18:47]
    Spoiler Tags eingefügt

    • Offizieller Beitrag

    Hallo!

    Die schnellste möglichkeit würde wiefolgt aussehen:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>

    GuiCreate("Server-Skript", 392, 315,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

    GuiCtrlCreateGroup("Liste", 10, 30, 370, 210)
    $start = GuiCtrlCreateButton("Starten", 20, 260, 150, 40)
    $add = GuiCtrlCreateButton("Server hinzufügen", 180, 260, 150, 20)
    $del = GuiCtrlCreateButton("Server entfernen", 180, 280, 150, 20)
    $list = GuiCtrlCreateListView("Name | IP/Domain", 20, 50, 340, 175)

    $irs = IniReadSection("123.ini","Server")
    If Not @error Then
    For $i = 0 To $irs[0][0]-1
    $read = IniRead("123.ini","Server",$i,'')
    If $read <> '' Then GUICtrlCreateListViewItem($read,$list)
    Next
    EndIf

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


    GuiSetState()

    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $start
    MsgBox(0,"",GUICtrlRead(GUICtrlRead($list)))
    Case $msg = $add
    $lvtext = Inputbox("Server hinzufügen","Name des Servers:", "", "", 100, 120) & " | " & InputBox("Server hinzufügen","IP/Domain des Servers:", "", "", 100, 120)
    $irs = IniReadSection("123.ini","Server")
    If @error Then
    Dim $irs[1][1]
    $irs[0][0] = 0
    EndIf
    IniWrite("123.ini","Server",$irs[0][0],$lvtext)
    GUICtrlCreateListViewItem($lvtext, $list)
    Case $msg = $del
    IniWrite("123.ini","Server",GUICtrlRead($list) - 8,'')
    ConsoleWrite(GUICtrlRead($list) - 8 & @CRLF)
    GUICtrlDelete(GUICtrlRead($list))
    Case Else
    ;;;
    EndSelect
    WEnd
    Exit

    [/autoit]

    Mfg Spider

  • ah vielen dank spider :)
    ich schau mir das skript mal genauer an, und wenn ich noch probleme hab dann meld ich mich hier nochmal ^^

  • so hab noch was ^^
    (sry für doppelpost)

    wie kann ich die einträge verschlüsselt in der ini speichern? (also dass die ini nicht im klartext angesehen werden kann)

    • Offizieller Beitrag

    Hallo

    Das Funktioniert mit _StringEncrypt()

    Das Passwort wird hier oben bei $EncryPass deklariert:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <string.au3>

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

    Global $EncryPassw = "Passwort";Warnung: Das Passwort villeicht etwas.. intiligenter auswählen ;)

    GuiCreate("Server-Skript", 392, 315,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

    GuiCtrlCreateGroup("Liste", 10, 30, 370, 210)
    $start = GuiCtrlCreateButton("Starten", 20, 260, 150, 40)
    $add = GuiCtrlCreateButton("Server hinzufügen", 180, 260, 150, 20)
    $del = GuiCtrlCreateButton("Server entfernen", 180, 280, 150, 20)
    $list = GuiCtrlCreateListView("Name | IP/Domain", 20, 50, 340, 175)

    $irs = IniReadSection("123.ini","Server")
    If Not @error Then
    For $i = 0 To $irs[0][0]-1
    $read = _StringEncrypt(0,IniRead("123.ini","Server",$i,''),$EncryPassw)
    If $read <> '' Then GUICtrlCreateListViewItem($read,$list)
    Next
    EndIf


    GuiSetState()

    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $start
    MsgBox(0,"",GUICtrlRead(GUICtrlRead($list)))
    Case $msg = $add
    $lvtext = Inputbox("Server hinzufügen","Name des Servers:", "", "", 100, 120) & " | " & InputBox("Server hinzufügen","IP/Domain des Servers:", "", "", 100, 120)
    $irs = IniReadSection("123.ini","Server")
    If @error Then
    Dim $irs[1][1]
    $irs[0][0] = 0
    EndIf
    IniWrite("123.ini","Server",$irs[0][0],_StringEncrypt(1,$lvtext,$EncryPassw))
    GUICtrlCreateListViewItem($lvtext, $list)
    Case $msg = $del
    IniWrite("123.ini","Server",GUICtrlRead($list) - 8,'')
    ConsoleWrite(GUICtrlRead($list) - 8 & @CRLF)
    GUICtrlDelete(GUICtrlRead($list))
    Case Else
    ;;;
    EndSelect
    WEnd
    Exit

    [/autoit]

    Mfg Spider

  • danke, hab aber schon wieder was :D

    ich will, wenn ich auf "Starten" klicke, dass NUR die IP/Domain (ohne Namen) in einer MsgBox angezeigt wird.

    hab schon alle möglichen String-Funktionen angschaut, aber weiß immer noch nicht nicht wie ich das realisieren kann :(

    • Offizieller Beitrag

    Hallo

    Entweder dafür benutzt du StringSplit oder String(Trim)Left:

    [autoit]

    Global $String = "Test|123"

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

    ;Möglichkeit 1: Die einfachste, aber auch die längste ;)

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

    $ss = StringSplit($String,"|")
    MsgBox(0,"",$ss[2])

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

    ;Möglichkeit 2: Nicht ganz so einfach, aber dafür in einer Zeile

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

    MsgBox(0,"",StringTrimLeft($String,StringInStr($String,"|")))

    [/autoit]

    Mfg Spider

  • okay jetzt ist alles soweit fertig :)

    wie mach ich das aber, dass die spalten größer sind?
    die sind beim starten immer so klein -.-

  • Hi,
    hab deinen Thread nicht ganz durchgelesen :]

    wenn du aber die Spalten der ListView ändern willst, kannst du diesen Befehl nehmen

    [autoit]

    _GUICtrlListViewSetColumnWidth

    [/autoit]


    Viel Spaß :D