1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. alpines

Beiträge von alpines

  • IE Reload Content?

    • alpines
    • 3. Oktober 2017 um 21:52

    Das ist der Quellcode der aktuellen Dokumenteninstanz folglich auch der "Live-Code" wenn du so möchtest.

    Ein kleiner Test bestätigt das ganze auch:

    AutoIt
    #include <IE.au3>
    
    _IEErrorNotify(False)
    
    Do
        $oIE = _IECreate("about:blank")
    Until IsObj($oIE)
    
    _IEDocWriteHTML($oIE, "<html><body><div id=""blablub"">Hier steht ein Text!</div></body></html>")
    _IEAction($oIE, "refresh")
    
    Sleep(250)
    _IELoadWait($oIE)
    
    $oObj = _IEGetObjById($oIE, "blablub")
    MsgBox(0,0,"Text=" & $oObj.innerText)
    
    $oObj.innerText = "Jetzt steht hier ein anderer Text"
    MsgBox(0,0,"Text=" & $oObj.innerText)
    Alles anzeigen

    Lass dir mal den Quellcode mit DocReadHTML in eine Datei schreiben und schau mal ob wirklich alles was im DOM-Explorer dort vorkommt.

    Im DOM-Explorer ist das meiste formatiert und da kann es sein, dass die Zeilen nicht gleich ausschauen obwohl sie es eigentlich sind.

  • IE Reload Content?

    • alpines
    • 3. Oktober 2017 um 18:10

    Das kann gar nicht sein, der Internet Explorer gibt dir den ursprünglichen Quellcode zurück, wenn du in der GUI "Quellcode anzeigen" anklickst.

    Aber im Script sollte das nicht passieren, und zwar aus dem Grund nicht, weil $oObject.document.documentElement.outerHTML verwendet wird.

    Das greift auf die aktuelle Instanz des Objektes zurück und nicht auf den Teil der vor dem AJAX/Javascript verändert wurde.

    Ich schätze mal, dass der Teil den du untersuchen möchtest in einem iframe-Objekt liegt und du deswegen da nicht rankommst, wenn du uns die Seite verrätst können wir dir sicherlich besser helfen.

  • Deutsche Hilfe auf 3.3.14.2 updaten - mitmachen

    • alpines
    • 29. September 2017 um 12:16

    Ich reservier mal (fast) alle in Post #7.

    • _StringTitleCase 3_3_14_2 - bis - _WinAPI_AddFontMemResourceEx 3_3_14_2 txt.rar
    • _GDIPlus_StringFormatGetMeasurableCharacterRangeCount 3_3_14_2 - bis - _GDIPlus_TextureCreate2 3_3_14_2 txt.rar
    • _WinAPI_AddFontResourceEx 3_3_14_2 - bis - _WinAPI_AdjustBitmap 3_3_14_2 txt.rar
    • _WinAPI_AdjustTokenPrivileges 3_3_14_2 - bis - _WinAPI_AnimateWindow 3_3_14_2 txt.rar
    • _GDIPlus_RegionDispose 3_3_14_2 - bis - _GDIPlus_RegionTranslate 3_3_14_2 txt.rar
    • _GDIPlus_TextureCreateIA 3_3_14_2 - bis - _GUIToolTip_Deactivate 3_3_14_2 txt.rar
  • Ist Binary nicht 01011101?

    • alpines
    • 28. September 2017 um 23:59

    Er hat sicherlich auf Absenden gedrückt ohne es zu merken. Passiert, ist ja nicht schlimm.

  • Ist Binary nicht 01011101?

    • alpines
    • 28. September 2017 um 23:06

    Lies unter 'Binary': https://www.autoitscript.com/autoit3/docs/i…g_datatypes.htm

    In diesem Fall ist Binary die Hexadezimalrepräsentation des Wertes des Zeichens in der ASCII-Tabelle.

  • Datei auf Script (.exe) ziehen und Pfad dazu bekommen. Wie zu implementieren?

    • alpines
    • 28. September 2017 um 12:44

    Lass dir mal mit _ArrayDisplay das $CMDLine Array ausgeben. Das ist schon im Vorhinein definiert und enthält die Dateien die du auf die Exe gezogen hast.

  • Datum im Dateinamen ändern - Ordnung im Chaos

    • alpines
    • 26. September 2017 um 18:43

    Dazu braucht es keine komplexen Suchmuster, du kannst alle Formate im Regex einzeln finden und dann einfach mit einem Oder verketten (zwar nicht perfekt aber funktioniert).

    Allerdings hast du das Problem, dass du bei einigen Dateien nicht weißt ob es sich um den Monat oder das Jahr handelt also können dir einige Schnitzer passieren.

    So kriegst du die Gruppen: https://regex101.com/r/TtMs0O/1

    Danach kannst du ja schauen wie lang sie sind, wenn sie drei/vier Zeichen lang sind schaust du nach welche Zahl vorne steht und teilst sie nach gewissen Richtlinien auf.

  • Listview - Hintergrundfarbe einer Zeile setzen ohne den weißen Zwischenraum davor?

    • alpines
    • 26. September 2017 um 09:51

    Das einzige was vielleicht nerven könnte ist das Resizen der Header. Man kann den 1. nämlich von 0 auf x Pixel ziehen und so eine Lücke herstellen.

    Wenn man das Resizen generell verhindert ist das sicherlich kein Problem, wenn man das Resizen der anderen allerdings erlauben möchte, dann muss man

    das Event dafür hooken und schauen an welchem Header man gerade resized und je nachdem es sperren oder gewähren lassen.

  • Listview - Hintergrundfarbe einer Zeile setzen ohne den weißen Zwischenraum davor?

    • alpines
    • 26. September 2017 um 09:34

    Wenn man eine Extraspalte hinzufügt und die Breite besagter Spalte 0 setzt, dann kommt man auf einen Pixel runter, das ist eigentlich ein Standardmargin für Windowselemente.

    [Blockierte Grafik: https://i.imgur.com/suSVMCG.png]

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    Example()
    
    Func Example()
        GUICreate("listview items", 220, 250, 100, 200, -1, $WS_EX_ACCEPTFILES)
        GUISetBkColor(0x00E0FFFF) ; will change background color
    
        Local $idListview = GUICtrlCreateListView("|col1  |col2|col3  ", 10, 10, 200, 150) ;,$LVS_SORTDESCENDING)
        _GUICtrlListView_SetColumnWidth($idListview, 0, 0)
        Local $idButton = GUICtrlCreateButton("Value?", 75, 170, 70, 20)
        Local $idItem1 = GUICtrlCreateListViewItem("|item2|col22|col23", $idListview)
        GUICtrlSetBkColor($idItem1, 0xE97659)
        Local $idItem2 = GUICtrlCreateListViewItem("|item1|col12|col13", $idListview)
        GUICtrlSetBkColor($idItem2, 0x7499FF)
        Local $idItem3 = GUICtrlCreateListViewItem("|item3|col32|col33", $idListview)
        GUICtrlCreateInput("", 20, 200, 150)
        GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; to allow drag and dropping
        GUISetState(@SW_SHOW)
    
        ; Loop until the user exits.
        While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                    ExitLoop
    
                Case $idButton
                    MsgBox($MB_SYSTEMMODAL, "listview item", GUICtrlRead(GUICtrlRead($idListview)), 2)
    
                Case $idListview
                    MsgBox($MB_SYSTEMMODAL, "listview", "clicked=" & GUICtrlGetState($idListview), 2)
    
            EndSwitch
        WEnd
    EndFunc   ;==>Example
    Alles anzeigen
  • [Problem] Item Reader - Daten aus 3 Dateien lesen & zuordnen

    • alpines
    • 26. September 2017 um 08:02
    Zitat von Musashi

    Könntest Du die Dateien mal hochladen !

    Bitte sehr.

    Dateien

    test2.7z 450,28 kB – 337 Downloads
  • [Problem] Item Reader - Daten aus 3 Dateien lesen & zuordnen

    • alpines
    • 25. September 2017 um 23:04
    Zitat von Ram3000

    Aber kann es sein das das FileWrite nichts macht? Bei mir wir keine Datei erstellt...?!

    Ist ja auch auskommentiert.

  • ButtonClick clickt nicht / ThunderRT6

    • alpines
    • 25. September 2017 um 20:52
    Zitat von WildAutoIT

    autoit.ControlClick strTitWin, "", [CLASS:ThunderRT6UserControlDC; INSTANCE:8]

    Da fehlen doch die Stringliterale um die Klasse oder irre ich mich?

  • [Problem] Item Reader - Daten aus 3 Dateien lesen & zuordnen

    • alpines
    • 25. September 2017 um 20:50

    Ich sags doch, Dictionaries eignen sich hier hervorragend. Wenn man aber im Nachhinein die Dateien sowieso in einem einfacheren Format ohne Zusatzinformationen speichert, sind die paar Sekunden glaube ich im Nachhinein auch egal. Trotzdem schönes Beispiel!

  • [Problem] Item Reader - Daten aus 3 Dateien lesen & zuordnen

    • alpines
    • 25. September 2017 um 17:39

    Beim nächsten Mal Erledigt-Haken setzen nicht vergessen!

  • [Problem] Item Reader - Daten aus 3 Dateien lesen & zuordnen

    • alpines
    • 25. September 2017 um 15:49

    Hier mal wie ich das ganze auf die schnelle gelöst habe, es gibt garantiert schnellere Wege, denn das Parsen dauert hin schon ziemlich lange.

    Ich hab keinen effizienten Algorithmus implementiert, er sucht einfach alles von vorne bis hinten durch und braucht für jedes Item im Schnitt die Hälfte aller Einträge (miserabel, ganz zu schweigen von den RegEx-Patterns).

    Mit einem Dictionary wird das ganze sicherlich schneller gehen, da die Werte gehasht indexiert werden und man nicht das gesamte Array durchsuchen muss.

    Du solltest nach dem Parsen der Datenbank sie unbedingt in einem einfacheren Format speichern, damit du nicht immer alles neuparsen musst.

    AutoIt
    #include <Array.au3>
    
    ; ========== Database Parsing ==========
    
    Global $aItems[0][5] ;Id, Define, IdentifierString, Name, Description
    
    Global $sDefineItem = FileRead("defineItem.h")
    Global $sPropItem = FileRead("propItem.txt")
    Global $sPropItem2 = FileRead("propItem.txt.txt")
    
    Global $aRegEx = StringRegExp($sDefineItem, "#define\s(.+?)\s+(\d+)(?:\s.+?)?\R", 3)
    
    If Not UBound($aRegEx) Then Exit ;Database Parsing Error
    
    ReDim $aItems[UBound($aRegEx) / 2][5]
    
    For $i = 0 To UBound($aRegEx) - 2 Step 2
        $aItems[$i / 2][0] = $aRegEx[$i + 1]    ;Define
        $aItems[$i / 2][1] = $aRegEx[$i]        ;Id
    Next
    
    Global $aRegEx = StringRegExp($sPropItem, "\d+\s+(II_.+?)\s+(IDS_.+?)\s+\d+\s+\d", 3)
    
    For $i = 0 To UBound($aRegEx) - 2 Step 2
        For $j = 0 To UBound($aItems) - 1
            If $aRegEx[$i] = $aItems[$j][1] Then
                $aItems[$j][2] = $aRegEx[$i + 1]    ;IdentifierString
    
                $aInfo = _GetItemNameAndDescription($sPropItem2, $aItems[$j][2])
    
                If UBound($aInfo) Then
                    $aItems[$j][3] = $aInfo[0]    ;Name
                    $aItems[$j][4] = $aInfo[1]    ;Description
                EndIf
    
                ExitLoop
            EndIf
        Next
    
        ConsoleWrite($i & @CRLF)
    Next
    
    _ArrayDisplay($aItems)
    Exit
    
    ; ========== Database Parsing ==========
    
    Func _GetItemNameAndDescription($sPropItem2, $sIdentifier)
        Return StringRegExp($sPropItem2, $sIdentifier & "\s(.+?)\R.+?\s(.*?)\R", 3)
    EndFunc
    Alles anzeigen
  • FileReadLine & Send

    • alpines
    • 25. September 2017 um 11:45

    Beim nächsten Mal Haken setzen nicht vergessen! Du solltest nebenbei bemerkt auf Send verzichten, wenn das Problem nicht all zu kompliziert ist kann man auf Fremdsoftware verzichten und es in AutoIt intern lösen.

  • [gelöst] Syntax-Hervorhebungen im Editor des Forums

    • alpines
    • 25. September 2017 um 10:54

    Hier mal ein Beispiel, das Backslash escaped in anderen Sprachen die String-Literale aber nicht in AutoIt, dennoch ist es im Highlighter so vorhanden:

    AutoIt
    #include <AutoIt.au3>
    
    $sString = "Das ist ein String mit einem Backslash \ Fertig."
    MsgBox(64, "Bla", "Blubb!")
    AutoIt
    #include <AutoIt.au3>
    
    $sString = "Das ist ein ganz anderer String aber dennoch gültig in \""AutoIt!\"""
    MsgBox(64, "Bla", "Blubb!")
    AutoIt
    #include <AutoIt.au3>
    
    $sString = "Das ist ein String mit zwei Literalen ""hintereinander"", mehr nicht."
    MsgBox(64, "Bla", "Blubb!")
  • [gelöst] Syntax-Hervorhebungen im Editor des Forums

    • alpines
    • 25. September 2017 um 10:47

    Das hatten wir in WBB3 schon. Backslashes innerhalb von Strings verursachen das ganze.

    Dazu hatten wir schon mal einen eigenen Thread aber ich kann den Link dazu nicht mehr aufrufen, hier begann das ganze:

    Vorschläge und Verbesserungen / Complaint Area

  • [Problem] Item Reader - Daten aus 3 Dateien lesen & zuordnen

    • alpines
    • 25. September 2017 um 10:45

    Wofür willst du denn das ganze extrahieren? Für einen Bot?

    Ich kann dir nur raten nicht immer die Daten parsen zu wollen, das dauert viel zu lange. Parse sie einmal vernünftig in ein Dictionary oder Array und greif dann darauf zu.

    Der Index kann dir dabei als Schlüssel oder Arrayindex dienen.

    (Du kannst übrigens Dateianhänge auch hier im Forum hochladen, dazu braucht man mega nicht!)

  • FileReadLine & Send

    • alpines
    • 25. September 2017 um 10:10

    Das Send wird nicht ignoriert, du kriegst es nur nicht mit. Der Run-Befehl wird an das Betriebssystem geschickt und direkt danach wird deine Eingabe abgefeuert.

    Du müsstest aber erstmal warten bis der Prozess gestartet ist, ganz zu schweigen vom Fenster. Also ein WinWaitActive-Befehl dahinter und schon sollte das ganze funktionieren.

    Logischerweise solltest du nicht nur WinWaitActive alleine verwenden, denn wenn ein Fenster zwischendurch aufploppt wars das mit deinem Script.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™