Trolled by variable?!

  • servus
    hier kann man ja keine variable reinpacken (oder?)

    [autoit]

    GUICtrlCreateListViewItem($SearchString & "|" & $SearchPath & $FileList[$i], $FileListView)

    [/autoit]


    wenn nicht, wie kann ich das mit

    [autoit]

    _GUICtrlListView_AddItem($b, $a)

    [/autoit]

    nachbaun?
    mfg

    2 Mal editiert, zuletzt von Zattoo (24. September 2012 um 14:47)

  • ist nicht klar?
    frage: kann man in
    [url='http://translation.autoit.de/onlinehilfe/functions/GUICtrlCreateListViewItem.htm']

    [autoit]

    GUICtrlCreateListViewItem

    [/autoit]

    variablen nutzen

  • glaubste ich frage hier wenn ichs nicht getestet hab? :wacko:

    [autoit]

    Func _ReadFiles($SearchPath, $SearchString)
    $FileList = _FileListToArray($SearchPath, "*", 1)
    If Not @error Then
    For $i = 1 To $FileList[0]
    $ReadedFile = FileRead($SearchPath & $FileList[$i])
    If StringInStr($ReadedFile, $SearchString) Then
    ConsoleWrite($SearchString & "|" & $SearchPath & $FileList[$i] & @CRLF)
    GUICtrlCreateListViewItem($SearchString & "|" & $SearchPath & $FileList[$i], $FileListView)
    EndIf
    Next
    EndIf
    EndFunc

    [/autoit]

    irgentwie gehts nicht :/

  • Wieso sagst du das nicht gleich? :rolleyes: Weiterhin ist eine verständliche Fehlerbeschreibung Voraussetzung für Support. Mit 'Geht irgendwie nicht' kann man in 90% der Fälle nichts anfangen.
    Ich sehe in deinem Code keinen Fehler, und bei mir hat das bisher prima geklappt Variablen als Parameter dieser Funktion zu verwenden. Was wird dir denn in der Konsole ausgegeben? Funktioniert es wenn du diese Ausgabe manuell als String für das Control benutzt?
    Überprüfe auch mal den Pfad der generiert wird. Eventuell fehlt da ein Backslash o.Ä..

  • Du meinst mit "Kann man in GUICtrlCreateListViewItem eine Vairable reinpacken" wäre alles geklärt? Ok: Ja... Zufrieden? :D Sag doch einfach in Zukunft gleich wo das Problem liegt ^^.
    Es wäre nützlich wenn du die restlichen Fragen in meinem Beitrag beantwortest ;). Funktioniert die Erzeugung eines ListViewItems wenn du den Text aus der Konsole direkt einfügst?

  • Gewöhn dir mal an Testscripte in denen der Fehler reproduzierbar ist zu posten. Ich glaube keiner hier hat Lust jedesmal eine GUI zu basteln nur um dir zu helfen. Davon ab ist es natürlich möglich der Funktion variable Parameter mitzugeben. Ich nehme an dein Fehler entsteht bei der Erstellung des Listviews, vermutlich hast du keine oder eine abweichende Spaltenzahl vorgegeben.


    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    #include <file.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 438, 192, 124)
    $List1 = GUICtrlCreateListView("Spalte1|Spalte2", 120, 88, 425, 253)

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

    ;GUICtrlCreateListViewItem("wert1|wert2",$List1)

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

    $aDirContent=_FileListToArray(@ScriptDir)

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

    For $i=1 to $aDirContent[0]
    GUICtrlCreateListViewItem(@ScriptDir & "|" & $aDirContent[$i],$List1)
    next

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

    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][autoit][/autoit][autoit][/autoit]
  • Das es funktinioniert kannst du an meinem BMP-Viewer Beispiel sehen. Wenn du ein spezielles Prblem hastka ich mich nur misterspeed anshliessen: Pste bitte ein Skript in dem das Problem auftritt,

    mfg autoBert

  • misterspeed, dein beispiel geht, wenn ich dein zeug in mein script mache gehts wieder nicht (selbe includes)
    das ist mein listview

    [autoit]

    $FileListView = GUICtrlCreateListView("String|Folder", 0, 20, 620, 280)
    _GUICtrlListView_SetColumnWidth($FileListView, 0, 175)
    _GUICtrlListView_SetColumnWidth($FileListView, 1, 441)

    [/autoit]
    • Offizieller Beitrag

    Zattoo
    Dein Verhalten nennt man Beratungsresistenz!

    Bereits mehrfach wurdest du gebeten ein Skript, das reproduzierbar die auftretenden Fehler erzeugt, einzustellen.
    DU möchtest Hilfestellung!
    Also solltest du auch denen, die helfen wollen, alles dazu nötige an die Hand geben.
    Ein paar einzelne Skriptzeilen sind keine Testumgebung, zumal aus diesen Zeilen kein Fehler reproduzierbar ist.

  • Letzter Versuch dir zu helfen:


    1. Prüfe ob du die Variable des Listviews mehrfach verwendest und dir dadurch die control id überschreibst.
    2. Sofern das Listview nicht global erstellt wird sondern in einer Funktion achte darauf dass die variable global deklariert ist oder an die Füllfunktion übergeben wird.
    3. Wenn du die funktion in der das Listview erstellt wird mehrfach aufrufst hast du multiple listviews die sich überlappen... schlecht!
    4. Poste die Zeilen der Consolen Ausgabe der Füllfunktion.
    5. Poste das komplette Script oder zumindestens eine lauffähige Version in der das Problem noch auftritt.

  • 1. könnte es eventuell daran liegen?

    Spoiler anzeigen
    [autoit]

    Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
    If Not IsHWnd($FileListView) Then $FileListView = GUICtrlGetHandle($FileListView)
    $tNMHDR = DllStructCreate("hwnd hWndFrom;uint_ptr IDFrom;INT Code", $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    If $hWndFrom = $FileListView Then
    If $iCode = -3 Then ;NM_DBLCLK
    $String = _GUICtrlListView_GetItemTextString($FileListView, _GUICtrlListView_GetSelectionMark($FileListView))
    $EndString = StringSplit($String, '|')
    ShellExecute($EndString[2])
    EndIf
    EndIf
    Return 'GUI_RUNDEFMSG'
    EndFunc

    [/autoit]


    2. nein wird nicht in einer funktion sondern normal oder global
    3. fällt ja wegen 2 weg
    4. fällt ja auch wegen 2 weg
    5.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <File.au3>
    #include <FTPEx.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListView.au3>
    #Include <GUIEdit.au3>
    #include <String.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Form1", 625, 443, 193, 125)
    $FileListView = GUICtrlCreateListView("test|test", 8, 8, 609, 409)
    _GUICtrlListView_SetColumnWidth($FileListView, 0, 175)
    _GUICtrlListView_SetColumnWidth($FileListView, 1, 441)
    GUISetState(@SW_SHOW)

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

    $aDirContent=_FileListToArray(@ScriptDir)

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

    For $i=1 to $aDirContent[0]
    GUICtrlCreateListViewItem(@ScriptDir & "|" & $aDirContent[$i],$FileListView)
    next

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

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

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

    EndSwitch
    WEnd

    [/autoit]
  • Zattoo stell einfach dein Script rein in dem das Problem hast. Wenn nicht kann ich nur autoBert zustimmen und sagen: Vote for close.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • doch es ist doch ein beispielscript dabei...? :D

    Willst mich verarschen? Ich hab geschrieben ein Script in dem der Fehler noch auftritt. Was soll ich mit deinem oder viel mehr meinem mit zusätzlichn includes vollgeklatschten funktionierenden Script? Wie soll jemand deinen Fehler finden wenn du kein fehlerhaftes Script bereitstellst?

    Zitat

    4. Poste die Zeilen der Consolen Ausgabe der Füllfunktion.
    5. Poste das komplette Script oder zumindestens eine lauffähige Version in der das Problem noch auftritt.

    4. fällt ja auch wegen 2 weg

    Punkt 4 hat rein garnichts mit Punkt 2 und 3 zu tun. Du hast weiter oben die Funktion gepostet in der das Listview die Daten bekommt. Dort ist auch ein consolewrite(). Genau diese Daten will ich sehen, damit ein Fehler beim Dateninput ausgeschlossen werden kann:

    [autoit]


    Func _ReadFiles($SearchPath, $SearchString)
    $FileList = _FileListToArray($SearchPath, "*", 1)
    If Not @error Then
    For $i = 1 To $FileList[0]
    $ReadedFile = FileRead($SearchPath & $FileList[$i])
    If StringInStr($ReadedFile, $SearchString) Then
    ConsoleWrite($SearchString & "|" & $SearchPath & $FileList[$i] & @CRLF)
    GUICtrlCreateListViewItem($SearchString & "|" & $SearchPath & $FileList[$i], $FileListView)
    EndIf
    Next
    EndIf
    EndFunc

    [/autoit]

    Punkt 5 ist dann jedenfalls deine letzte Möglichkeit hier eine Lösung zufinden. Ansonsten such den Fehler selbst.

    Einmal editiert, zuletzt von misterspeed (24. September 2012 um 00:05)