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

Beiträge von AnMa

  • [PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

    • AnMa
    • 1. Oktober 2013 um 19:38

    Ok, so langsam glaube ich zu verstehen wie diese Verkettung funktioniert.

    Ich fasse grundsätzlich also den Samstag mit der Uhrzeit in Klammern zusammen zu einer Bedingung die an das If not gebunden ist, mit dem "And Not" füge ich eine zweite Bedingung hinzu die wieder eigenständig in Klamern gesetzt wird.

    Jaaa, ich glaub ich habs jetzt kapiert :D

    Danke Dir .. :)

  • [PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

    • AnMa
    • 1. Oktober 2013 um 17:03

    OK, ich abe mich wohl falsch ausgedrückt. Mir geht es nciht unbedingt darum hier eine fertig Lösung präsentiert zu bekommen, vielmehr geht es mir darum zu verstehen warum und wie etwas funktioniert :)

    Hier also ein lauffähiges Script mit den beiden Funktionen die anderorts im Script schon verwendet werden und ich eben gern weiter nutzen möchte.

    Wenn ich das richtig verstehe müßte die Abfrage "If Not" - (Samstag und später als 05:50) oder nicht (Sonntag) dann .... außerhalb der Zeit eben das "Then" ausführen?

    Spoiler anzeigen
    [autoit]

    #Region ### WOCHENTAG ABFRAGE ###
    $sWochentagHeute = _Weekdays()
    If Not ($sWochentagHeute = "Samstag" And (_TimeDefinition() > _TimeDefinition (5, 50))) or not($sWochentagHeute = "Sonntag") Then
    MsgBox(16, "Keine Nachrichten", "Heute ist " & $sWochentagHeute & @CRLF & @CRLF & "Bitte normale Nachrichten für " & @CRLF & "Montag bis Freitag aktualisieren!")
    Else
    MsgBox(16, "Nachrichten", "News werden geladen")
    EndIf

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

    #EndRegion ### WOCHENTAG ABFRAGE ###

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

    #Region ### TIME DEFINITION ###
    Func _TimeDefinition($iHour=@HOUR, $iMin=@MIN)
    Return $iHour * 60 + $iMin
    EndFunc
    #EndRegion ### TIME DEFINITION ###

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

    #Region ### WEEKDAYS ###
    Func _Weekdays()
    Local $arWochentag = "Sonntag|Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag"
    $arWochentagSplit = StringSplit($arWochentag, "|")
    $sWochentag = $arWochentagSplit[@WDAY]
    Return $sWochentag
    EndFunc
    #EndRegion ### WEEKDAYS ###

    [/autoit]
  • [PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

    • AnMa
    • 1. Oktober 2013 um 14:48

    Vielen Dank erstmal :)

    OK .... Aber ich achte mit "not" konnte ich das direkt lösen?

    Also nach dem Motto:
    Wenn es nicht Samstag und später als 05:50 Udr oder Sonntag ist, dann .....

    oder verstehe ich hier den Operator "Not" falsch?

  • [PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

    • AnMa
    • 1. Oktober 2013 um 10:22

    Halllo Leutz,

    ich habe mal wieder ein echtes Denkproblem, für das es sicher eine elegate Lösung gibt.

    Diese Schleife soll die Funktion verlassen, wenn es nicht Samstag später als 05:50 Uhr oder Sonntag ist. Also von Montag 00:00 Uhr bis Samstag 05:50: Uhr. Aber immer fehlt mir der letzte Schritt und ich klammere entweder den Kompletten Samstag aus oder er ist er ist gänzlich mit drin.

    Spoiler anzeigen
    [autoit]


    #Region ### WOCHENTAG ABFRAGE ###
    $sWochentagHeute = _Weekdays()
    If Not ($sWochentagHeute = "Samstag" And (_TimeDefinition() > _TimeDefinition (5, 50))) or $sWochentagHeute = "Sonntag" Then
    If MsgBox(16, "Keine Nachrichten", "Heute ist " & $sWochentagHeute & @CRLF & @CRLF & "Bitte normale Nachrichten für " & @CRLF & "Montag bis Freitag aktualisieren!") = 1 Then Return 1
    EndIf
    _logfile("Wochentag: " & $sWochentagHeute)
    #EndRegion ### WOCHENTAG ABFRAGE ###

    [/autoit]
  • [PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

    • AnMa
    • 30. September 2013 um 17:56

    Hat mich zwar man wieder ein paar Stunden meines Lebens gekostet, aber das Problem an sich konnte ich finden und lösen.

    Eine weitere Abfrageschleife hatte ich in einem falschen Bereich des Workaround platziert.

    Einzig eine unschöne, aber aktuell zu vernachlässigende Kleigkeit funktioniert nicht, denn die nötige Aktualisierung der Funktion findet verständlicher Weise erst statt, wenn man die Maus ein wenig bewegt. Aber auch das werde ich nch herausfinden :D

  • [PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

    • AnMa
    • 30. September 2013 um 14:32

    Oh Sorry, das hatte ich in der Original schon eingetragen ($sGuiOpt)

    Ich bin auch gerade etwas irritiert, da es von 100 Versuchen einmal klappt und die anderenmale nicht. Da muß noch irgendwas anderes im argen sein, aber ich muß da wohl noch mal suchen.

  • [PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

    • AnMa
    • 30. September 2013 um 12:58

    Hey zusammen :)

    Ich habe da mal wieder ne Frage.

    Mein Programm, bestehend aus Hauptfenster und Optionsfenster, handelt die beiden Fenster im Workaround. Bei Programmstart steht das Main auf "SHOW" und das Options auf "HIDE" über das folgende Teilscript wird das Options-Fenster ein- bzw. ausgeblendet.

    Spoiler anzeigen
    [autoit]

    #Region ### WORKAROUND ###
    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1]

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

    Case $hGuiMain ; ### Start Workaround MainGui
    Switch $nMsg[0]
    Case $sItemExit, $GUI_EVENT_CLOSE
    ExitLoop
    Case $sItemEinst
    GUISetState(@SW_SHOW, $hGuiMain)
    GUISetState(@SW_SHOW, $hGuiOpt)
    EndSwitch

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

    Case $hGuiOpt ; ### Start Workaround OptGui
    Switch $nMsg[0]
    Case 0
    ContinueLoop
    Case $sCancel, $GUI_EVENT_CLOSE
    GUISetState(@SW_SHOW, $hGuiMain)
    GUISetState(@SW_HIDE, $hGuiOpt)
    Case $Pic[0] To $Pic[UBound($Pic) - 1]
    If $nMsg[0] <> $Pic[$Item] Then
    GUICtrlSetImage($Pic[$Item], @ScriptDir & '\images\tab_deselected.jpg')
    GUICtrlSetcolor($Pic[$Item] + 1, 0xFFFFFF)
    GUICtrlSetImage($nMsg[0], @ScriptDir & '\images\tab_selected.jpg')
    GUICtrlSetcolor($nMsg[0] + 1, 0x313A42)
    $Item = _Index($nMsg[0])
    GUICtrlSendMsg($Tab, $TCM_SETCURFOCUS, $Item, 0)
    $Over = -1
    EndIf
    Case $sSave
    _SaveOptions()
    GUISetState(@SW_SHOW, $hGuiMain)
    GUISetState(@SW_HIDE, $hGuiOpt)
    EndSwitch
    EndSwitch
    WEnd
    #EndRegion ### WORKAROUND ###

    [/autoit]

    Jetzt habe ich das Problem, dass ich mit dem folgenden Teil das Options-Fenster abfragen muß obwohl es nicht aktiv ist (HIDE). Eigentlich dachte ich es würde reichen das im Main-Workaround nach dem GUISetState(@SW_SHOW, $hGuiOpt) einzufügen, aber auch hier scheint es nicht zu wirken.

    Spoiler anzeigen
    [autoit]

    $Info = GUIGetCursorInfo()
    If @error Then
    If $Over <> -1 Then
    GUICtrlSetImage($Pic[$Over], '..\images\tab_deselected.jpg')
    EndIf
    $Over = -1
    Else
    $Index = _Index($Info[4])
    If $Index <> $Over Then
    If $Over <> -1 Then
    GUICtrlSetImage($Pic[$Over], '..\images\tab_deselected.jpg')
    EndIf
    If ($Index <> -1) And ($Index <> $Item) Then
    GUICtrlSetImage($Pic[$Index], '..\images\tab_hoover.jpg')
    $Over = $Index
    Else
    $Over = -1
    EndIf
    EndIf
    EndIf

    [/autoit]

    Wie bekomme ich eine korrekte Ausgabe von GUIGetCurserInfo wenn das Fenster im HIDE-Modus ist?

  • Shoutcast Stream Daten auslesen

    • AnMa
    • 28. September 2013 um 17:00

    OK, das hab ich kappiert ... :)

    Danke vielmals

  • Shoutcast Stream Daten auslesen

    • AnMa
    • 28. September 2013 um 16:50

    Öhm ... kapier ich grad nicht.

    Was genau frägst Du da ab ?

    Wenn eines der Arrays leer ist, dann Fehlermeldung und Return ansonsten Anzeigen ?

  • Shoutcast Stream Daten auslesen

    • AnMa
    • 28. September 2013 um 16:35

    Nun habe ich noch ein Problemchen, wenn der Stream nicht läuft verändert sich der Quellcode und die Funktion kann anscheinend das _StringBetween nicht mehr ordentlich abarbeiten und damit schließt sich das Programm.

    Wie kann ich das abfangen ?

    Denn selbst ne If-Abfrage würde ja schon _StringBetween benötigen oder?

  • [PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

    • AnMa
    • 28. September 2013 um 15:07

    Ich habe eine grundlegende Aufbaufrage.

    Mein Programm besteht bisher aus der MainGui mit dem eigentlichen Programm und der OptionenGui in der die Userdaten und Einstellungen vorgenommen werden. Nun habe ich in der MainGui Elemente die sich immer wieder aktualisieren müssen, das hat aber zur Folge, dass das Programm zwischen durch nicht mehr erreichbar ist.

    Fall1:
    Die Überprüfung der Verbindung zum FTP-Server - solange die Verbindung steht ist die Funktion schnell abgearbeitet und es geht nicht viel Zeit verloren. Man mekrt es zwar aber es wäre noch OK. Wenn die Verbindung aber temporär Unterbrochen ist, ist das Programm für mehrere Sekunden blockiert.

    Fall2:
    Die Abfrage des ShoutCast-Servers - Auch hier muß die Anzeige ja in einem gewissen Abstand aktualisiert werden.

    Wie bewerkstelligt man sowas nun ohne das Programm an sich zu blockeiren?

    Meine Idee:
    Ich lagere die entsprechenden Funktionen in unabhängige Scripte aus die gemeinsam mit dem Programm gestartet werden. Diese schreiben ihre Ergebnisse dann in die config.ini aus der die Daten dann vom Hauptprogram im Workaround ausgelesen und ins GUI übernommen werden.

    Oder gibt es dafür eine bessere Lösung?

  • Shoutcast Stream Daten auslesen

    • AnMa
    • 28. September 2013 um 13:33

    Werde ich machen ....

    Das Problem ist, dass ich das alles nicht so schnell verstehe. Dennin vielen Beschreibungen werden wieder andere Begriffe und Voraussetzungen erwähnt die ich noch nicht verstehe und so kommt man schnell von einem ins andere und irgendwann hat man 10 Seiten offen um nur ein Wort aus der ersten Seite zu verstehen :D

  • Shoutcast Stream Daten auslesen

    • AnMa
    • 28. September 2013 um 13:24

    @Pain: Wow ... Danke. :)

    Die Sache mit der COM-Geschichte kapier ich noch nicht so ganz, da muß ich mich noch weiter mit beschäftigen.

    Aber Dein Beispiel hat mir in ein paar Punkten die Augen geöffnet ... :) Danke

    @Alpine: Da blicke ich leider garnicht durch :( Ich schätzte mal dass mir dazu noch das Verständnis für die COM-Geschichte fehlt?

  • Shoutcast Stream Daten auslesen

    • AnMa
    • 28. September 2013 um 12:40

    hmmmm .. wenn ich das inzwischen richtig verstehe bin ich damit eh komplett auf dem Holzweg :(

  • Shoutcast Stream Daten auslesen

    • AnMa
    • 28. September 2013 um 12:09

    Hallo zusammen :)

    ich hänge mal wieder fest :wacko:

    In meinem Script möchte ich unter anderem den aktuellen Titel und Interpreten, sowie die Zuhörerzahlen und eventuell auch den StreamStatus eines ShoutCastServers anzeigen lassen. Dazu habe ich das folgende Script gefunden, komme aber mit der Umsetzung nicht gnz klar :(

    Der erste Punkt ist, dass die entsprechende Seite inkl. Port aufgerufen wird. z.B.: http://81.169.150.50:9898/index.html Das kann ich ja nicht direkt so übernehmen oder?

    Der andere Punkt ist die Variable $sPost, wenn ich das richtig verstanden habe gibt diese vor welcher Bereich ausgelesen werden soll? Aber wie gebe ich das vor, wenn sich der Inhalt von der Länge ständig ändert?


    Spoiler anzeigen
    [autoit]

    #include <IE.au3>

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

    Global $sURL = "http://81.169.150.50:9898/index.html"
    Global $sPost, $aReturn

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

    _INetGetSourcePost($sURL, $sPost)
    MsgBox(0, "TEST", $aReturn[0] & @CRLF & $aReturn[1])

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

    #Region ### STREAMGET ###
    ;===============================================================================
    ;
    ; Function Name: _INetGetSourcePost()
    ; Description: Gets the source from an URL without writing a temp file and you can send a Post.
    ; Parameter(s): $sURL = The URL of the site.
    ; $sPost = The Post to send
    ; Requirement(s): -
    ; Return Value(s): On Success - Return a array with $aReturn[0] = Backheader and $aReturn[1] = Sourcecode
    ; On Failure - 0 and sets @ERROR
    ; @error = 1: Post or URL is nothing
    ; @error = 2: Error by RegularExpression
    ; @error = 3: $sHost or $sHttp1 is nothing
    ; @error = 4: Can not get IP of Host
    ; @error = 5: Can not connect to host
    ; @error = 6: Nothing can be send
    ; @error = 7: Connection abborted while receiving
    ; Author(s): GtaSpider
    ;
    ;===============================================================================

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

    Func _INetGetSourcePost($sURL, $sPost)
    Local $iSocket, $sHeader, $sRecv, $iIP, $sHost, $aRegExp, $sHttp1,$iErr,$iSend,$aReturn[2]

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

    If $sURL = '' Or $sPost = '' Then Return SetError(1, 0, 0)

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

    If StringLeft($sURL, 7) <> 'http://' And StringLeft($sURL, 8) <> 'https://' Then $sURL = "http://" & $sURL
    If StringRight($sURL, 1) <> "/" Then $sURL &= "/"

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

    $aRegExp = StringRegExp($sURL, "http?://(.*?)/", 3)
    If @error Then Return SetError(2, 0, 0)

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

    $sHost = $aRegExp[0]
    If $sHost = '' Then Return SetError(3, 0, 0)

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

    $sHttp1 = StringTrimLeft($sURL,StringInStr($sURL,"/",-1,3)-1)
    If $sHttp1 = '' Then Return SetError(3, 0, 0)

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

    $sHeader = "POST " & $sHttp1 & " HTTP/1.1" & @CRLF & _
    "Host: " & $sHost & @CRLF & _
    "User-Agent: AutoIt v3" & @CRLF & _
    "Content-Length: " & StringLen($sPost) & @CRLF & @CRLF & $sPost

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

    TCPStartup() ;If not already done
    $iIP = TCPNameToIP($sHost)
    If $iIP = '' Or StringInStr($iIP, ".") = 0 Then Return SetError(4, 0, 0)
    $iSocket = TCPConnect($iIP, 80)
    If @error Or $iSocket < 0 Then Return SetError(5, 0, 0)

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

    $iSend = TCPSend($iSocket, $sHeader)
    If @error Or $iSend < 1 Then Return SetError(6, 0, 0)

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

    While 1
    $sRecv = TCPRecv($iSocket, 1024)
    $iErr = @error
    If $sRecv <> '' Then
    While 1
    $sRecv &= TCPRecv($iSocket, 1024)
    If @error Then ExitLoop 2
    WEnd
    EndIf
    If $iErr Then Return SetError(7,0,0)
    WEnd

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

    $aReturn[0] = StringLeft($sRecv,StringInStr($sRecv,@CRLF&@CRLF)-1)
    $aReturn[1] = StringTrimLeft($sRecv,StringLen($aReturn[0])+4)
    Return $aReturn
    EndFunc ;==>_INetGetSourcePost
    #EndRegion ### STREAMGET ###

    [/autoit]
  • [PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

    • AnMa
    • 27. September 2013 um 23:52

    Kenn mich mit Kaspersky leider garnicht aus, aber wenni ch das richtig in Erinnerung habe, haben wir bereits Ausnahmen und Vertrauen und was nicht alles hinzugefügt. Aber ich schau es mir nochmal an.

    Die WindowsFirewall ist jedenfalls deaktiviert, insofern kommt da auch keine Meldung.

    Ich könnte höchstens die WindowsWall mal aktivieren, in der Hoffnug, dass die Meldung kommt und Kasperle sich danach richtet.

  • [PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

    • AnMa
    • 27. September 2013 um 19:16

    Tja, da kommt sie die Beta :D

    Heute habe ich die Beta des Programms auf den ersten Kollegen losgelassen, es komtm wie es kommen mußte ... Es gibt ein Problem.

    Der Kollege hat Kaspersky installiert :cursing: und jetzt kommt mein FTP nicht durch die firewall. Ich habe schon alle möglichen Rechte erteilt, aber das Kaspely will nicht. Irgendjemand eine Ahnung was wie und wo ich das Lösen kann?

  • Probleme mit der GUI Aktualisierung

    • AnMa
    • 27. September 2013 um 01:04

    :wacko: 8|:huh: Tja, wenn man den Wald vor lauter Bergen oder warens die Hügel vor lauter Bäumen nicht mehr sieht :D

    So einfach zu lösen und doch so weit weg. DANKE :)

  • Probleme mit der GUI Aktualisierung

    • AnMa
    • 26. September 2013 um 21:41

    So, jippie ... ein Problem gelöst :) und ich verstehs sogar .... Danke UEZ

    Ist aber noch meine zweite Hürde offen. Wie schon erwähnt würde ich gerne ein paar der in der GUI angezeigte Buttons deaktivieren, wenn der Verbindungstest zum FTP-Server einen Error ausspuckt. Parallel dazu soll in einer Statusleiste eine Meldung stehen die anzeigt ob die Serververbindung OK ist oder nicht.

    Dazu habe ich eine Funktion geschrieben mit der der Status der FTP-Verbindung abgefragt wird.

    Spoiler anzeigen
    [autoit]


    #Region ## CONNECTION TEST ###
    Func _ConTest()
    Local $_S1_Open = _FTP_Open('MyFTP Control')
    Local $_S1_Conn = _FTP_Connect($_S1_Open, $sOptFtpServer, $sOptFtpUser, $sOptFtpPasswd, 0, $INTERNET_DEFAULT_FTP_PORT, $INTERNET_SERVICE_FTP, 0)
    _FTP_ProgressDownload1($_S1_Conn, "temp" & $sOptFtpZugang, "../_func/" & $sOptFtpZugang, "_UpdateProgress")
    _FTP_Close($_S1_Open)
    Local $check = IniRead("temp\zugang.ini", "sektion1", "check", "Nicht gefunden")
    FileDelete("temp\zugang.ini")
    $sConnChange = True
    If $check = "Nicht gefunden" Then
    _logfile("### ERROR - Serverconn: " & $check)
    $sOptSet = False
    Return $sOptSet
    Else
    _logfile("Serverconn: " & $check)
    $sOptSet = True
    Return $sOptSet
    Endif
    EndFunc
    #EndRegion ## CONNECTION TEST ###

    [/autoit]

    Das klappt auch so weit und die Variable $sOptSet.
    Mit AdlibRegister rufe ichalle 20 Sekunden die obige Funktion auf.

    Womit ich aber große Probleme habe dies entsprechend in die MainGui einzubinden.
    Aber die einzige brauchbare Idee die mir dazu einfiel war es das in den Workaround mit einzubinden, was aber so keine gute Lösung ist und aktuell die GUI lahmlegt.

    Spoiler anzeigen
    [autoit]

    Case $sOptSet = True
    $defaultstatus = " VERBUNDEN"
    GUICtrlSetData ($statuslabel, " Verbindungsstatus zum FTP-Server:" & $defaultstatus)
    GUICtrlSetColor($statuslabel, 0x40FF00)
    GUICtrlSetFont($statuslabel, Default, 400, Default, "Arial Black")
    GUICtrlSetState($hGuiMainButton_1, $GUI_ENABLE)
    Case $sOptSet = False
    $defaultstatus = " KEINE VERBINDUNG !!!"
    GUICtrlSetData ($statuslabel, " Verbindungsstatus zum FTP-Server:" & $defaultstatus)
    GUICtrlSetColor($statuslabel, 0xFF0000)
    GUICtrlSetState($hGuiMainButton_1, $GUI_DISABLE)

    [/autoit]

    Auch die Idee über ein externes Programm zu arbeiten, ändert am Ende ja nichts an dem Problem mit der Aktualisierung der GUI.

  • Probleme mit der GUI Aktualisierung

    • AnMa
    • 26. September 2013 um 20:51

    Auch wenn ich noch nicht ganz kapiere warum, aber es funktioniert. :) Vielen Dank

    Ich werde das Ganze nochmal auf alle Grafiken umarbeiten.

    Ein Problem weniger auf dem weiten Weg :)

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™