ListViewItem mit Datei füllen

  • Helft mir doch bitte mal.

    Ich möchte ein ListViewItem mit dem Inhalt einer Variable füllen:

    [autoit]


    Func _ImageOpen()
    Local $dateiauswahl, $dir_kurz, $ordnername = GUICtrlRead($input_ordnername)
    If $ordnername = "" Then Return MsgBox(16, "Fehler", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    $dateiauswahl = _GUICtrlListView_GetSelectedIndices($listview_dateiliste, True)
    If $dateiauswahl[0] = 0 Then Return MsgBox(16, "Fehler", "Es wurde keine Datei ausgewählt!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Disketten-Image auslesen ...")
    For $i = 1 To $dateiauswahl[0]
    $dir = _getDOSOutput("c1541.exe " & '"' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]) & '"' & " -list")
    $dir_name = StringUpper(StringMid($dir, 4, 16))
    $dir_id = StringUpper(StringMid($dir, 21, 6))
    $dir_kurz = StringAddCR(StringUpper(StringTrimLeft(StringLeft($dir, StringInStr($dir, "free.") + 4), 27)))
    GUICtrlSetData($edit_name, $dir_name)
    GUICtrlSetData($edit_id, $dir_id)
    GUICtrlSetData($edit_dir, $dir_kurz)

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

    For $zeile = 1 To $dir_kurz[0] Step 1
    GUICtrlCreateListViewItem($dir_kurz[$zeile], $edit_dir_list)
    Next

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

    Next
    GUICtrlSetData($edit_vorgang, "")
    EndFunc

    [/autoit]

    Er meint Subscript used with nun-Aray variable.

    Mit Local müßte der Wert doch ein Array sein oder?

    4 Mal editiert, zuletzt von DerSchatten (28. Juli 2011 um 15:08)

  • Hallo DerSchatten,

    du verwendest 2 Arrays aber das Problem wird wohl hier liegen:

    [autoit]

    For $zeile = 1 To $dir_kurz[0] Step 1
    GUICtrlCreateListViewItem($dir_kurz[$zeile], $edit_dir_list)
    Next

    [/autoit]

    $dir_kurz ist aber kein Array. In Zukunf bitte die Fehlermeldung aus der Sciteconsole mitposten.

    mfg autoBert

  • Scite bringt gar keinen Fehler.

    Woher weist du dann die Fehlermeldung: "Subscript used with nun-Aray variable" diese Zeile ist ausführlicher.

    Wie müßte es denn richtig heißen? Da kein Array so:

    [autoit]

    For $zeile = 1 To $dir_kurz Step 1
    GUICtrlCreateListViewItem($dir_kurz, $edit_dir_list)
    Next

    [/autoit]

    ungetestet, da du ja nur ein Schnipsel eingestellt hast,

    mfg autoBert

  • Die Fehlerausgabe kommt bringt AutoIt selbst beim ausführen.

    Interessantes Ergebni: Ich bekomme zwar eine Ausgabe, allerdings alles Zeilen in einer Zeile und das x-mal nach unten wiederholt.

    Fehlt da nicht noch wo das $zeile ?

    Im Anhang: In der Mitte das Textfeld (richtig) , Rechts das Listenfeld

    Hier nochmal mein komplettes Programm:

    [autoit]


    #include <GUIConstants.au3>
    #Include <GuiListView.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #Include <File.au3>
    #Include <Array.au3>
    #include <Constants.au3>
    Opt('GUIOnEventMode', 1)
    ;GUI Main
    $gui_main = GUICreate("Zoom Copy 64", 1200, 600)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseGui')
    GUICtrlCreateGroup("Verzeichnis am lokalen PC", 8, 24, 316, 445)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Verzeichnis am IEC", 382, 24, 370, 445)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $input_ordnername = GUICtrlCreateInput("", 16, 48, 265, 20, BitOR($ES_LEFT, $ES_AUTOHSCROLL))
    $button_dateiauswahl = GUICtrlCreateButton("...", 286, 48, 30, 21)
    GUICtrlSetOnEvent(-1, '_AuswahlPfad')
    $combo_laufwerktyp = GUICtrlCreateCombo("", 98, 104, 143, 21)
    GUICtrlSetData(-1, "Alle Dateien|Image Dateien|Nibtools Dateien|D64 Dateien|D71 Dateien|D81 Dateien|G64 Dateien|NIB Dateien", "Alle Dateien")
    GUICtrlCreateLabel("Datei Filter:", 16, 107, 80, 18)
    GUICtrlSetFont(-1, 9, 600, 0)
    $listview_dateiliste = GUICtrlCreateListView("Dateiname", 16, 128, 225, 330)
    $combo_laufwerktyp = GUICtrlCreateCombo("", 302, 240, 80, 21)
    GUICtrlSetData(-1, "1541|1571", "1541")
    GUICtrlSetTip(-1, "Laufwerkstyp auswählen")
    GUICtrlCreateGroup("Übertragung", 294, 75, 80, 120)
    $radio1 = GUICtrlCreateRadio("Auto", 302, 94, 60, 14)
    $radio2 = GUICtrlCreateRadio("Original", 302, 114, 60, 14)
    $radio3 = GUICtrlCreateRadio("Seriell 1", 302, 134, 60, 14)
    $radio4 = GUICtrlCreateRadio("Seriell 2", 302, 154, 60, 14)
    $radio5 = GUICtrlCreateRadio("Parallel", 302, 174, 60, 14)
    GUICtrlSetState ($radio1, $GUI_CHECKED)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $combo_laufwerkid = GUICtrlCreateCombo("", 679, 47, 65, 21)
    GUICtrlSetData(-1, "8|9|10|11", "8")
    GUICtrlSetTip(-1, "Laufwerk-ID auswählen")
    GUICtrlCreateLabel("Laufwerk:", 679, 385, 60, 18)
    GUICtrlSetFont(-1, 9, 600, 0)
    GUICtrlCreateLabel("Disk:", 679, 76, 34, 18)
    GUICtrlSetFont(-1, 9, 600, 0)
    $edit_name = GUICtrlCreateEdit("", 392, 47, 207, 21, $ES_READONLY)
    GUICtrlSetTip(-1, "Diskettenname")
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xEEDBCD)
    $edit_id = GUICtrlCreateEdit("", 603, 47, 71, 21, $ES_READONLY)
    GUICtrlSetTip(-1, "Disketten-ID")
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xEEDBCD)
    $edit_dir_list = GUICtrlCreateListView("Dateiname", 792, 72, 280, 334)
    $edit_dir = GUICtrlCreateEdit("", 392, 72, 282, 334, $ES_READONLY+$WS_VSCROLL)
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xCDDAEE)
    $edit_status = GUICtrlCreateEdit("", 392, 410, 282, 21, $ES_READONLY)
    GUICtrlSetTip(-1, "Letzter Laufwerksstatus")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xCDDAEE)
    $edit_vorgang = GUICtrlCreateEdit("", 392, 438, 282, 21, $ES_READONLY)
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xD6EECD)
    $button_dir = GUICtrlCreateButton("Verzeichnis", 679, 98, 65, 25)
    GUICtrlSetTip(-1, "Verzeichnis im Laufwerk " & GUICtrlRead($combo_laufwerkid) & " auslesen")
    GUICtrlSetOnEvent(-1, '_DirIEC')
    $button_format = GUICtrlCreateButton("Format", 679, 137, 65, 25)
    GUICtrlSetTip(-1, "Diskette im Laufwerk " & GUICtrlRead($combo_laufwerkid) & " formatieren")
    GUICtrlSetOnEvent(-1, '_FormatIEC')
    $button_init = GUICtrlCreateButton("Initialisieren", 679, 165, 65, 25)
    GUICtrlSetTip(-1, "Laufwerk " & GUICtrlRead($combo_laufwerkid) & " initialisieren")
    GUICtrlSetOnEvent(-1, '_InitIEC')
    $button_valid = GUICtrlCreateButton("Überprüfen", 679, 193, 65, 25)
    GUICtrlSetTip(-1, "Dateisystem im Laufwerk " & GUICtrlRead($combo_laufwerkid) & " auf Fehler überprüfen")
    GUICtrlSetOnEvent(-1, '_CheckIEC')
    $button_status = GUICtrlCreateButton("Status", 679, 408, 65, 25)
    GUICtrlSetTip(-1, "Fehlerkanal von Laufwerk " & GUICtrlRead($combo_laufwerkid) & " auslesen")
    GUICtrlSetOnEvent(-1, '_StatusIEC')
    $button_reset = GUICtrlCreateButton("Reset", 679, 436, 65, 25)
    GUICtrlSetTip(-1, "Laufwerk " & GUICtrlRead($combo_laufwerkid) & " zurücksetzen")
    GUICtrlSetOnEvent(-1, '_ResetIEC')
    $button_d64 = GUICtrlCreateButton("Image öffnen", 302, 300, 65, 25)
    GUICtrlSetOnEvent(-1, '_ImageOpen')
    $button_schreiben = GUICtrlCreateButton("Kopieren", 302, 420, 65, 25)
    GUICtrlSetOnEvent(-1, '_CopyIEC')
    ;GUI Format
    $gui_format = GUICreate("Diskette im Laufwerk " & GUICtrlRead($combo_laufwerkid) & " formatieren", 392, 136)
    $input_formatname = GUICtrlCreateInput("leer", 20, 48, 140, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetLimit(-1, 16)
    $input_formatid = GUICtrlCreateInput("01", 170, 48, 50, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetLimit(-1, 2)
    $button_formatok = GUICtrlCreateButton("OK", 8, 82, 89, 25)
    GUICtrlSetOnEvent(-1, '_FormatIECOK')
    $button_formatbeenden = GUICtrlCreateButton("Schließen", 288, 82, 89, 25)
    GUICtrlSetOnEvent(-1, '_FormatIECClose')
    ;starte mit HauptGUI
    GUISetState(@sw_show, $gui_main)
    WinWaitClose($gui_main)
    Exit
    Func _CloseGui()
    GUIDelete($gui_main)
    EndFunc
    Func _getDOSOutput($command)
    Local $text = "", $Pid = Run('"' & @ComSpec & '" /c ' & $command, "", @SW_HIDE, 2 + 4)
    While 1
    $text &= StdoutRead($Pid, False, False)
    If @error Then ExitLoop ;MsgBox(16, "Fehler", "Kein IEC-Gerät gefunden!", 0, $gui_main)
    Sleep(10)
    WEnd
    Return $text
    EndFunc
    Func _DirIEC()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Verzeichnis auslesen ...")
    $dir = _getDOSOutput("cbmctrl.exe dir " & GUICtrlRead($combo_laufwerkid))
    $dir_status = StringMid($dir, StringInStr($dir, ",", 0, -3) - 2)
    If StringInStr($dir, "0 .") <> 0 Then
    $dir_name = StringUpper(StringMid($dir, StringInStr($dir, '"') + 1 , 16))
    GUICtrlSetData($edit_name, $dir_name)
    $dir_id = StringUpper(StringMid($dir, StringInStr($dir, '"', 0, 2) + 1 , 6))
    GUICtrlSetData($edit_id, $dir_id)
    $dir_kurz = StringAddCR(StringUpper(StringTrimLeft(StringLeft($dir, StringInStr($dir, "free.") + 4), 29)))
    GUICtrlSetData($edit_dir, $dir_kurz)
    EndIf
    GUICtrlSetData($edit_status, $dir_status)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _FormatIEC()
    GUISetState(@SW_DISABLE, $gui_main)
    GUISetState(@SW_SHOW, $gui_format)
    EndFunc
    Func _FormatIECOK()
    _FormatIECClose()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Diskette formatieren ...")
    $format = _getDOSOutput("cbmformat.exe -s " & GUICtrlRead($combo_laufwerkid) & ' "' & GUICtrlRead($input_formatname) & '",' & GUICtrlRead($input_formatid))
    $format_status = StringMid($format, StringInStr($format, ",", 0, -3) - 2)
    GUICtrlSetData($edit_status, $format_status)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _FormatIECClose()
    GUISetState(@SW_ENABLE, $gui_main)
    GUISetState(@SW_HIDE, $gui_format)
    EndFunc
    Func _InitIEC()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Laufwerk initialisieren ...")
    RunWait(@ComSpec & " /c cbmctrl.exe pcommand " & GUICtrlRead($combo_laufwerkid) & " i", "", @SW_HIDE)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _CheckIEC()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Dateisystem überprüfen ...")
    RunWait(@ComSpec & " /c cbmctrl.exe pcommand " & GUICtrlRead($combo_laufwerkid) & " v", "", @SW_HIDE)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _StatusIEC()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Fehlerkanal auslesen ...")
    $status = _getDOSOutput("cbmctrl.exe status " & GUICtrlRead($combo_laufwerkid))
    $status_kurz = StringMid($status, StringInStr($status, ",", 0, -3) - 2)
    GUICtrlSetData($edit_status, $status_kurz)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _ResetIEC()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Laufwerk zurücksetzen ...")
    RunWait(@ComSpec & " /c cbmctrl.exe reset", "", @SW_HIDE)
    Sleep (100)
    _StatusIEC()
    EndFunc
    Func _CopyIEC()
    Local $dateiauswahl, $ordnername = GUICtrlRead($input_ordnername)
    If $ordnername = "" Then Return MsgBox(16, "Fehler", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    $dateiauswahl = _GUICtrlListView_GetSelectedIndices($listview_dateiliste, True)
    If $dateiauswahl[0] = 0 Then Return MsgBox(16, "Fehler", "Es wurde keine Datei ausgewählt!", 0, $gui_main)
    _Feldvariablen()
    If GUICtrlRead($radio1) = $GUI_CHECKED Then
    $schreiben = "d64copy.exe -t auto -d " & GUICtrlRead($combo_typ) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio2) = $GUI_CHECKED Then
    $schreiben = "d64copy.exe -t original -d " & GUICtrlRead($combo_typ) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio3) = $GUI_CHECKED Then
    $schreiben = "d64copy.exe -t serial1 -d " & GUICtrlRead($combo_typ) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio4) = $GUI_CHECKED Then
    $schreiben = "d64copy.exe -t serial2 -d " & GUICtrlRead($combo_typ) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio5) = $GUI_CHECKED Then
    $schreiben = "nibwrite.exe -D" & GUICtrlRead($combo_laufwerkid) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '"'
    EndIf
    $dir = _getDOSOutput($schreiben)
    GUICtrlSetData($edit_dir, $dir)
    EndFunc
    Func _AuswahlPfad()
    Local $ordnername
    $ordnername = FileSelectFolder("", "", 2, "", $gui_main)
    If Not FileExists($ordnername) Then Return
    GUICtrlSetData($input_ordnername, $ordnername)
    _DirOpen()
    EndFunc
    Func _DirOpen()
    Local $aFilelist, $ordnername = GUICtrlRead($input_ordnername)
    If StringRight($ordnername, 1) <> "\" Then $ordnername &= "\"
    $aFilelist = _FileListToArray($ordnername, "*.d64", 1)
    If @error Then Return
    _GUICtrlListView_DeleteAllItems($listview_dateiliste)
    For $i = 1 To $aFilelist[0]
    GUICtrlCreateListViewItem($aFilelist[$i], $listview_dateiliste)
    Next
    _GUICtrlListView_SetColumnWidth(GUICtrlGetHandle($listview_dateiliste), 0, $LVSCW_AUTOSIZE)
    EndFunc
    Func _ImageOpen()
    Local $dateiauswahl, $ordnername = GUICtrlRead($input_ordnername)
    If StringRight($ordnername, 1) <> "\" Then $ordnername &= "\"
    If $ordnername = "" Then Return MsgBox(16, "Fehler", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    $dateiauswahl = _GUICtrlListView_GetSelectedIndices($listview_dateiliste, True)
    If $dateiauswahl[0] = 0 Then Return MsgBox(16, "Fehler", "Es wurde keine Datei ausgewählt!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Disketten-Image auslesen ...")
    For $i = 1 To $dateiauswahl[0]
    $dir = _getDOSOutput("c1541.exe " & '"' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]) & '"' & " -list")
    $dir_name = StringUpper(StringMid($dir, 4, 16))
    $dir_id = StringUpper(StringMid($dir, 21, 6))
    $dir_kurz = StringAddCR(StringUpper(StringTrimLeft(StringLeft($dir, StringInStr($dir, "free.") + 4), 27)))
    GUICtrlSetData($edit_name, $dir_name)
    GUICtrlSetData($edit_id, $dir_id)
    GUICtrlSetData($edit_dir, $dir_kurz)
    For $zeile = 1 To $dir_kurz Step 1
    GUICtrlCreateListViewItem($dir_kurz, $edit_dir_list)
    Next
    Next
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _Feldvariablen()
    GUICtrlSetData($edit_name, "")
    GUICtrlSetData($edit_id, "")
    GUICtrlSetData($edit_dir, "")
    GUICtrlSetData($edit_status, "")
    GUICtrlSetData($edit_vorgang, "")
    EndFunc

    [/autoit]
  • Hallo DerSchatten,

    dein eingestelltes Skript lässt sich nicht starten, die Fehlermeldungen der Scite-Console:

    Code
    >Running AU3Check (1.54.19.0)  from:C:\Programme\AutoIt3
    C:\Programme\AutoIt3\Examples\Tests\asdf234567.au3(181,66) : WARNING: $combo_typ: possibly used before declaration.
    		$schreiben = "d64copy.exe -t auto -d " & GUICtrlRead($combo_typ)
    		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\Tests\asdf234567.au3(181,66) : ERROR: $combo_typ: undeclared global variable.
    		$schreiben = "d64copy.exe -t auto -d " & GUICtrlRead($combo_typ)
    		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\Tests\asdf234567.au3 - 1 error(s), 1 warning(s)
    !>13:58:59 AU3Check ended.rc:2
    >Exit code: 0    Time: 7.070

    da ich aber unterwegs bin und meinen Akku schonen will bitte ich dich doch ein lauffähiges Skript einzustellen,

    mfg autoBert

  • Oki,

    hier nochmal das inzwischen etwas veränderte Script:

    [autoit]


    #include <GUIConstants.au3>
    #Include <GuiListView.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #Include <File.au3>
    #Include <Array.au3>
    #include <Constants.au3>
    Opt('GUIOnEventMode', 1)
    ;GUI Main
    $gui_main = GUICreate("Zoom Copy 64", 1200, 600)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseGui')
    GUICtrlCreateGroup("Verzeichnis am lokalen PC", 8, 24, 286, 445)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Verzeichnis am IEC", 394, 24, 370, 445)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $input_ordnername = GUICtrlCreateInput("D:\Downloads", 18, 48, 232, 21, BitOR($ES_LEFT, $ES_AUTOHSCROLL))
    $button_dateiauswahl = GUICtrlCreateButton("...", 254, 47, 30, 23)
    GUICtrlSetOnEvent(-1, '_AuswahlPfad')
    GUICtrlCreateLabel("Datei Filter:", 56, 107, 80, 18)
    GUICtrlSetFont(-1, 9, 600, 0)
    $combo_laufwerktyp = GUICtrlCreateCombo("", 140, 104, 143, 21)
    GUICtrlSetData(-1, "Alle Dateien|Image Dateien|Nibtools Dateien|D64 Dateien|D71 Dateien|D81 Dateien|G64 Dateien|NIB Dateien", "Alle Dateien")
    $button_refresh = GUICtrlCreateButton("Pfad speichern", 17, 74, 84, 25)
    GUICtrlSetTip(-1, "Verzeichnispfad speichern")
    GUICtrlSetOnEvent(-1, '_DirSave')
    $button_refresh = GUICtrlCreateButton("Neu laden", 200, 74, 84, 25)
    GUICtrlSetTip(-1, "Verzeichnis neu einlesen")
    GUICtrlSetOnEvent(-1, '_DirOpen')
    $listview_dateiliste = GUICtrlCreateListView("Dateiname", 18, 128, 265, 330)
    $combo_laufwerktyp = GUICtrlCreateCombo("", 304, 104, 80, 21)
    GUICtrlSetData(-1, "1541|1571", "1541")
    GUICtrlSetTip(-1, "Laufwerkstyp auswählen")
    GUICtrlCreateGroup("Übertragung", 304, 128, 80, 120)
    $radio1 = GUICtrlCreateRadio("Auto", 312, 147, 60, 14)
    $radio2 = GUICtrlCreateRadio("Original", 312, 167, 60, 14)
    $radio3 = GUICtrlCreateRadio("Seriell 1", 312, 187, 60, 14)
    $radio4 = GUICtrlCreateRadio("Seriell 2", 312, 207, 60, 14)
    $radio5 = GUICtrlCreateRadio("Parallel", 312, 227, 60, 14)
    GUICtrlSetState ($radio1, $GUI_CHECKED)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $combo_laufwerkid = GUICtrlCreateCombo("", 691, 47, 65, 21)
    GUICtrlSetData(-1, "8|9|10|11", "8")
    GUICtrlSetTip(-1, "Laufwerk-ID auswählen")
    GUICtrlCreateLabel("Laufwerk:", 691, 385, 60, 18)
    GUICtrlSetFont(-1, 9, 600, 0)
    GUICtrlCreateLabel("Disk:", 691, 76, 34, 18)
    GUICtrlSetFont(-1, 9, 600, 0)
    $edit_name = GUICtrlCreateEdit("", 404, 47, 207, 21, $ES_READONLY)
    GUICtrlSetTip(-1, "Diskettenname")
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xEEDBCD)
    $edit_id = GUICtrlCreateEdit("", 615, 47, 71, 21, $ES_READONLY)
    GUICtrlSetTip(-1, "Disketten-ID")
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xEEDBCD)
    $edit_dir_list = GUICtrlCreateListView("Dateiname", 792, 72, 280, 334)
    $edit_dir = GUICtrlCreateEdit("", 404, 72, 282, 334, $ES_READONLY+$WS_VSCROLL)
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xCDDAEE)
    $edit_status = GUICtrlCreateEdit("", 404, 410, 282, 21, $ES_READONLY)
    GUICtrlSetTip(-1, "Letzter Laufwerksstatus")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xCDDAEE)
    $edit_vorgang = GUICtrlCreateEdit("", 404, 438, 282, 21, $ES_READONLY)
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xD6EECD)
    $button_dir = GUICtrlCreateButton("Verzeichnis", 691, 98, 65, 25)
    GUICtrlSetTip(-1, "Verzeichnis im Laufwerk " & GUICtrlRead($combo_laufwerkid) & " auslesen")
    GUICtrlSetOnEvent(-1, '_DirIEC')
    $button_format = GUICtrlCreateButton("Format", 691, 137, 65, 25)
    GUICtrlSetTip(-1, "Diskette im Laufwerk " & GUICtrlRead($combo_laufwerkid) & " formatieren")
    GUICtrlSetOnEvent(-1, '_FormatIEC')
    $button_init = GUICtrlCreateButton("Initialisieren", 691, 165, 65, 25)
    GUICtrlSetTip(-1, "Laufwerk " & GUICtrlRead($combo_laufwerkid) & " initialisieren")
    GUICtrlSetOnEvent(-1, '_InitIEC')
    $button_valid = GUICtrlCreateButton("Überprüfen", 691, 193, 65, 25)
    GUICtrlSetTip(-1, "Dateisystem im Laufwerk " & GUICtrlRead($combo_laufwerkid) & " auf Fehler überprüfen")
    GUICtrlSetOnEvent(-1, '_CheckIEC')
    $button_status = GUICtrlCreateButton("Status", 691, 408, 65, 25)
    GUICtrlSetTip(-1, "Fehlerkanal von Laufwerk " & GUICtrlRead($combo_laufwerkid) & " auslesen")
    GUICtrlSetOnEvent(-1, '_StatusIEC')
    $button_reset = GUICtrlCreateButton("Reset", 691, 436, 65, 25)
    GUICtrlSetTip(-1, "Laufwerk " & GUICtrlRead($combo_laufwerkid) & " zurücksetzen")
    GUICtrlSetOnEvent(-1, '_ResetIEC')
    $button_schreiben = GUICtrlCreateButton("Schreiben", 302, 300, 65, 25)
    GUICtrlSetOnEvent(-1, '_WriteIEC')
    $button_schreiben = GUICtrlCreateButton("Lesen", 302, 340, 65, 25)
    GUICtrlSetOnEvent(-1, '_ReadIEC')
    $button_image = GUICtrlCreateButton("Öffnen", 302, 380, 65, 25)
    GUICtrlSetOnEvent(-1, '_ImageOpen')

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

    ;GUI Format
    $gui_format = GUICreate("Diskette im Laufwerk " & GUICtrlRead($combo_laufwerkid) & " formatieren", 392, 136)
    $input_formatname = GUICtrlCreateInput("leer", 20, 48, 140, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetLimit(-1, 16)
    $input_formatid = GUICtrlCreateInput("01", 170, 48, 50, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetLimit(-1, 2)
    $button_formatok = GUICtrlCreateButton("OK", 8, 82, 89, 25)
    GUICtrlSetOnEvent(-1, '_FormatIECOK')
    $button_formatbeenden = GUICtrlCreateButton("Schließen", 288, 82, 89, 25)
    GUICtrlSetOnEvent(-1, '_FormatIECClose')
    ;starte mit HauptGUI
    GUISetState(@sw_show, $gui_main)
    WinWaitClose($gui_main)
    Exit
    Func _CloseGui()
    GUIDelete($gui_main)
    EndFunc
    Func _getDOSOutput($command)
    Local $text = "", $Pid = Run('"' & @ComSpec & '" /c ' & $command, "", @SW_HIDE, 2 + 4)
    While 1
    $text &= StdoutRead($Pid, False, False)
    If @error Then ExitLoop ;MsgBox(16, "Fehler", "Kein IEC-Gerät gefunden!", 0, $gui_main)
    Sleep(10)
    WEnd
    Return $text
    EndFunc
    Func _DirIEC()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Verzeichnis auslesen ...")
    $dir = _getDOSOutput("cbmctrl.exe dir " & GUICtrlRead($combo_laufwerkid))
    $dir_status = StringMid($dir, StringInStr($dir, ",", 0, -3) - 2)
    If StringInStr($dir, "0 .") <> 0 Then
    $dir_name = StringUpper(StringMid($dir, StringInStr($dir, '"') + 1 , 16))
    GUICtrlSetData($edit_name, $dir_name)
    $dir_id = StringUpper(StringMid($dir, StringInStr($dir, '"', 0, 2) + 1 , 6))
    GUICtrlSetData($edit_id, $dir_id)
    $dir_kurz = StringAddCR(StringUpper(StringTrimLeft(StringLeft($dir, StringInStr($dir, "free.") + 4), 29)))
    GUICtrlSetData($edit_dir, $dir_kurz)
    EndIf
    GUICtrlSetData($edit_status, $dir_status)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _FormatIEC()
    GUISetState(@SW_DISABLE, $gui_main)
    GUISetState(@SW_SHOW, $gui_format)
    EndFunc
    Func _FormatIECOK()
    _FormatIECClose()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Diskette formatieren ...")
    $format = _getDOSOutput("cbmformat.exe -s " & GUICtrlRead($combo_laufwerkid) & ' "' & GUICtrlRead($input_formatname) & '",' & GUICtrlRead($input_formatid))
    $format_status = StringMid($format, StringInStr($format, ",", 0, -3) - 2)
    GUICtrlSetData($edit_status, $format_status)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _FormatIECClose()
    GUISetState(@SW_ENABLE, $gui_main)
    GUISetState(@SW_HIDE, $gui_format)
    EndFunc
    Func _InitIEC()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Laufwerk initialisieren ...")
    RunWait(@ComSpec & " /c cbmctrl.exe pcommand " & GUICtrlRead($combo_laufwerkid) & " i", "", @SW_HIDE)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _CheckIEC()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Dateisystem überprüfen ...")
    RunWait(@ComSpec & " /c cbmctrl.exe pcommand " & GUICtrlRead($combo_laufwerkid) & " v", "", @SW_HIDE)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _StatusIEC()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Fehlerkanal auslesen ...")
    $status = _getDOSOutput("cbmctrl.exe status " & GUICtrlRead($combo_laufwerkid))
    $status_kurz = StringMid($status, StringInStr($status, ",", 0, -3) - 2)
    GUICtrlSetData($edit_status, $status_kurz)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _ResetIEC()
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Laufwerk zurücksetzen ...")
    RunWait(@ComSpec & " /c cbmctrl.exe reset", "", @SW_HIDE)
    Sleep (100)
    _StatusIEC()
    EndFunc
    Func _WriteIEC()
    Local $dateiauswahl, $ordnername = GUICtrlRead($input_ordnername)
    If $ordnername = "" Then Return MsgBox(16, "Fehler", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    $dateiauswahl = _GUICtrlListView_GetSelectedIndices($listview_dateiliste, True)
    If $dateiauswahl[0] = 0 Then Return MsgBox(16, "Fehler", "Es wurde keine Datei ausgewählt!", 0, $gui_main)
    _Feldvariablen()
    If GUICtrlRead($radio1) = $GUI_CHECKED Then
    $schreiben = "d64copy.exe -t auto -d " & GUICtrlRead($combo_typ) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio2) = $GUI_CHECKED Then
    $schreiben = "d64copy.exe -t original -d " & GUICtrlRead($combo_typ) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio3) = $GUI_CHECKED Then
    $schreiben = "d64copy.exe -t serial1 -d " & GUICtrlRead($combo_typ) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio4) = $GUI_CHECKED Then
    $schreiben = "d64copy.exe -t serial2 -d " & GUICtrlRead($combo_typ) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio5) = $GUI_CHECKED Then
    $schreiben = "nibwrite.exe -D" & GUICtrlRead($combo_laufwerkid) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '"'
    EndIf
    $dir = _getDOSOutput($schreiben)
    GUICtrlSetData($edit_dir, $dir)
    EndFunc
    Func _RreadIEC()
    EndFunc
    Func _AuswahlPfad()
    Local $ordnername
    $ordnername = FileSelectFolder("", "", 2, "", $gui_main)
    If Not FileExists($ordnername) Then Return
    GUICtrlSetData($input_ordnername, $ordnername)
    _DirOpen()
    EndFunc
    Func _DirOpen()
    Local $aFilelist, $ordnername = GUICtrlRead($input_ordnername)
    If StringRight($ordnername, 1) <> "\" Then $ordnername &= "\"
    $aFilelist = _FileListToArray($ordnername, "*.d64", 1)
    If @error Then Return
    _GUICtrlListView_DeleteAllItems($listview_dateiliste)
    For $i = 1 To $aFilelist[0]
    GUICtrlCreateListViewItem($aFilelist[$i], $listview_dateiliste)
    Next
    _GUICtrlListView_SetColumnWidth(GUICtrlGetHandle($listview_dateiliste), 0, $LVSCW_AUTOSIZE)
    EndFunc
    Func _ImageOpen()
    Local $dateiauswahl, $ordnername = GUICtrlRead($input_ordnername)
    If StringRight($ordnername, 1) <> "\" Then $ordnername &= "\"
    If $ordnername = "" Then Return MsgBox(16, "Fehler", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    $dateiauswahl = _GUICtrlListView_GetSelectedIndices($listview_dateiliste, True)
    If $dateiauswahl[0] = 0 Then Return MsgBox(16, "Fehler", "Es wurde keine Datei ausgewählt!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Disketten-Image auslesen ...")
    For $i = 1 To $dateiauswahl[0]
    $dir = _getDOSOutput("c1541.exe " & '"' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]) & '"' & " -list")
    $dir_name = StringUpper(StringMid($dir, 4, 16))
    $dir_id = StringUpper(StringMid($dir, 21, 6))
    $dir_kurz = StringAddCR(StringUpper(StringTrimLeft(StringLeft($dir, StringInStr($dir, "free.") + 4), 27)))
    GUICtrlSetData($edit_name, $dir_name)
    GUICtrlSetData($edit_id, $dir_id)
    GUICtrlSetData($edit_dir, $dir_kurz)
    For $zeile = 0 To UBound($dir_kurz) - 1
    GUICtrlCreateListViewItem($dir_kurz[$zeile], $edit_dir_list)
    Next
    Next
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _Feldvariablen()
    GUICtrlSetData($edit_name, "")
    GUICtrlSetData($edit_id, "")
    GUICtrlSetData($edit_dir, "")
    GUICtrlSetData($edit_status, "")
    GUICtrlSetData($edit_vorgang, "")
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von DerSchatten (29. Juli 2011 um 15:05)

  • Jemand vielleicht noch eine Idee dazu?

    habs inzwischen noch damit versucht:

    [autoit]


    Func _ImageOpen()
    Local $dateiauswahl, $ordnername = GUICtrlRead($input_ordnername)
    If StringRight($ordnername, 1) <> "\" Then $ordnername &= "\"
    If $ordnername = "" Then Return MsgBox(16, "Fehler", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    $dateiauswahl = _GUICtrlListView_GetSelectedIndices($listview_dateiliste, True)
    If $dateiauswahl[0] = 0 Then Return MsgBox(16, "Fehler", "Es wurde keine Datei ausgewählt!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Disketten-Image auslesen ...")
    For $i = 1 To $dateiauswahl[0]
    $dir = _getDOSOutput("c1541.exe " & '"' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]) & '"' & " -list")
    $dir_name = StringUpper(StringMid($dir, 4, 16))
    $dir_id = StringUpper(StringMid($dir, 21, 6))
    Local $dir_kurz = StringAddCR(StringUpper(StringTrimLeft(StringLeft($dir, StringInStr($dir, "free.") + 4), 27)))
    _ArrayDisplay($dir_kurz)
    GUICtrlSetData($edit_name, $dir_name)
    GUICtrlSetData($edit_id, $dir_id)
    GUICtrlSetData($edit_dir, $dir_kurz)
    Next
    For $l = 1 To UBound($dir_kurz) - 1
    GUICtrlCreateListViewItem($dir_kurz[$l], $edit_dir_list)
    Next
    GUICtrlSetData($edit_vorgang, "")
    EndFunc

    [/autoit]

    Ich denke das Problem ist das ich meinen String (dir_kurz) zuerst einmal in ein Array bringen muß. Zeilensprünge sind darin ebreits enthalten.

    2 Mal editiert, zuletzt von DerSchatten (1. August 2011 um 11:04)

  • Hallo DerSchatten,

    auch dieses Skript lässt sich nicht starten:

    'Fehlerausgabe

    Es fehlen 2 Funktionen _DirSave und _ReadIEC. Desweiteren benutzt die Variabe $combo_typ (Gui-Control) welche aber nicht definiert ist.

    Du solltest auch das zurückgebebe Textfile der c1541.exe als Dateianhang einstellen, damit man überhaupt erkennen kann mit wellchen Daten du arbeitest.
    Die Funktion

    [autoit]

    StringSplit

    [/autoit]

    solltest du dir in der Hilfe nachschlagen.
    Auch vermute ich dass deine Schleifen dann so aussehen müssten:

    [autoit]

    Func _ImageOpen()
    Local $dateiauswahl, $ordnername = GUICtrlRead($input_ordnername)
    If StringRight($ordnername, 1) <> "\" Then $ordnername &= "\"
    If $ordnername = "" Then Return MsgBox(16, "Fehler", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    $dateiauswahl = _GUICtrlListView_GetSelectedIndices($listview_dateiliste, True)
    If $dateiauswahl[0] = 0 Then Return MsgBox(16, "Fehler", "Es wurde keine Datei ausgewählt!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Disketten-Image auslesen ...")
    For $i = 1 To $dateiauswahl[0]
    $dir = _getDOSOutput("c1541.exe " & '"' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]) & '"' & " -list")
    $dir_name = StringUpper(StringMid($dir, 4, 16))
    $dir_id = StringUpper(StringMid($dir, 21, 6))
    Local $dir_kurz = StringAddCR(StringUpper(StringTrimLeft(StringLeft($dir, StringInStr($dir, "free.") + 4), 27)))
    $dir_kurz = StringSplit($dir_kurz, @CRLF, 1)
    _ArrayDisplay($dir_kurz)
    GUICtrlSetData($edit_name, $dir_name)
    GUICtrlSetData($edit_id, $dir_id)
    GUICtrlSetData($edit_dir, $dir_kurz)
    For $l = 1 To UBound($dir_kurz) - 1
    GUICtrlCreateListViewItem($dir_kurz[$l], $edit_dir_list)
    Next
    Next
    GUICtrlSetData($edit_vorgang, "")
    EndFunc ;==>_ImageOpen

    [/autoit]

    aber ohne Daten zum Prüfen kann ich es nicht nachvollziehen,

    mfg autoBert

    2 Mal editiert, zuletzt von autoBert (1. August 2011 um 13:41)

  • Genauso funktioniert es!


    Perfekt! danke dir!

    Zu früh gefreut.

    Seltsamer Effekt der sich nur darstellt:

    Eine Ausgabe die "------" oder "=====" Zeichen enthält wird nicht korrekt dargestellt. (siehe Anhang)
    Zum Vergleich In der Mitte das Listenfeld und rechts das Editfeld.
    So wie es aussieht werden Idente Zeilen einfach übersprungen.

    Die Funktion dazu sieht so aus:

    [autoit]


    Func _ImageOpen()
    Local $dateiauswahl, $ordnername = GUICtrlRead($input_ordnername)
    If StringRight($ordnername, 1) <> "\" Then GUICtrlSetData($input_ordnername, $ordnername & "\")
    If $ordnername = "" Then Return MsgBox(48, "Fehler", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    $dateiauswahl = _GUICtrlListView_GetSelectedIndices($listview_dateiliste, True)
    If $dateiauswahl[0] = 0 Then Return MsgBox(48, "Fehler", "Es wurde keine Datei ausgewählt!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Disketten-Image auslesen ...")
    For $i = 1 To $dateiauswahl[0]
    If StringRight(_GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]), 3) = "nbz" Then
    $temp_nbz = @TempDir & "\temp.d64"
    $dir_conv = _getDOSOutput("nibconv.exe " & '"' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]) & '" ' & '"' & $temp_nbz & '"')
    $dir = _getDOSOutput("c1541.exe " & $temp_nbz & " -list")
    $dir_name = StringUpper(StringMid($dir, 4, 16))
    $dir_id = StringUpper(StringMid($dir, 21, 6))
    Local $dir_kurz = StringAddCR(StringUpper(StringTrimLeft(StringLeft($dir, StringInStr($dir, "free.") + 4), 27)))
    FileDelete ($temp_nbz)
    _ArrayDisplay($dir_kurz)
    GUICtrlSetData($edit_name, $dir_name)
    GUICtrlSetData($edit_id, $dir_id)
    GUICtrlSetData($edit_dir, $dir_kurz)
    Else
    $dir = _getDOSOutput("c1541.exe " & '"' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]) & '"' & " -list")
    $dir_name = StringUpper(StringMid($dir, 4, 16))
    $dir_id = StringUpper(StringMid($dir, 21, 6))
    Local $dir_kurz = StringAddCR(StringUpper(StringTrimLeft(StringLeft($dir, StringInStr($dir, "free.") + 4), 27)))
    $dir_kurz2 = StringSplit($dir_kurz, @CRLF, 1)
    _ArrayDisplay($dir_kurz)
    GUICtrlSetData($edit_name, $dir_name)
    GUICtrlSetData($edit_id, $dir_id)
    GUICtrlSetData($edit_dir, $dir_kurz)
    Endif
    For $l = 1 To UBound($dir_kurz2) - 1
    GUICtrlSetData ($list_dir, $dir_kurz2[$l])
    Next
    Next
    GUICtrlSetData($edit_vorgang, "")
    EndFunc

    [/autoit]
  • Was bedeutet das?

    Das ich in Listenfenster keine wiederholenden Einträge anzeigen lassen kann?

    Wie lös ich das problem? Dubioser Weise werden ja auch wiederholende zeilen angezeigt, aber nur maximal 2 mal.

  • ListBox füllen:
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $Liste = "List1|List2|List3|List4|List5|List6"

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

    $hGUI = GUICreate("ListBox")
    GUICtrlCreateLabel("Deine Methode", 20, 20, 170, 20)
    $idList1 = GUICtrlCreateList("", 20, 40, 170, 340, $WS_BORDER + $WS_VSCROLL)
    GUICtrlCreateLabel("Eine andere Methode", 210, 20, 170, 20)
    $idList2 = GUICtrlCreateList("", 210, 40, 170, 340, $WS_BORDER + $WS_VSCROLL)
    GUISetState()

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

    $aSplit = StringSplit($Liste, "|")

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

    ; Deine Methode -------------------------------------------------------------------
    For $I = 1 To 3
    For $J = 1 To $aSplit[0]
    GUICtrlSetData($idList1, $aSplit[$J])
    Next
    Next
    ; ---------------------------------------------------------------------------------
    ; eine andere Methode -------------------------------------------------------------
    $Out = ""
    For $I = 1 To 3
    For $J = 1 To $aSplit[0]
    $Out &= "|" & $aSplit[$J]
    Next
    Next
    GUICtrlSetData($idList2, $Out)
    ; ---------------------------------------------------------------------------------
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • Bei der ersten Mothode werden weiterhin doppelte Einträge nicht angezeigt.

    und bei der zweiten sind alle Einträge mehrfach vorhanden.

    Wenn ich die Beispiel dennoch auf mein programm anwende, zeigt mir das erste Beispiel überhaupt nichts an. Die List blitzt zwar kurz auf, das Listenfeld ist dann aber leer.


    [autoit]


    Func _ImageOpen()
    Local $dateiauswahl, $ordnername = GUICtrlRead($input_ordnername)
    If StringRight($ordnername, 1) <> "\" Then GUICtrlSetData($input_ordnername, $ordnername & "\")
    If $ordnername = "" Then Return MsgBox(48, "Fehler", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    $dateiauswahl = _GUICtrlListView_GetSelectedIndices($listview_dateiliste, True)
    If $dateiauswahl[0] = 0 Then Return MsgBox(48, "Fehler", "Es wurde keine Datei ausgewählt!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Disketten-Image auslesen ...")
    For $i = 1 To $dateiauswahl[0]
    If StringRight(_GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]), 3) = "nbz" Then
    $temp_nbz = @TempDir & "\temp.d64"
    $dir_conv = _getDOSOutput("nibconv.exe " & '"' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]) & '" ' & '"' & $temp_nbz & '"')
    $dir = _getDOSOutput("c1541.exe " & $temp_nbz & " -list")
    FileDelete ($temp_nbz)
    Else
    $dir = _getDOSOutput("c1541.exe " & '"' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]) & '"' & " -list")
    Endif
    $dir_name = StringUpper(StringMid($dir, 4, 16))
    $dir_id = StringUpper(StringMid($dir, 21, 6))
    $dir_kurz = StringSplit(StringUpper(StringTrimLeft($dir, 27)), @LF, 1)
    ;_ArrayDisplay($dir_kurz)
    GUICtrlSetData($edit_name, $dir_name)
    GUICtrlSetData($edit_id, $dir_id)
    For $I = 1 To 3
    For $J = 1 To $dir_kurz[0]
    GUICtrlSetData($list_dir, $dir_kurz[$J])
    Next
    Next
    Next
    GUICtrlSetData($edit_vorgang, "")
    EndFunc

    [/autoit]
  • ... Du solltest Dir ja auch die Metode anschauen und nicht die Anweisungen kopieren. Noch ein Versuch:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Datei = @ScriptDir & "\Test.txt"
    $Dir = FileRead($Datei)
    $Dir_Name = StringUpper(StringMid($Dir, 4, 16))
    $Dir_ID = StringUpper(StringMid($Dir, 21, 6))
    $Dir_Kurz = StringUpper(StringTrimLeft($Dir, StringInStr($Dir, @LF)))

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

    GUICreate("Text.txt")

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

    $Edit_Name = GUICtrlCreateInput("", 20, 20, 360, 20)
    GUICtrlSetData($Edit_Name, $Dir_Name)

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

    $Edit_ID = GUICtrlCreateInput("", 20, 50, 360, 20)
    GUICtrlSetData($Edit_ID, $Dir_ID)

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

    $List_Dir = GUICtrlCreateList("", 20, 80, 360, 260, BitOR($WS_BORDER, $WS_VSCROLL))
    GUICtrlSetFont($List_Dir, 8.5, 400, 0, "Courier New")
    Opt("GUIDataSeparatorChar", @LF)
    GUICtrlSetData($List_Dir, @LF & StringStripCR($Dir_Kurz))
    Opt("GUIDataSeparatorChar", Default)

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

    GUISetState()

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    Exit

    [/autoit]


    P.S.: Verwende bitte Spoiler: