Listview Editbox

  • Hallo habe wiedermal was vor und brauche eine start hilfe;
    Soll ugefähr so aussehen. autoit.de/wcf/attachment/5077/

    In die Listview will ich einen inhalt eines Ordners Anzeigen lassen *.ini
    nach dem klick auf einen eintrag in der listview soll es in der editbox dargestellt werden und editierbar sein.

    die ini dateien sind in blöcken aufgeteilt also text @crlf dann wieder text @crlf die anzahl der blöcke ist unterschiedlich.
    ich will über die Buttons zeile einfügen fest definierte zeilen einfügen "da wo sich die @crlf befinden" also die lücken zwischen den blöcken
    Speichern button soll an einen fest definierten ort die datei speichernLöschen ist klar inhalt der edit löschen.
    würde mich über eine start hilfe sehr freuen

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 447, 192, 124)
    $Edit1 = GUICtrlCreateEdit("", 88, 48, 249, 280)
    GUICtrlSetData(-1, "Edit1")
    $ListView1 = GUICtrlCreateListView("", 344, 48, 250, 280)
    $Zeile_x_einfugen = GUICtrlCreateButton("Zeile_x_einfugen", 0, 88, 91, 25, $WS_GROUP)
    $Zeile_yeinfugen = GUICtrlCreateButton("Zeile_y_einfugen", 1, 114, 91, 25, $WS_GROUP)
    $Zeile_z_einfugen = GUICtrlCreateButton("Zeile_z_einfugen", 0, 136, 91, 25, $WS_GROUP)
    $Ordnerinhalt_Listview = GUICtrlCreateLabel("Ordnerinhalt_Listview", 360, 24, 178, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $DATEI_EDIT = GUICtrlCreateLabel("DATEI_EDIT", 136, 24, 67, 17)
    $Speichern = GUICtrlCreateButton("Speichern", 112, 328, 75, 25, $WS_GROUP)
    $Edit_loeschen = GUICtrlCreateButton("Edit_loeschen", 184, 328, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    EndSwitch
    WEnd

    [/autoit]


    Danke

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

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

    Einmal editiert, zuletzt von subzero007 (24. Juni 2009 um 09:39)

  • Muss schon sagen: Im Vergleich zu deinen ersten Threads hastu dich bezüglich des Fragens extrem verbessert :thumbup: Weiter so!

    Hoffe das kann dir helfen ->

    Spoiler anzeigen
    [autoit]

    ;~ #include <ButtonConstants.au3>
    #Include <GuiListBox.au3>
    ;~ #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    ;~ #include <ListViewConstants.au3>
    ;~ #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $folder, $array

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

    Opt("GuiOnEventMode",1)
    $Form1 = GUICreate("Form1", 633, 370, -1, -1)
    GuiSetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Edit1 = GUICtrlCreateEdit("", 108, 48, 249, 280)
    $hListBox = GUICtrlCreateList("", 370, 48, 250, 280)
    $Zeile_x_einfugen = GUICtrlCreateButton("Zeile X einfügen", 10, 128, 91, 25)
    $Zeile_yeinfugen = GUICtrlCreateButton("Zeile Y einfügen", 10, 159, 91, 25)
    $Zeile_z_einfugen = GUICtrlCreateButton("Zeile Z einfügen", 10, 190, 91, 25)
    $InsFol = GUICtrlCreateButton("Ordner einfügen", 440, 338, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insFol")
    $Ordnerinhalt_Listview = GUICtrlCreateLabel("ORDNER LIST", 372, 24, 178, 20)
    $DATEI_EDIT = GUICtrlCreateLabel("DATEI EDIT", 110, 24, 67, 17)
    $Speichern = GUICtrlCreateButton("Speichern", 140, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_save")
    $Edit_loeschen = GUICtrlCreateButton("Edit löschen", 220, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_del")
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    While 1
    sleep(100)
    WEnd

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

    Func _insFol()
    _GUICtrlListBox_ResetContent($hListBox)
    $folder = FileSelectFolder("Wählen Sie einen Ordner aus:", @DesktopDir)
    If $folder <> "" Then
    GuICtrlSetData($Edit1, "")
    $array = _FileListToArray($folder, "*.ini",1)
    For $i = 1 To Ubound($array)-1
    _GUICtrlListBox_AddFile($hListBox, $folder&"/"&$array[$i])
    Next
    EndIf
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hListBox) Then $hWndListBox = GUICtrlGetHandle($hListBox)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF)
    $iCode = BitShift($iwParam, 16)

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

    Switch $hWndFrom
    Case $hListBox, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK
    $sel = _GUICtrlListBox_GetCurSel($hListBox)
    If $sel <> -1 Then
    GuICtrlSetData($Edit1, FileRead($folder&"/"&$array[$sel+1]))
    EndIf
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

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

    Func _save()
    $saveFile = FileSaveDialog("Wählen Sie einen Ordner aus:", @DesktopDir,"Files(*.*)")
    If $saveFile <> "" Then
    FileWrite($saveFile, GuiCtrlRead($Edit1))
    EndIf
    EndFunc

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

    Func _del()
    GuICtrlSetData($Edit1, "")
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    Hab ehrlich gesagt noch nich deine 3 Buttons verstanden, aber der Rest sollte drin sein!

  • Jo hatte mich schon gewundert :D

    So hab sogar den zweiten Teil entschlüsselt und vereinfacht dazugefügt ->

    Spoiler anzeigen
    [autoit]

    ;~ #include <ButtonConstants.au3>
    #Include <GuiListBox.au3>
    ;~ #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    ;~ #include <ListViewConstants.au3>
    ;~ #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $folder, $array,$string

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

    Opt("GuiOnEventMode",1)
    $Form1 = GUICreate("Form1", 633, 370, -1, -1)
    GuiSetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Edit1 = GUICtrlCreateEdit("", 108, 48, 249, 280)
    $hListBox = GUICtrlCreateList("", 370, 48, 250, 280)
    $Zeile_x_einfugen = GUICtrlCreateButton("Zeile X einfügen", 10, 128, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $Zeile_yeinfugen = GUICtrlCreateButton("Zeile Y einfügen", 10, 159, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $Zeile_z_einfugen = GUICtrlCreateButton("Zeile Z einfügen", 10, 190, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $InsFol = GUICtrlCreateButton("Ordner einfügen", 440, 338, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insFol")
    $Ordnerinhalt_Listview = GUICtrlCreateLabel("ORDNER LIST", 372, 24, 178, 20)
    $DATEI_EDIT = GUICtrlCreateLabel("DATEI EDIT", 110, 24, 67, 17)
    $Speichern = GUICtrlCreateButton("Speichern", 140, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_save")
    $Edit_loeschen = GUICtrlCreateButton("Edit löschen", 220, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_del")
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    While 1
    sleep(100)
    WEnd

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

    Func _insFol()
    _GUICtrlListBox_ResetContent($hListBox)
    $folder = FileSelectFolder("Wählen Sie einen Ordner aus:", @DesktopDir)
    If $folder <> "" Then
    GuICtrlSetData($Edit1, "")
    $array = _FileListToArray($folder, "*.ini",1)
    For $i = 1 To Ubound($array)-1
    _GUICtrlListBox_AddFile($hListBox, $folder&"/"&$array[$i])
    Next
    EndIf
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hListBox) Then $hWndListBox = GUICtrlGetHandle($hListBox)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF)
    $iCode = BitShift($iwParam, 16)
    Switch $hWndFrom
    Case $hListBox, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK
    $sel = _GUICtrlListBox_GetCurSel($hListBox)
    If $sel <> -1 Then
    $read = FileRead($folder&"/"&$array[$sel+1])
    $split = StringSplit($read, "")
    For $i = 1 To $split[0]
    If $split[$i] = "[" Then
    $string &= @CRLF
    EndIf
    $string &= $split[$i]
    Next
    GuICtrlSetData($Edit1, $string)
    EndIf
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

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

    Func _insLine()
    BlockInput(1)
    ControlFocus($Form1,"",$Edit1)
    Send(@Gui_CtrlId)
    BlockInput(0)
    EndFunc

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

    Func _save()
    $saveFile = FileSaveDialog("Wählen Sie einen Ordner aus:", @DesktopDir,"Files(*.*)")
    If $saveFile <> "" Then
    FileWrite($saveFile, GuiCtrlRead($Edit1))
    EndIf
    EndFunc

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

    Func _del()
    GuICtrlSetData($Edit1, "")
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
  • Danke erstmall für die Vielen Antworten : Danke Danke Danke ;)

    habe ein ein Problem das er nur wo der Courser ist die zeile einfügt er soll ja die lücke herausfinden und dort die zeile einfügen,
    habe versucht es in der txt zu beschreiben:autoit.de/wcf/attachment/5084/

    Hat jemand eine idee?

    ein habe ich nicht verstanden wo in der dieser funktion fügst du die zahlen ein,6,7,8 ein???? ?( :

    [autoit]

    Func _insLine()
    BlockInput(1)
    ControlFocus($Form1,"",$Edit1)
    Send(@Gui_CtrlId)
    BlockInput(0)
    EndFunc

    [/autoit]

    Edit: (3h später)
    keiner eine idee?

    bernd670: Beiträge zusammengefasst!

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

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

    3 Mal editiert, zuletzt von bernd670 (13. Juni 2009 um 19:09)

  • oh anscheinend doch falsch verstanden.. meinstus so?:

    Spoiler anzeigen
    [autoit]

    #Include <GuiListBox.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <String.au3>

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

    Global $folder, $array,$string

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

    Opt("GuiOnEventMode",1)
    $Form1 = GUICreate("Form1", 633, 370, -1, -1)
    GuiSetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Edit1 = GUICtrlCreateEdit("", 108, 48, 249, 280)
    $hListBox = GUICtrlCreateList("", 370, 48, 250, 280)
    $Zeile_x_einfugen = GUICtrlCreateButton("Zeile X einfügen", 10, 128, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $Zeile_yeinfugen = GUICtrlCreateButton("Zeile Y einfügen", 10, 159, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $Zeile_z_einfugen = GUICtrlCreateButton("Zeile Z einfügen", 10, 190, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $InsFol = GUICtrlCreateButton("Ordner einfügen", 440, 338, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insFol")
    $Ordnerinhalt_Listview = GUICtrlCreateLabel("ORDNER LIST", 372, 24, 178, 20)
    $DATEI_EDIT = GUICtrlCreateLabel("DATEI EDIT", 110, 24, 67, 17)
    $Speichern = GUICtrlCreateButton("Speichern", 140, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_save")
    $Edit_loeschen = GUICtrlCreateButton("Edit löschen", 220, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_del")
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    While 1
    sleep(100)
    WEnd

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

    Func _insFol()
    _GUICtrlListBox_ResetContent($hListBox)
    $folder = FileSelectFolder("Wählen Sie einen Ordner aus:", @DesktopDir)
    If $folder <> "" Then
    GuICtrlSetData($Edit1, "")
    $array = _FileListToArray($folder, "*.ini",1)
    For $i = 1 To Ubound($array)-1
    _GUICtrlListBox_AddFile($hListBox, $folder&"/"&$array[$i])
    Next
    EndIf
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hListBox) Then $hWndListBox = GUICtrlGetHandle($hListBox)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF)
    $iCode = BitShift($iwParam, 16)
    Switch $hWndFrom
    Case $hListBox, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK
    $sel = _GUICtrlListBox_GetCurSel($hListBox)
    If $sel <> -1 Then
    $read = FileRead($folder&"/"&$array[$sel+1])
    $split = StringSplit($read, "")
    For $i = 1 To $split[0]
    If $split[$i] = "[" Then
    $string &= @CRLF
    EndIf
    $string &= $split[$i]
    Next
    GuICtrlSetData($Edit1, StringTrimLeft($string,1))
    EndIf
    EndSwitch
    $string = ""
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

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

    Func _insLine()
    $read = GuiCtrlRead($Edit1)
    If $read <> "" Then
    GuiCtrlSetData($Edit1, "")
    $split = StringSplit($read, @CR)
    For $i = 1 To Ubound ($split)-1
    If $split[$i] = @LF Then $split[$i] = "Button"&@Gui_Ctrlid&@CRLF
    $string &= $split[$i]&@CRLF
    Next
    GuICtrlSetData($Edit1, StringTrimRight($string,2))
    $string = ""
    EndIf
    EndFunc

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

    Func _save()
    $saveFile = FileSaveDialog("Wählen Sie einen Ordner aus:", @DesktopDir,"Files(*.*)")
    If $saveFile <> "" Then
    FileWrite($saveFile, GuiCtrlRead($Edit1))
    EndIf
    EndFunc

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

    Func _del()
    GuICtrlSetData($Edit1, "")
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
  • Ok zwei fragen habe ich noch ;)

    Suppe jetzt klappe es habe es bloss nicht verstanden an welcher stelle du die 5,6,7, einfügst?
    woher weiss er das es die 5 sein muss? will ja meinen text einfügen weiss aber nicht wo?

    noch einen bug habe ich wenn ich mehrer zeiilen abstände habe sind teilweise unterschiedlich die @crlf zwischen den blöcken
    ich will maximal einmal die zeile einfügen geht das?

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

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

  • Oh ja ganz vergessen das mit den Zahlen zu eklären:
    Im OnEventModus wird jedes zuletzt gedrückte Control im Macro-> @Gui_CtrlId gespeichert... Das ist verdammt nützlich um Funktionen zusammenfassen zu können. Wollte nur damit zeigen das die Funktion unterscheiden kann welchen Text sie ins Edit schreibt..
    Das heißt du kannst ganz einfach @Gui_CtrlId switchen und je nachdem entscheiden welchen Text du haben willst!

    So und zum zweiten:
    Hatte dir das schnell und dreckig am Raster von normalen Inis gemacht... Ist zwar immer noch schnell gemacht, sollte aber wesentlich besser gehn->

    Spoiler anzeigen
    [autoit]

    #Include <GuiListBox.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <String.au3>

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

    Global $folder,$array,$string, $sel, $stringAdd

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

    Opt("GuiOnEventMode",1)
    $Form1 = GUICreate("Form1", 633, 370, -1, -1)
    GuiSetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Edit1 = GUICtrlCreateEdit("", 108, 48, 249, 280)
    $hListBox = GUICtrlCreateList("", 370, 48, 250, 280)
    $Zeile_x_einfugen = GUICtrlCreateButton("Zeile X einfügen", 10, 128, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $Zeile_yeinfugen = GUICtrlCreateButton("Zeile Y einfügen", 10, 159, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $Zeile_z_einfugen = GUICtrlCreateButton("Zeile Z einfügen", 10, 190, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $InsFol = GUICtrlCreateButton("Ordner einfügen", 440, 338, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insFol")
    $Ordnerinhalt_Listview = GUICtrlCreateLabel("ORDNER LIST", 372, 24, 178, 20)
    $DATEI_EDIT = GUICtrlCreateLabel("DATEI EDIT", 110, 24, 67, 17)
    $Speichern = GUICtrlCreateButton("Speichern", 140, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_save")
    $Edit_loeschen = GUICtrlCreateButton("Edit löschen", 220, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_del")
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    While 1
    sleep(100)
    WEnd

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

    Func _insFol()
    _GUICtrlListBox_ResetContent($hListBox)
    $folder = FileSelectFolder("Wählen Sie einen Ordner aus:", @DesktopDir)
    If $folder <> "" Then
    GuICtrlSetData($Edit1, "")
    $array = _FileListToArray($folder, "*.ini",1)
    For $i = 1 To Ubound($array)-1
    _GUICtrlListBox_AddFile($hListBox, $folder&"/"&$array[$i])
    Next
    EndIf
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hListBox) Then $hWndListBox = GUICtrlGetHandle($hListBox)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF)
    $iCode = BitShift($iwParam, 16)
    Switch $hWndFrom
    Case $hListBox, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK
    $stringAdd = ""
    $sel = _GUICtrlListBox_GetCurSel($hListBox)
    If $sel <> -1 Then
    $read = FileRead($folder&"/"&$array[$sel+1])
    $split = StringSplit($read, "")
    For $i = 1 To $split[0]
    If $split[$i] = "[" Then
    $string &= @CRLF
    EndIf
    $string &= $split[$i]
    Next
    GuICtrlSetData($Edit1, StringTrimLeft($string,1))
    EndIf
    EndSwitch
    $string = ""
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

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

    Func _insLine()
    $stringAdd &= "Button"& @Gui_CtrlId & @CRLF
    $secN = IniReadSectionNames($folder&"/"&$array[$sel+1])
    For $i = 1 To Ubound($secN)-1
    $string &= "["&$secN[$i]&"]" &@CRLF
    $secK = IniReadSection($folder&"/"&$array[$sel+1], $secN[$i])
    For $j = 1 To Ubound($secK)-1
    $string &= $secK[$j][0] & "=" & $secK[$j][1] & @CRLF
    Next
    $string &= $stringAdd & @CRLF
    Next
    GuiCtrlSetData($Edit1, $string)
    $string = ""
    EndFunc

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

    Func _save()
    $saveFile = FileSaveDialog("Wählen Sie einen Ordner aus:", @DesktopDir,"Files(*.*)")
    If $saveFile <> "" Then
    FileWrite($saveFile, GuiCtrlRead($Edit1))
    EndIf
    EndFunc

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

    Func _del()
    GuICtrlSetData($Edit1, "")
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
  • danke danke:

    sobald ich eine datei reinladet mit mehreren blöcken und eine zeile einfügt löscht er den ganzen inhald der edit box???
    wenn nur ein block da ist alles ok

    hoffe du nimmst es mir nicht übel wegen @Gui_CtrlId weil ich es nicht verstanden habe??
    an welcher stelle kann ich den jetzt die zeile die ich einfüge nwollte editieren und nicht nur eine 5,6 oder 7 einfügen?? ?(

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

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

  • GuiCtrlID:

    Spoiler anzeigen
    [autoit]

    Func _insLine()
    Switch @GUI_CtrlId
    Case 5
    $stringAdd &= "Satz 1" & @CRLF
    Case 6
    $stringAdd &= "Satz 2" & @CRLF
    Case 7
    $stringAdd &= "Satz 3" & @CRLF
    EndSwitch
    $secN = IniReadSectionNames($folder&"/"&$array[$sel+1])
    For $i = 1 To Ubound($secN)-1
    $string &= "["&$secN[$i]&"]" &@CRLF
    $secK = IniReadSection($folder&"/"&$array[$sel+1], $secN[$i])
    For $j = 1 To Ubound($secK)-1
    $string &= $secK[$j][0] & "=" & $secK[$j][1] & @CRLF
    Next
    $string &= $stringAdd & @CRLF
    Next
    GuiCtrlSetData($Edit1, $string)
    $string = ""
    EndFunc

    [/autoit]

    Den Rest hab ich nicht verstanden!

  • ok jetzt habe ich es verstanden danke

    lade mal folgende ini autoit.de/wcf/attachment/5089/ "vorher umbennenen" in die edit box und versuche zeilen einzufügen der inhalt wird gelöscht ???

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

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

  • Das ist keine Ini -.- Guck dir mal den Aufbau von Initialisierungsdateien an!
    Alle Kategoerien müssen in Sections rein, deren Einträge nochmal in Key und Value getrennt ist... Kla das da IniRead fehlschlägt ;)

    Also fangen wir nochmal beim Anfang an.. Willstu Textdateien oder Initialisierungsdateien bearbeiten?

  • wenn du es so nimmst txt haben aber die endung ini

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

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

  • Ivch glaube ich habe mich falsch ausgedrückt wir nutzen eine datei die die endung ini hat, dort sind steuerbefehle wie
    die instalation einer software zu laufen hat habe aber kein übliches ini datei format,
    daher hatte ich mit ini angefangen ist das möglich das was ich machen möchte mit dem format als beispiel wie in der txt
    bestimmte zeilen einfügen zwischen den blöcken??

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

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

  • Hmm ich glaub ich fang ab jetzt immer beim einfachsten an:

    Spoiler anzeigen
    [autoit]

    #Include <GuiListBox.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <String.au3>

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

    Global $folder,$array,$string, $sel, $stringAdd

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

    Opt("GuiOnEventMode",1)
    $Form1 = GUICreate("Form1", 633, 370, -1, -1)
    GuiSetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Edit1 = GUICtrlCreateEdit("", 108, 48, 249, 280)
    $hListBox = GUICtrlCreateList("", 370, 48, 250, 280)
    $Zeile_x_einfugen = GUICtrlCreateButton("Zeile X einfügen", 10, 128, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $Zeile_yeinfugen = GUICtrlCreateButton("Zeile Y einfügen", 10, 159, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $Zeile_z_einfugen = GUICtrlCreateButton("Zeile Z einfügen", 10, 190, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $InsFol = GUICtrlCreateButton("Ordner einfügen", 440, 338, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insFol")
    $Ordnerinhalt_Listview = GUICtrlCreateLabel("ORDNER LIST", 372, 24, 178, 20)
    $DATEI_EDIT = GUICtrlCreateLabel("DATEI EDIT", 110, 24, 67, 17)
    $Speichern = GUICtrlCreateButton("Speichern", 140, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_save")
    $Edit_loeschen = GUICtrlCreateButton("Edit löschen", 220, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_del")
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    While 1
    sleep(100)
    WEnd

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

    Func _insFol()
    _GUICtrlListBox_ResetContent($hListBox)
    $folder = FileSelectFolder("Wählen Sie einen Ordner aus:", @DesktopDir)
    If $folder <> "" Then
    GuICtrlSetData($Edit1, "")
    $array = _FileListToArray($folder, "*.ini",1)
    For $i = 1 To Ubound($array)-1
    _GUICtrlListBox_AddFile($hListBox, $folder&"/"&$array[$i])
    Next
    EndIf
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hListBox) Then $hWndListBox = GUICtrlGetHandle($hListBox)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF)
    $iCode = BitShift($iwParam, 16)
    Switch $hWndFrom
    Case $hListBox, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK
    $stringAdd = ""
    $sel = _GUICtrlListBox_GetCurSel($hListBox)
    If $sel <> -1 Then
    $read = FileRead($folder&"/"&$array[$sel+1])
    $split = StringSplit($read, "")
    For $i = 1 To $split[0]
    If $split[$i] = "[" Then
    $string &= @CRLF
    EndIf
    $string &= $split[$i]
    Next
    GuICtrlSetData($Edit1, StringTrimLeft($string,1)&@CRLF)
    EndIf
    EndSwitch
    $string = ""
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

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

    Func _insLine()
    Switch @GUI_CtrlId
    Case 5
    $stringAdd = "Satz 1" & @CRLF & @CRLF
    Case 6
    $stringAdd = "Satz 2" & @CRLF & @CRLF
    Case 7
    $stringAdd = "Satz 3" & @CRLF & @CRLF
    EndSwitch
    $string = StringReplace(GuiCtrlRead($Edit1), @CRLF&@CRLF, @CRLF & $stringAdd)
    GuICtrlSetData($Edit1, $string)
    $string = ""
    EndFunc

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

    Func _save()
    $saveFile = FileSaveDialog("Wählen Sie einen Ordner aus:", @DesktopDir,"Files(*.*)")
    If $saveFile <> "" Then
    FileWrite($saveFile, GuiCtrlRead($Edit1))
    EndIf
    EndFunc

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

    Func _del()
    GuICtrlSetData($Edit1, "")
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
  • wie kann man das einschränken das er nur einmal die zeile je block schreibt weil ,
    wenn der text zwischen den blöcken mehrer @crlf hat dann schreib er den text mehrmal rein.

    Habe da eine idee weiss aber nicht wie ich es machen sollte?
    falls mehrer zeilen abstände da sind das er sie reduziert auf 1 @CRLF dann würde es ja gehen oder dann würde er die zeile einmal schreiben oder?


    versprochen das ist das letzte was ich habe :)

    Edit1: (5h später)
    Finde leider auch nichts in der sufu hat jemand eine idee wie ich es vollenden kann?

    Edit2: (weitere 7,5h später)
    keiner ein tipp für mich ??

    bernd670: Beiträge zusammengefasst!

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

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

    3 Mal editiert, zuletzt von bernd670 (13. Juni 2009 um 19:11)

  • Hey,
    bin schonmal ein Schritt weiter
    Habe noch ein Problem:
    Wenn ich die ini in die Editbox lade und eine Zweite ini lade sollte der inhalt nicht gelöscht werden also unten an die editbox eingefügt werden, wie mache ich das??

    Spoiler anzeigen
    [autoit]

    #Include <GuiListBox.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <String.au3>

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

    Global $folder,$array,$string, $sel, $stringAdd

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

    Opt("GuiOnEventMode",1)
    $Form1 = GUICreate("Form1", 633, 370, -1, -1)
    GuiSetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Edit1 = GUICtrlCreateEdit("", 108, 48, 249, 280)
    $hListBox = GUICtrlCreateList("", 370, 48, 250, 280)
    $Zeile_x_einfugen = GUICtrlCreateButton("Zeile X einfügen", 10, 128, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $Zeile_yeinfugen = GUICtrlCreateButton("Zeile Y einfügen", 10, 159, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $Zeile_z_einfugen = GUICtrlCreateButton("Zeile Z einfügen", 10, 190, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insline")
    $InsFol = GUICtrlCreateButton("Ordner einfügen", 440, 338, 91, 25)
    GuiCtrlSetOnEvent(-1, "_insFol")
    $Ordnerinhalt_Listview = GUICtrlCreateLabel("ORDNER LIST", 372, 24, 178, 20)
    $DATEI_EDIT = GUICtrlCreateLabel("DATEI EDIT", 110, 24, 67, 17)
    $Speichern = GUICtrlCreateButton("Speichern", 140, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_save")
    $Edit_loeschen = GUICtrlCreateButton("Edit löschen", 220, 338, 75, 25)
    GuiCtrlSetonevent(-1, "_del")
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    While 1
    sleep(100)
    WEnd

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

    Func _insFol()
    _GUICtrlListBox_ResetContent($hListBox)
    $folder = FileSelectFolder("Wählen Sie einen Ordner aus:", @DesktopDir)
    If $folder <> "" Then
    GuICtrlSetData($Edit1, "")
    $array = _FileListToArray($folder, "*.ini",1)
    For $i = 1 To Ubound($array)-1
    _GUICtrlListBox_AddFile($hListBox, $folder&"/"&$array[$i])
    Next
    EndIf
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hListBox) Then $hWndListBox = GUICtrlGetHandle($hListBox)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF)
    $iCode = BitShift($iwParam, 16)
    Switch $hWndFrom
    Case $hListBox, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK
    $stringAdd = ""
    $sel = _GUICtrlListBox_GetCurSel($hListBox)
    If $sel <> -1 Then
    $read = FileRead($folder&"/"&$array[$sel+1])
    $split = StringSplit($read, "")
    For $i = 1 To $split[0]
    If $split[$i] = "[" Then
    $string &= @CRLF
    EndIf
    $string &= $split[$i]
    Next
    GuICtrlSetData($Edit1, StringTrimLeft($string,1)&@CRLF)
    $string = StringReplace(GuiCtrlRead($Edit1), @CRLF&@CRLF, @CRLF); & $stringAdd)
    GuICtrlSetData($Edit1, $string)
    $string = StringReplace(GuiCtrlRead($Edit1), @CRLF&@CRLF&@CRLF, @CRLF); & $stringAdd)
    GuICtrlSetData($Edit1, $string)
    $string = ""
    EndIf
    EndSwitch

    ;$string = ""

    EndSwitch
    Return $GUI_RUNDEFMSG

    EndFunc ;==>WM_COMMAND

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

    Func _insLine()
    Switch @GUI_CtrlId
    Case 5
    $stringAdd = "Satz 1" & @CRLF & @CRLF
    Case 6
    $stringAdd = "Satz 2" & @CRLF & @CRLF
    Case 7
    $stringAdd = "Satz 3" & @CRLF & @CRLF
    EndSwitch
    $string = StringReplace(GuiCtrlRead($Edit1), @CRLF&@CRLF, @CRLF & $stringAdd)
    GuICtrlSetData($Edit1, $string)
    $string = ""
    EndFunc

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

    Func _save()
    $saveFile = FileSaveDialog("Wählen Sie einen Ordner aus:", @DesktopDir,"Files(*.*)")
    If $saveFile <> "" Then
    FileWrite($saveFile, GuiCtrlRead($Edit1))
    EndIf

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

    EndFunc

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

    Func _del()
    GuICtrlSetData($Edit1, "")
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    wenn ich in zeile 75

    [autoit]

    ;$string = ""

    [/autoit]

    das mache dann klappt das ja auch aber meine @crlf verschwinden von der ersten ini die ich eingefügt habe??

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

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

    Einmal editiert, zuletzt von subzero007 (23. Juni 2009 um 11:50)

  • Hallo subzero007,

    sollte eigentlich reichen wenn du Zeile 41 löscht. Ich hoffe, ich habe das Problem auf die Schnelle richtig erkannt. Einfach ausprobieren.

    PS.: markiere deine erledigten Threads doch bitte mit [gelöst] (nähe Überschrift beimbearbeiten des 1. Beitrags)

    mfg (Auto)Bert

  • Danke funktioniert aber wenn ich eine andere ini reinlade dann löscht er wieder den inhalt?
    aber wenn ich gleiche reinlade ist alles in Ordnung????

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

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