_GUICtrlListView_GetItemText verwirft 0

  • Hallo zusammen,

    ich bin noch ein relativer Neuling in AutoIt, und habe scheinbar einen Konflikt mit der Funktion _GUICtrlListView_GetItemText .

    Ich lese einen angegebenen Ordner aus, packe diese Dateien in eine Listview. Diese Listview hat 4 Spalten, Name, A, B, und C. Die Spalte Name ist 'ausgeblendet' und die Spalten A, B und C werden mit Daten die aus der jeweiligen Datei die eigentlich dahinter steckt gefüllt. Soweit alles gut...

    Nun soll in der Spalte A ein Datum, und in der Spalte B eine Uhrzeit im Format JJ/MM/TT und Stunde/Minute angegeben werden.

    Mein Problem: Die ersten zeichen des Datums und der Uhrzeit werden verworfen solange sie Nullen sind. Und dass darf nicht passieren...
    Hier ein Screenshot, wie es aussieht wenn ich als erste Zeichen Nullen angebe:

    [Blockierte Grafik: http://s1.directupload.net/images/120920/9v8q5yi6.png]

    Hier sieht man auch, in der ersten Spalte würde statt: 00000006 nur 6 angezeigt werden. Dort wäre es nicht weiter tragisch, nur das Datum (Spalte 2) und die Zeit (Spalte 3) müssen die möglichkeit bieten Nullen anzugeben.

    Hier mal ein Stück Code:

    [autoit]

    Func listview_links()
    Local $i, $z, $readline, $spaltea
    _GUICtrlListView_DeleteAllItems($listviewlinks)
    Local $files = _FileListToArray($pathfolder1, "*.txt", 1)
    If ($files <> 0) Then
    For $i = 1 To $files[0]
    $readline = FileReadLine($pathfolder1 & "\" & $files[$i], 2)
    $spaltea = StringMid($readline, 6, 8)
    $udatum = StringMid($readline, 31, 6)
    $uzeit = StringMid($readline, 37, 4)
    Local $spalteasdad = IsString($uzeit)
    _GUICtrlListView_AddItem($listviewlinks, $spaltea) ;~ Spalte 1
    _GUICtrlListView_AddSubItem($listviewlinks, $z, $files[$i], 1) ;~ eigentlich Spalte 2 aber Dateiname 'hidden'
    _GUICtrlListView_AddSubItem($listviewlinks, $z, $udatum, 2);~ Angezeigte 2. Spalte: Größe
    _GUICtrlListView_AddSubItem($listviewlinks, $z, $uzeit, 3) ;~ Angezeigte 3. Spalte: Datum/Uhrzeit
    $z += 1
    Next
    _GUICtrlListView_SetColumnWidth($listviewlinks, 0, $LVSCW_AUTOSIZE_USEHEADER)
    _GUICtrlListView_HideColumn($listviewlinks, 1) ; verstecke Spalte Dateiname
    Local $B_ASCENDING[_GUICtrlListView_GetColumnCount($listviewlinks)]
    Local $sortierung = True
    _GUICtrlListView_SimpleSort($listviewlinks, $sortierung, 3)
    For $i = 0 To $z
    ;
    ;;
    ;;; Ich denke hier muss der Fehler sein...
    Local $jahr = StringMid(_GUICtrlListView_GetItemText($listviewlinks, $i, 2), 1, 2)
    Local $monat = StringMid(_GUICtrlListView_GetItemText($listviewlinks, $i, 2), 3, 2)
    Local $tag = StringMid(_GUICtrlListView_GetItemText($listviewlinks, $i, 2), 5, 2)
    Local $stunde = StringMid(_GUICtrlListView_GetItemText($listviewlinks, $i, 3), 1, 2)
    Local $minute = StringMid(_GUICtrlListView_GetItemText($listviewlinks, $i, 3), 3, 2)
    ;;; ...
    ;;
    ;
    _GUICtrlListView_SetItemText($listviewlinks, $i, $jahr & "." & $monat & "." & $tag, 2)
    _GUICtrlListView_SetItemText($listviewlinks, $i, $stunde & ":" & $minute, 3)
    Next
    EndIf
    EndFunc ;==>listview_links

    [/autoit]

    Ich habe einige Testfenster (MsgBox) eingefügt, um zu gucken bis wo
    dieser Wert/diese Variable quasi ein Integer und wo ein String ist. Ich
    denke dies ist mein Problem...wäre es immer ein String, so sollte er die 0 als normales Zeichen beibehalten und dann würde auch Datum sowie Uhrzeit ordentlich angezeigt werden.

    Ich habe viel gegoogelt, leider erfolglos.

    Daher nochmal meine Vermutung in Kurzform: Die Funktion _GUICtrlListView_GetItemText nimmt die Variable als Integer statt String...

    Ich hoffe ihr könnt mir helfen :)

    Grüße
    YaeroxXO

    Grüße Yaerox

    Grüne Hölle

    Einmal editiert, zuletzt von Yaerox (21. September 2012 um 10:12) aus folgendem Grund: Problem gelöst :)

    • Offizieller Beitrag

    Daher nochmal meine Vermutung in Kurzform: Die Funktion _GUICtrlListView_GetItemText nimmt die Variable als Integer statt String...


    Nein, hier siehst du, dass alle Daten so übernommen/ausgegeben werden, wie du sie einfügst:

    [autoit]

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

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

    $gui = GUICreate('test')
    $hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 350)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 146)
    _GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
    For $i = 1 To 20
    GUICtrlCreateListViewItem('0000' & $i & '|' & StringFormat('%02d', $i) & '/09/2012', $hListView)
    Next
    GUISetState()

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

    For $i = 0 To _GUICtrlListView_GetItemCount(GUICtrlGetHandle($hListView)) -1
    ConsoleWrite('Item ' & $i & @TAB & _GUICtrlListView_GetItemText(GUICtrlGetHandle($hListView), $i, 0) & @TAB & _GUICtrlListView_GetItemText(GUICtrlGetHandle($hListView), $i, 1) & @CRLF)
    Next

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

    Do
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit]
  • Danke für die schnelle Hilfe.

    Mir wurde noch eine kleine Hilfestellung gegeben und nun funktioniert alles einwandfrei. Gelöst habe ich das Problem nun wie folgt:

    [autoit]

    _GUICtrlListView_AddSubItem($listviewlinks, $z, $jahr & "." & $monat & "." & $tag, 2) ;~ Datum
    _GUICtrlListView_AddSubItem($listviewlinks, $z, $stunde& ":" &$minute, 3) ;~ Uhrzeit

    [/autoit]

    Danke :)

    Grüße Yaerox

    Grüne Hölle