GUI und Listen

  • Hallo,
    ich probiere grade mit der GUI rum und habe da folg. Problem. Ich lese aus einer Datei 3 Zeilen aus -> Fehler[1] Erfolgreich[3] sonstiges[4] - ich ziehe mir aus diesem Array die Zahl aus den eckigen Klammern und erstelle ein neues Array. Die Frage ist nun wie ich es in die Liste bekomme? Innerhalb der while Schleife, oder erst alle in das array, es sind so 40 dateien a 3 zeilen?

    Danke für den Gedankenschuppser.

  • besser ist es glaube ich mit ListViewItems zu arbeiten, allerdings komme ich mit der Schleife, sprich das Auslesen der Dateien nicht zurecht. Am Ende des auslesens wird keine GUI angezeigt. hier mal meine beta ;)

    [autoit]


    #include <GUIConstants.au3>
    #include <File.au3>

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

    DIM $file = FileOpen("mufu_test.txt", 0) ;öffnen der Datei im Lesemodus
    Dim $contentArray

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

    ; falls die Datei geöffnet werden kann und solange das Ende der Zeile nicht erreicht ist
    While 1
    $line = FileReadLine($file) ;Zeile lesen
    If @error = -1 Then MsgBox(0,"Fehler beim öffnen von mufu_test.txt",@error) ExitLoop ;falls die Datei nicht eingelesen werden kann - ende

    $line = StringLower($line) ;ausgelesene Zeile in Kleinbuchstaben, wird für die Textdatei verwendet
    $file_log = FileOpen($line &".txt",0) ;öffnen der entspr. Mufu Datei um den Erfolg zu dokumentieren
    if $file_log = -1 Then
    FileClose($file)
    ;MsgBox(0,"Fehler beim öffnen der MufuLogDatei:",@error)
    Exit
    Else

    ;MsgBox(0,"Debug","Lineausgabe:"& $line)
    IF Not _FileReadToArray($line &".txt",$contentArray) Then
    MsgBox(0,"Array",@error)
    Exit
    EndIf
    ;MsgBox(0,"Debug","Arrayausgabe:"& $contentArray[0])
    ;Auslesen der einzelnen Zeichen

    $newstring = ExtractString($line,$contentArray,"[","]")


    EndIf
    WEnd
    ;--------GUI-------
    GUICreate("Mufu Web-Auswertung",600,550, -1,-1,-1,) ;Fensternamen und -größe, -style festlegen 300 450
    GUISetBkColor (0xFFFFFFFF) ; Farbe für den Hintergrund

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

    $listview = GUICtrlCreateListView ("Gerätename |Success|RUISession|Error ",5,15,270,440);,$LVS_SORTDESCENDING) ;Liste erstellen
    ;$button = GUICtrlCreateButton ("Value?",75,170,70,20)

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

    $item1=GUICtrlCreateListViewItem("item2|col22|col23",$listview)
    $item2=GUICtrlCreateListViewItem("item1|col12|col13",$listview)
    $item3=GUICtrlCreateListViewItem("item3|col32|col33",$listview)
    GUISetState(@SW_SHOW) ;zeigt das Fenster an
    ;GUICtrlSetData($item2,"ITEM1");ändert eineListviewitem
    ;GUICtrlDelete($item1) ;löscht ein listviewitem

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

    Do
    $msg = GUIGetMsg ()

    Select
    Case $msg = $listview
    MsgBox(0,"listview", "clicked="& GUICtrlGetState($listview),2)
    EndSelect
    Until $msg = $GUI_EVENT_CLOSE
    ;---------Funktionen------
    ;die Ausgelesene Datei in ein Array umschreiben
    Func ExtractString($mufu_name,$array,$firstsign,$lastsign)
    Dim $new_array[10] ; Array mit folg. Feldern 1. Mufuname 2. Success 3. RUISession 4. Error
    Dim $x = 1

    For $i = 1 to $contentArray[0]
    $line_log = StringStripWS($array[$i],8) ;alle Freizeichen löschen

    $string_start = StringInStr($line_log,$firstsign,0) ;Position des Zeichens bestimmen
    $string_end = StringInStr($line_log,$lastsign,0) ;Position des Zeichens bestimmen
    $result_word = StringMid($line_log,0,$string_start) ;
    $result_number = StringMid($line_log,$string_start+1,$string_end-$string_start-1) ;entspr. String bis zum entspr. Zeichen kürzen
    $new_array[0] = $x
    $new_array[1] = $mufu_name
    ;$new_array[] = $result_word
    $new_array[$i+1] = $result_number
    $x = $x +1
    Next
    for $i = 1 to $new_array[0]
    MsgBox(0,"Debug",$new_array[$i])
    ;MsgBox(0,"Debug",$x)
    Next
    ;Abfangen von Leerzeilen
    ;if StringIsInt($new_array[1]) OR StringIsInt($new_array[2]) OR StringIsAlNum($new_array[1]) OR StringIsAlNum($new_array[2]) Then
    ;MsgBox(0,"Debug","Newstring:"& $new_array[0] & "-" & $new_array[1] & "-" & $new_array[2]) ;0=Name 1=Zahlenwert
    ;EndIf
    Return($new_array)
    EndFunc

    [/autoit]
  • vom Gedankengang her würde ich gerne eine Datei einlesen und anzeigen und dann die nächste usw.
    Außerdem irritiert mich das Array in Zeile 59. Ich kann min 6 Felder angeben, rein logisch wären es für mich aber nur 5. 1=Anzahl der Felder 2=Name 3.Zahl1 4.Zahl2 5. Zahl3. Evtl hat dafür jemand eine Erklärung.
    Brauch ich wirklich die Do Schleife? Um auf Events zu warten ok, aber wenn ich es rausnehme, dann zeigt er das Fenster kurz und schließt es soweit wieder.

    Danke

    Einmal editiert, zuletzt von sunghost (13. September 2007 um 16:41)

  • also wenn ich es richtig sehe, dann darf ich innerhalb der schleifen bzw. abfragen kein exit oder exitloop verwenden und ich muss GUISetState(@SW_SHOW) vor die Arrayverarbeitung schreiben. ist das so korrekt?
    danke

    Einmal editiert, zuletzt von sunghost (14. September 2007 um 15:29)