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. autoBert

Beiträge von autoBert

  • AutoIT, XML und Homematic

    • autoBert
    • 20. November 2015 um 22:09

    Die Version mit InetGet:

    C
    #Include <Array.au3>
    #include <String.au3>
    main()
    func main()
        Local $sFile = @ScriptDir&'\HomeMatic.txt'
        InetGet("http://10.20.200.3/config/xmlapi/state.cgi?datapoint_id=1471",$sFile,1,1)
        If FileExists($sFile) Then
            $sXML=FileRead($sFile)
            if @error then MsgBox(1, "", @error)
              $wert=_StringBetween($sXML,'<datapoint ise_id="1471" value="','<datapoint ise_id="1471" value="')
            If @error Then
                MsgBox(1, "", @error)
            Else
                _ArrayDisplay($wert)
            EndIf
    Else
        MsgBox(4096, "fehler", "not found")
    EndIf
    EndFunc
    Alles anzeigen


    Version mit InetRead:

    C
    #include <Array.au3>
    #include <String.au3>
    main()
    Func main()
        $sXML = BinaryToString(InetRead("http://10.20.200.3/config/xmlapi/state.cgi?datapoint_id=1471"))
        $wert = _StringBetween($sXML, '<datapoint ise_id="1471" value="', '<datapoint ise_id="1471" value="')
        If @error Then
            MsgBox(1, "", @error)
        Else
            _ArrayDisplay($wert)
        EndIf
    EndFunc   ;==>main
    Alles anzeigen

    Ich würde INetRead vorziehen da kein Umweg über Datei notwendig.

  • AutoIT, XML und Homematic

    • autoBert
    • 20. November 2015 um 21:37

    Ich habe den _XMLDomWrapper noch nie benutzt und obiges Skript auch nicht getestet.

    Poste mal den Inhalt von der erstellten HomeMatic.txt und das erwartete Ergebnis.

  • AutoIT, XML und Homematic

    • autoBert
    • 20. November 2015 um 21:07

    Versuch es einnal mit:

    Code
    `#Include "_XMLDomWrapper.au3"
    #Include <Array.au3>
    main()
    func main()
        Local $sFile = @ScriptDir&'\HomeMatic.txt'
    	InetGet("http://10.20.200.3/config/xmlapi/state.cgi?datapoint_id=1471",$sFile,1,1)
        If FileExists($sFile) Then
            $ret = _XMLFileOpen ($sFile)
            if @error then MsgBox(1, "", @error)
            $wert = _XMLGetValue('/state/datapoint/value')
    		_ArrayDisplay($wert)
    		MsgBox(4096, "Error", _XMLError ())
    Else
        MsgBox(4096, "fehler", "not found")
    EndIf
    EndFunc
    Alles anzeigen

    du hast ja in deinem Skript $sFile eine URL zugeordnet. Ich habe jetzt das Ergebnis des URL-Aufrufs in die Datei gfespeichert.

  • Includes & Autovervollständigung

    • autoBert
    • 20. November 2015 um 12:26

    wenn der Autor des Icludes eine API bereitgestellt hat, muss diese Scite bekanntr gemacht werden. Ich bin mir nicht sicher ob es reicht das Api-File in ...\AutoIt3\Scite\Api einzukopieren. Warscheins muss noch ein Konfiguratiosfile angepasst werden.
    Du kannst aber auch direkt die au3.api ergänzen, Schema: Funktionsname Beschreibung z.B.:
    AdlibRegister ( "function" [, time = 250] ) Registers an Adlib function.

  • Alte Includes vs. neue Includes

    • autoBert
    • 18. November 2015 um 22:42

    Falls #include-once in den doppelt eingebunden Includes verwendet wurde kann es evtl. sogar funktionieren (50:50), ansonsten kommt garantiert für jede Func eine Fehlermeldung (already definied o.ä.)

  • Ratschlag zu Datenspeicherung

    • autoBert
    • 18. November 2015 um 00:45

    Nimm MySQL stattdesen, SQLite ist nicht MultiUser fähig.

  • 2D Arrays vergleichen und nur Übereinstimmung in neuem Array auflisten...

    • autoBert
    • 16. November 2015 um 00:36

    Diese kleine Optimierung von @Oscar's Skript:

    AutoIt
    #include <Array.au3>
    
    
    Global $aarray1 = [["Banane", "16,95"], ["Apfel", "20,5"], ["Birne", "20,5"]]
    Global $aarray2 = [["Banane", "16.11", '2 / 3'], ["Apfel", "20.11", '2 / 5'], ['Kirsche', '23.11', '4 / 9']]
    Global $oDictionary = ObjCreate('Scripting.Dictionary')
    For $i = 0 To UBound($aarray1) - 1
    	If Not $oDictionary.Exists($aarray1[$i][0]) Then $oDictionary.Add($aarray1[$i][0], $aarray1[$i][1])
    Next
    Global $iNewCol = UBound($aarray2, $UBOUND_COLUMNS ) + 1, $iNewRow = 1, $iRows=UBound($aarray2)+1
    Global $aNew[$iRows][$iNewCol]
    _ArrayDisplay($aarray2,'Array 2')
    For $i = 0 To UBound($aarray2) - 1
    	If $oDictionary.Exists($aarray2[$i][0]) Then
    		For $j = 0 To $iNewCol - 2
    			$aNew[$iNewRow - 1][$j] = $aarray2[$i][$j]
    		Next
    		$aNew[$iNewRow - 1][$iNewCol - 1] = $oDictionary.Item($aarray2[$i][0])
    		$iNewRow += 1
    	EndIf
    Next
    ReDim $aNew[$iNewRow - 1][$iNewCol]
    
    
    _ArrayDisplay($aNew,'Array New')
    Alles anzeigen

    sollte zumindest bei großem 2. Array einige Zeit sparen da nur noch 1 ReDim ausgeführt werden muss.

  • Wann ist das File geschrieben

    • autoBert
    • 15. November 2015 um 22:41
    Zitat von Peter S. Taler

    @autoBert


    Verstehe ich das richtig, dass sich das BS um die saubere Abwicklung kümmert?

    genau richtig, wenn _FileWriteFromArray (bei DateiPfad) bzw. FileClose (bei FileHandle) mit 1 beendet wird steht der aktuelle Dateiinhalt zur Verfügung.

  • UDF-Transfer Probleme

    • autoBert
    • 15. November 2015 um 22:20

    wundert mich das du das Skript starten kannst, denn siehe:

    Code
    >"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\Bert\AutoIt3.My\Source\FTP-Demos\udp.au3" /UserParams    
    +>22:17:55 Starting AutoIt3Wrapper v.14.801.2025.0 SciTE v.3.4.4.0   Keyboard:00000407  OS:WIN_81/  CPU:X64 OS:X64    Environment(Language:0407)
    +>         SciTEDir => C:\Program Files\AutoIt3\SciTE   UserDir => C:\Users\Bert\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\Bert\AppData\Local\AutoIt v3\SciTE 
    >Running AU3Check (3.3.14.1)  from:C:\Program Files\AutoIt3  input:C:\Users\Bert\AutoIt3.My\Source\FTP-Demos\udp.au3
    "C:\Users\Bert\AutoIt3.My\Source\FTP-Demos\udp.au3"(101,42) : warning: $eTCP_String: possibly used before declaration.
    	$sText = "Data Valid: " & ($eTCP_String =
    	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "C:\Users\Bert\AutoIt3.My\Source\FTP-Demos\udp.au3"(101,42) : error: $eTCP_String: undeclared global variable.
    	$sText = "Data Valid: " & ($eTCP_String =
    	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Users\Bert\AutoIt3.My\Source\FTP-Demos\udp.au3 - 1 error(s), 1 warning(s)
    !>22:17:55 AU3Check ended. Press F4 to jump to next error.rc:2
    +>22:17:55 AutoIt3Wrapper Finished.
    >Exit code: 2    Time: 1.179
    Alles anzeigen

    das Beispiel zu UDPRecv läuft bei dir?

  • Wann ist das File geschrieben

    • autoBert
    • 15. November 2015 um 22:03

    Bei Benutzung des Filehandles ist nach FileClose exakt die selbe Situation wie bei Benutzung eines FilePath. Die Datei wurde dem BS zum schreiben übergeben befindet sich aber evtl. noch in einer Warteschlange. Wenn das BS vor dem vollständigen Zurückschreiben eine Leseanfrage bekommt wird das File direkt aus dieser Warteschlange ausgelesen. Bei USB-Sticks musst du nur darauf achten das der Stick nicht vor dem vollständigen zurückschreiben entfernt wird, also immer Hardware sicher entfernen benutzen.
    Du kannst ja auch mit FileExists prüfen ob die Datei existiert bzw. mit FileGetTime prüfen ob sie aktuell ist.

  • Wann ist das File geschrieben

    • autoBert
    • 15. November 2015 um 21:31

    Prüfe doch die Rückgabe von _FileWriteFromArray, die Funktion gibt 1 bei Erfolg zurück. Zu diesem Zeitpunkt wurde das Array erfolgreich geschrieben. Auch wenn es noch nicht unbedingt physisch auf der Festplatte ist sollte doch das BS wissen wo es das File auszulesen hat. Also einfach den Sleep weglassen und vorsichtshalber zuvor auf Fehler prüfen.

  • Screenshot von nicht sichtbaren IE-Fenster

    • autoBert
    • 15. November 2015 um 16:18

    alpines: UEZ hat so etwas schon einmal gemacht: http://www.autoit.de/index.php?page=Thread&postID=199580 . Aber je nach URL kann das gezeichnete Bild von der Anzeige in einem Browser abweichen. Und der TE möchte ja ein ScreenShot und ein solcher hat nun einmal identisch zu sein. Ich habe in meinem (sehr einfachen) ScreenShot'er einfach versteckte Fenster sichtbar gemacht, mit _ScreenCapture_Capture einen ScreenShot gemacht und danach den alten Status des Fensters wiederhergestellt.

  • Screenshot von nicht sichtbaren IE-Fenster

    • autoBert
    • 14. November 2015 um 12:17

    Schaffst du es denn im RL etwas zu fotografieren das man nicht sehen kann?

  • Fehlermeldung bei Start der kompilierten EXE

    • autoBert
    • 14. November 2015 um 11:58

    Wenn ich dein Skript, nach auskommentieren der beiden fehlenden *GUI.isf, mit F5 starte bekomme ich 20 Errors. Dies liegt wohl daran das alle globalen Variablen in einem der beiden Files deklariert sind. Du solltest also diese mit einstellen, denn ohne kann man nicht testen.

    Edit: nimm einmal die Zeile

    Code
    #AutoIt3Wrapper_Run_Au3Stripper=y

    heraus bzw. setze die Anweisung auf n. Vieleicht löscht der Au3Stripper ja zuviel was afaik nur bei Objekten vorkommt.

  • Datei in Ordner markieren (selektieren)

    • autoBert
    • 5. November 2015 um 17:17

    Vielleicht waren ja die Vorgänger in der Lage die Hilfe zu lesen?

  • Zeitdifferenz

    • autoBert
    • 5. November 2015 um 17:03

    Stichwörter: _DateDiff(), TimerDiff()

  • Protection? Mausklicks funktionieren nicht

    • autoBert
    • 5. November 2015 um 16:31

    Welches Programm willst du den automatisieren?

  • Automatisieren von Downloads mit Hilfe vom IDM und AutoIT

    • autoBert
    • 3. November 2015 um 17:04

    Ohne das Videoportal zu benennen wirst du wohl keinen finden der dies für dich progt. Das grösste roblem habe ich bereits benannt:

    Zitat von autoBert


    Ich bezweifle aber daß sich jemand bereit erklärt 10+X Stunden zu opfern ohne eine Gegenleistung zu erhalten.

  • Automatisieren von Downloads mit Hilfe vom IDM und AutoIT

    • autoBert
    • 2. November 2015 um 15:51

    Kanashius: stimmt ich und auch einige andere hier haben schon YouTube-Downloader geschrieben. Meiner war zuerst mit INetGet später mit der HTTP.au3, dieser konnte auch Playlist's downloaden und durch Multiproccenig auch eine frei definierte Anzahl DL paralell downloaden.
    Es stimmt aber auch das YT-DL hier nicht toleriert werden.

    derMax: ich weis aus eigener Erfahrung welcher Zeitaufwand dahinter steckt (zuminedest bei YT). Wenn deine Seite mit den Links Forenregeln kompatipel ist solltest du diese benennen. Ich bezweifle aber daß sich jemand bereit erklärt 10+X Stunden zu opfern ohne eine Gegenleistung zu erhalten.

  • Automatisieren von Downloads mit Hilfe vom IDM und AutoIT

    • autoBert
    • 31. Oktober 2015 um 16:54

    Warum benutzt du nicht die IE.au3 (für den InternetExplorer) oder die FF.au3 (für FireFox)?

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™