Beiträge von Schrubber

    Achso, alles klar. Erster Post wird editiert :)


    Edit2:


    Habe das Problem gelöst. In meiner bisherigen Vorgangsweise hatte ich den bereits bestehenden Array immer wieder bearbeitet... Die Lösung zum Problem aber war ganz einfach:
    Ein Array mit allen Daten & dann dazu einen filteredArray wo ich nach belieben die Daten reinschreibe & diesen dann ausgebe.... Manchmal liegt die Lösung echt näher als man denkt (:

    Hallo Leute,


    ich sitze derzeit an einem Log-Viewer welcher deine .txt-Datei ausliest & den Zeilen entsprechend ausgibt.


    Hier erstmal mein aktuelles Script:


    Test-Daten:


    Jede dieser Zeilen in der .txt (Testdaten) entspricht 1nem Datensatz. Die Ausgabe in der GUI mit mehr Daten schaut so aus:
    http://prntscr.com/484pp7


    Nun habe ich bereits folgendes gemacht: Mit der linken Combobox lassen sich die verschiedenen Arten unter "Aktion" filtern, mit der 2ten Combobox die verschiedenen Arten der Items Mit dem Input wird der Inhalt der Beschreibung nach dem eingegebenen Begriff durchsucht & ebenfalls ausgefiltert. Also NUR die Daten werden angezeigt, welche den 3 Filtern entsprechen. Die 3te Combobox soll die Einträge limitieren, welche angezeigt werden. Denn die Datei kann innerhalb von 10 Minuten um hunderte Einträge wachsen & dann brauch das einfach zu lang.


    Das Problem bei der Funktion liegt warscheinlich in Zeile 193-199. Dort überprüfe ich ob die Anzahl der Einträge in der Datei größer ist als die Anzahl der Dateien welche angezeigt werden sollen (Wert der 3. Combobox [10,20,30,40,50,100,Alle] Problem ist nur: Wenn ich nun 16 Einträge habe, und die folgenden auf meine FIlter zutreffen: [1,2,3,6,11,12,13] werden diese richtig angezeigt bei allen FilterWerten über 10. Wenn ich jedoch eine 10 dort auswähle, schmeißt er mir [1,2,3] raus da sie in der Datei NICHT unter den letzten 10 sind. Jedoch möchte ich dass der 10 gefilterte Einträge ausgibt, somit erst ab dem 11. Eintrag welcher zum Filter passt den Cut macht & diese nicht ausgibt. BeispielScreen für das Problem:


    http://prntscr.com/484rsh -> Unter ALLEN Einträgen sind diese dabei die "Keep" unter Beschreibung enthalten.


    http://prntscr.com/484rxj -> Unter den letzten 20 Kompletteinträgen ist das die einzige "Keep" (Falsche Ausgabe), hier möchte ich dass er die letzten 20 Keep-Einträge ausgibt & nicht die letzten 20 filtert.




    Ich hoffe Ihr könnt das nun ein wenig eher & besser verstehen.


    Wäre echt nett wenn sich jemand die Mühe macht & drüberschaut.



    Freundliche & morgendliche Grüße,
    Schrubber

    Hey,


    danke für die frühe Hilfe. Die Ausgabe danach ist etwas komisch. Es fehlen Einträge, jedoch kann ich nicht sagen welche genau weil trotzdme immernoch etwas falsches drinsteht.


    Ich hatte mir überlegt, eine Art "Filterfunktion" direkt bei _readFile() zu machen & nur Einträge zu erstellen welche den Ansprüchen entsprechen. Jedoch sieht das Ergebnis dann so aus:


    Screenshot:
    http://prntscr.com/463g9j


    Quelltext:
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <MsgBoxConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <Array.au3>


    Opt("GUIResizeMode",$GUI_DOCKALL)


    #Region ### START Koda GUI section ### Form=
    $Window_Title = GUICreate("D2BS Tornister", 1027, 451, 254, 124)
    $iListview = GUICtrlCreateListView("", 10, 10, 1000, 390)
    $button_reload = GUICtrlCreateButton("Reload", 826, 416, 65, 25)
    $button_autoReload = GUICtrlCreateButton("Start Auto-Reload", 896, 416, 105, 25)
    $button_open = GUICtrlCreateButton("Open", 756, 416, 65, 25)
    $comboAction = GUICtrlCreateCombo("", 16, 416, 121, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    $comboType = GUICtrlCreateCombo("", 160, 416, 129, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    $Input1 = GUICtrlCreateInput("Input1", 312, 416, 129, 21)
    $Button1 = GUICtrlCreateButton("Button1", 456, 416, 65, 25)
    GUISetState(@SW_SHOW)
    GUICtrlSetState($button_reload, $GUI_DISABLE)
    GUICtrlSetState($button_autoReload, $GUI_DISABLE)
    #EndRegion ### END Koda GUI section ###


    _GUICtrlListView_AddColumn($iListview, "Zeit", 100)
    _GUICtrlListView_AddColumn($iListview, "Aktion", 100)
    _GUICtrlListView_AddColumn($iListview, "Typ", 100)
    _GUICtrlListView_AddColumn($iListview, "Name", 100)
    _GUICtrlListView_AddColumn($iListview, "Beschreibung", 378)


    Global $sFilePath = RegRead("HKEY_CURRENT_USER\Software\Loginator", "Path")
    Global $tStart
    Global $tStatus = '0'
    Global $vActionArray[0]
    Global $vFilter1 = ' '



    if($sFilePath <> '') Then
    _readFile()
    GUICtrlSetState($button_reload, $GUI_ENABLE)
    GUICtrlSetState($button_autoReload, $GUI_ENABLE)
    EndIf



    While 1
    $nMsg = GUIGetMsg()


    Switch $nMsg


    Case $nMsg
    if($nMsg == 7) Then
    $vFilter1 = GuiCtrlRead($comboAction)
    _readFile()
    EndIf


    if($nMsg > 0) Then
    ;MSGBox(0, "", $nMsg)
    EndIf


    Case $GUI_EVENT_CLOSE
    $hFileOpen = ""
    if($hFileOpen <> "") Then
    FileClose($hFileOpen)
    EndIf
    Exit


    Case $button_reload
    _GUICtrlListView_DeleteAllItems($iListview)
    _readFile()


    Case $button_autoReload
    If(GUICtrlRead($button_autoReload) == "Stop Auto-Reload") Then
    GUICtrlSetData($button_autoReload, 'Start Auto-Reload')
    GUICtrlSetState($button_reload, $GUI_ENABLE)
    $tStatus = '0'
    Else
    GUICtrlSetData($button_autoReload, 'Stop Auto-Reload')
    GUICtrlSetState($button_reload, $GUI_DISABLE)
    $tStatus = '1'
    $tDiff = TimerInit()
    EndIf


    Case $button_open
    $sFilePath = FileOpenDialog("Open Log", @WorkingDir, "Textdateien (*.txt)")
    if($sFilePath <> '') Then
    RegWrite("HKEY_CURRENT_USER\Software\Loginator", "Path", "REG_SZ", $sFilePath)
    EndIf
    GUICtrlSetState($button_reload, $GUI_ENABLE)
    GUICtrlSetState($button_autoReload, $GUI_ENABLE)
    _readFile()


    EndSwitch


    if($tStatus = 1) Then
    if TimerDiff($tStart) > 300000 Then
    _GUICtrlListView_DeleteAllItems($iListview)
    _readFile()
    $tStart = TimerInit()
    EndIf
    EndIf


    WEnd


    Func _readFile()
    Global $hFileOpen = FileOpen($sFilePath)


    If $hFileOpen = -1 Then
    Return False
    EndIf


    $vFileRead = FileRead($sFilePath)
    $vFileSize = _FileCountLines ( $sFilePath )
    _GUICtrlListView_SetItemCount($iListview, $vFileSize)


    Global $aItems[$vFileSize][5]


    For $iI = 0 To UBound($aItems) - 1


    Global $sFileRead = FileReadLine($hFileOpen, $iI)


    if(StringInStr($sFileRead, $vFilter1) > 0) Then
    Global $vZeit = StringTrimRight($sFileRead, StringLen($sFileRead)-10)
    Global $vNewString = StringTrimLeft($sFileRead, 10)
    Global $vAktionStart = StringInStr($vNewString, "<", 0, "2")
    Global $vNewString2 = StringTrimLeft($vNewString, $vAktionStart)
    Global $vAktionEnde = StringInStr($vNewString2, ">", 0, "1")
    Global $vAktion = StringTrimRight(StringTrimleft($vNewString, 1), StringLen($vNewString)-($vAktionEnde-1))
    Global $vNewString3 = StringTrimRight($vNewString2, StringLen($vNewString2)-$vAktionEnde+1)


    if(_ArraySearch($vActionArray, $vNewString3) == '-1') Then
    _ArrayAdd($vActionArray, $vNewString3)
    EndIf


    Global $vNewString4 = StringTrimLeft($vNewString2, StringLen($vNewString3)+3)
    Global $vNewString5 = StringTrimRight($vNewString4, StringLen($vNewString4)-(StringInStr($vNewString4, ")", 0, "1")-1))
    Global $vNewString6 = StringTrimLeft($vNewString2, StringInStr($vNewString2, ")", 0, "1"))
    Global $vNewString61 = StringSplit($vNewString6, "|")
    Global $vNewString7 = StringInStr($vNewString6, "|", 0, 1)
    if($vNewString7 == "0") Then
    Global $vNewString8 = ""
    Else
    Global $vNewString8 = StringTrimLeft($vNewString6, StringInStr($vNewString6, "|", 0, 1))
    EndIf


    $aItems[$iI][0] = $vZeit
    $aItems[$iI][1] = $vNewString3
    $aItems[$iI][2] = $vNewString5
    $aItems[$iI][3] = StringReplace($vNewString61[1], "{clearInventory}", "")
    $aItems[$iI][4] = $vNewString8
    EndIf
    Next
    _GUICtrlListView_AddArray($iListview, $aItems)
    _GUICtrlListView_SetColumnWidth($iListview, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($iListview, 1, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($iListview, 2, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($iListview, 3, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($iListview, 4, $LVSCW_AUTOSIZE)
    GUICtrlSetData($comboAction, _ArrayToString($vActionArray))
    _GUICtrlListView_Scroll($iListview, 0, $vFileSize*20)


    EndFunc


    Jedoch fügt er trotzdem den Eintrag hinzu....

    Hallo Leute,


    mich hats gestern wieder nach AutoIt verschlagen & ich sitze nun an einem kleinen Programm zur Auslese von einer Logdatei dran. Die Logdatei ist beispielsweise wie folgt aufgebaut:



    Nun, mein Programm sieht derzeit wie folgt aus:



    Ich habe folgende Ansicht wenn das Programm alles anzeigt:
    http://prntscr.com/462p23


    Ich möchte nun die 2te Spalte filtern, sprich: Wenn ich in der ComboBox "stashed" auswähle möchte ich dass sämtliche Einträge mit einem anderen Ergebnis gelöscht werden. Dies hab ich wie folgt versucht zu lösen:


    For $iI2 = 0 To UBound($aItems) - 1
    ;if(!($aItems[$iI2][1] == GUICtrlRead($comboAction))) Then
    ;_ArrayDelete($aItems, $iI2)
    ;EndIf
    Next
    ;_GUICtrlListView_AddArray($iListview, $aItems)
    ;_GUICtrlListView_Scroll($iListview, 0, $vFileSize*20)


    in $aItems stehen die Zeilen aus der .txt schön bearbeitet wie ich sie brauche. In Spalte 2 halt "stashed" usw. Nun dachte ich mir "hey, gehst du die gesamte Array durch, überprüfst den 2ten Wert & falls er falsch ist, löscht du die gesamte Zeile & fängst von vorne an. Vielleicht nicht die schnellste & eleganteste Lösung, aber so denk ich mir das mal. Nunja - ich bekomme jedoch einen Fehler...


    Zitat

    "C:\Users\Schrubber\Documents\AutoIt\D2BS Tornister.au3" (56) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    if(($aItems[$iI2][1] <> GUICtrlRead($comboAction))) Then
    if((^ ERROR


    Jedoch hab ich absolut keine Ahnung, woran das liegt ): Jemand nen Tipp?


    Grüße,
    Schrubber

    Hey,


    ich bins nochmal. Irgendwie schaff ich es nicht, deine Lösung bei mir zu Nutzen. Bekomme keinen Rückgabewert :( Hier mein Code:


    #include <EditConstants.au3>
    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIEdit.au3>
    #include <IE.au3>
    #include <File.au3>


    _IEErrorHandlerRegister()


    Local $s_TempFile
    Local $sIni = ".\Templator.ini"
    Local $oIE = _IECreateEmbedded()
    Global $var = ''


    If Iniread($sIni, "Preferences", "Tempfile", "") == "" Then
    IniWrite($sIni, "Preferences", "Tempfile", $s_TempFile)
    $s_TempFile = _TempFile(@TempDir, "", ".html", 7)
    Else
    $s_TempFile = Iniread($sIni, "Preferences", "Tempfile", "")
    EndIf


    FileDelete($s_TempFile)
    FileCopy("./Examples/New.html", $s_TempFile)


    $guiWidth = Iniread($sIni, "Preferences", "Desktopwidth", 800)
    $guiHeight = Iniread($sIni, "Preferences", "Desktopheight", 600)


    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Tabbed Notebook Dialog", $guiWidth-10, $guiHeight, 65, 0)
    $MenuDatei = GUICtrlCreateMenu("&Datei")
    $MenuDatei1 = GUICtrlCreateMenuItem("Neu", $MenuDatei)
    $MenuDatei2 = GUICtrlCreateMenuItem("Laden", $MenuDatei)
    $MenuDatei3 = GUICtrlCreateMenuItem("Speichern", $MenuDatei)
    $MenuDatei4 = GUICtrlCreateMenuItem("Speichern unter", $MenuDatei)
    $MenuDatei5 = GUICtrlCreateMenuItem("Beenden", $MenuDatei)
    $MenuAdd = GUICtrlCreateMenu("&Hinzufügen")
    $MenuAdd1 = GUICtrlCreateMenuItem("Liste", $MenuAdd)
    $MenuAdd2 = GUICtrlCreateMenuItem("Textbox", $MenuAdd)
    $MenuFormat = GUICtrlCreateMenu("&Formatieren")
    $MenuFormat1 = GUICtrlCreateMenuItem("Schriftgröße", $MenuFormat)
    $MenuFormat2 = GUICtrlCreateMenuItem("Ausrichtung", $MenuFormat)
    $MenuFormat3 = GUICtrlCreateMenuItem("Schriftfarbe", $MenuFormat)
    $MenuInfo = GUICtrlCreateMenu("&Info")
    $MenuInfo1 = GUICtrlCreateMenuItem("Hilfe", $MenuInfo)
    GUISetBkColor(0xFFFFFF)
    $PageControl1 = GUICtrlCreateTab(2, 2, $guiWidth-15, $guiHeight-50)
    $Normal = GUICtrlCreateTabItem("Normal")
    $edit_NORMAL = GUICtrlCreateEdit("", 8, 30, $guiWidth-30, $guiHeight-90)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $HTML = GUICtrlCreateTabItem("HTML")
    $edit_HTML = GUICtrlCreateEdit("", 8, 30, $guiWidth-30, $guiHeight-90)
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    $Vorschau = GUICtrlCreateTabItem("Vorschau")
    GUICtrlCreateObj($oIE, 8, 35, $guiWidth-30, $guiHeight-90)
    $spacer = GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###


    _IENavigate($oIE, $s_TempFile)


    While 1
    $nMsg = GUIGetMsg()
    if $nMsg > 0 Then
    ;MSGBOX(0, "", $nMsg)
    EndIf


    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit


    Case 8 ;Beenden
    Exit


    Case 5 ;Laden
    $var = FileOpenDialog("Datei öffnen", @DesktopDir, "Websites (*.html;*.htm)", 1)
    $newHTML = FileRead($var)
    GUICtrlSetData($edit_HTML, $newHTML)


    Case 6 ;Speichern
    _inArbeit()


    Case 7 ;Speichern unter
    $var = FileSaveDialog("Datei speichern unter", @DesktopDir, "Websites (*.html;*htm)")
    FileWrite($var&".html", GUICtrlRead($edit_HTML))


    Case 14 ;Ausrichtung
    $aiSel = _GUICtrlEdit_GetSel($edit_HTML) ; Ermittelt Start und Endposition der Markierung
    MSGBOX(0, "", $aiSel)


    Case $Normal
    _inArbeit()


    Case 18 ;Wechsel der Fenster
    _reloadAll()


    EndSwitch
    WEnd


    Func _reloadAll()
    FileDelete($s_TempFile)
    FileWrite($s_tempFile, GUICtrlRead($edit_HTML))
    _IEAction($oIE, "refresh")
    EndFunc


    Func _inArbeit()
    MSGBox(0, "Hinweis", "Diese Funktion ist noch in Arbeit")
    EndFunc


    Mit "Ausrichtung" trigger ich die Markierungs-Erkennung. Aber kein Rückgabewert. Hast du vielleicht ne Idee?



    Grüße,
    Schrubber

    Nö, nix zu verbergen. Wenn ich aber eine Frage wie z.B. "Wie mäht man einen Rasen?", fragt auch keiner nach einem Bild vom Rasen ;)


    Wenns wirklich einen interessiert:



    Werde mal schauen, was ich finde. Hab da noch nen weiteres Problem, aber das erläuter ich beim nächsten Mal ;)



    Grüße,
    Schrubber

    Hallo,


    ich bin nach langer Abwesenheit mal wieder da. Hier mir einer (für mich) schweren Fragen.


    Ich programmiere gerade eine Art "HTML-Liveeditor. Neben der Tatsache, dass er immer meinen IE10 nimmt (und ich ihn nich in den IE9-Modus gepackt krieg) hab ich ein kleines Problem. Und zwar würde ich gerne, wenn der Cursor in dem Edit-Feld ist und der Button / Shortcut gedrückt wird, an der aktuellen Stelle (wo der Text-Cursor ist) einen Text einfügen. Wie mach ich das? :)


    Mein derzeitiges Programm ist ja unwichtig, da es sich um eine grundlegende Frage handelt.


    Grüße,
    Schrubber

    Ich bin mir nicht komplett sicher.
    Du bist für die Inhalte haftbar, ja.


    Aber es gibt in diversen AGB´s die Sätze, dass du für die Inhalte, die andere hochladen, nicht verantwortlich bist.
    Du schaust dir jedoch viele Inhalte an & überprüfst sie, kannst jedoch nicht auf einen 100% Schutz garantieren.
    Deshalb distanzierst du dich von allen Inhalten, die User darüber hochladen.


    Ob das wirklich geht, weiß ich nicht.

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("V-Berechnung", 339, 164, 192, 124)
    $l_start = GUICtrlCreateLabel("Start KM", 8, 66, 81, 17)
    $l_ende = GUICtrlCreateLabel("End KM", 10, 87, 78, 17)
    $i_start = GUICtrlCreateInput("0", 60, 64, 81, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
    $i_ende = GUICtrlCreateInput("0", 60, 88, 81, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
    $l_tstart = GUICtrlCreateLabel("Start Stunde", 176, 65, 67, 17)
    $l_tende = GUICtrlCreateLabel("End Stunde", 176, 86, 64, 17)
    $i_tstart = GUICtrlCreateInput("0", 242, 63, 81, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
    $i_tende = GUICtrlCreateInput("0", 242, 87, 81, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
    $l_ergebnis = GUICtrlCreateLabel("0", 8, 0, 310, 62, $SS_RIGHT)
    GUICtrlSetFont(-1, 36, 400, 0, "MS Sans Serif")
    $b_berechne = GUICtrlCreateButton("Starte Berechnung", 8, 120, 313, 33, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###


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


    EndSwitch
    WEnd


    Func berechne()
    $zeitdif = GUICtrlRead($i_tende) - GUICtrlRead($i_tstart)
    $wegdif = GUICtrlRead($i_ende) - GUICtrlRead($i_start)
    $v = $wegdif / $zeitdif
    GUICtrlSetData($l_ergebnis, $v & "km/h")
    EndFunc

    Hallo,


    ich stelle gerade eine Weihnachts-CD zusammen. Aber mir fallen nicht viele Lieder dazu ein.


    Das einzige, was ich bisher habe, ist:


    Wham - Last Christmas


    Nun meine Frage: Was hört ihr am Liebsten zu der Zeit? Deutsche und Englische Titel, egal.



    Danke im voraus,


    Schrubber

    Hallo,


    ich habe 2 Probleme:




    1. Ich habe eine onBoard Soundkarte und eine externe USB-Soundkarte. Ich möchte gerne ALLES über meine onboard Soundkarte (Headset) ausgeben, bis auf iTunes (Anlage). Ich finde aber weder bei iTunes, noch bei Windows die Möglichkeit, das gewünschte Ausgabegerät auszuwählen. Bei Skype usw. ist diese Einstellung ja möglich... Jedoch nicht bei iTunes :-/



    2. Ich habe eine Trust Blackstream-Tastatur seit länger als 6 Monaten. Nun sind dort Media-Tasten drauf, die mir folgende Möglichkeiten geben:
    - Musik stumm schalten
    - Musik leiser stellen
    - Musik lauter stellen
    - Play
    - Back Track
    - Forward Track
    - Internet Explorer
    - Mail-Programm
    - Windows Suche
    - Taschenrechner
    - Ranzoomen
    - Wegzoomen
    - und 2 weitere


    Nun, es funktionieren nur die 2 anderen Tasten. Aber das liegt daran, dass sie auch bei Windows durch Tastenkombinationen aufrufbar sind.
    Die Tasten haben alle funktioniert. Nun plötzlich nicht mehr. Ich habe keine Software oder Treiber installiert, noch deinstalliert. Nur ein wenig gespielt.


    Hoffe, ihr könnt mir helfen :-/



    Grüße,
    Schrubber