EPG-Buddy ein neues EPG Tool (2 Viewers)

Lehmden

Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,554
    3,936
    Lehmden
    Home Country
    Germany Germany
    habe ich keinen Fehler mehr.
    Das ist seltsam.
    Prinzipiell kann man in AutoIt Variablen Global oder Lokal deklarieren. Man muss eine Variable aber eigentlich gar nicht deklarieren. Dann wird das Deklarieren automatisch bei der ersten Verwendung erledigt. Allerdings ist die Verwendung von Variablen ohne Deklaration fehleranfälliger, deswegen wird das meist trotzdem gemacht.
    Global bedeutet, die Variable steht überall zur Verfügung, Local bedeutet die Variable steht nur innerhalb der Funktion, in der sie deklariert wurde, zur Verfügung. Local ist also eine Untermenge von Global. Die Verwendung einer Globalen Variable statt einer Lokalen, kann also prinzipiell keinen Unterschied machen... Anders rum ist da natürlich ein deutlicher Unterschied.

    Da man Variablen ja immer wieder mit neuem Inhalt füllen kann, spart es Arbeitsspeicher wenn man Variablen "Recycelt". Deswegen ist einmal Global deklarieren und dann immer wieder als File Handle verwenden sparsamer und schneller als jedes mal aufs neue eine lokale Variable fürs File Handle zu deklarieren...

    Local wird eigentlich nur innerhalb von Funktionen verwendet. Eine If Then Verzweigung ist aber keine Funktion. Die Abfrage ist im "Haupt- Programmablauf" also außerhalb irgendeiner Funktion angesiedelt. An der Variable bzw deren Inhalt ändert sich dadurch rein gar nichts, außer das sie jetzt mehrfach deklariert werden muss, was höchstens minimal langsamer sein könnte...
    Wobei, vielleicht ist das ja tatsächlich ein Timing Problem und durch diese "unabsichtliche Bremse" passt das Timing wieder...

    Aber da diese Variable funktionsübergreifend mehrfach verwendet wird, hat das Fehlen der Globalen Deklaration unter Umständen in anderen Programmteilen negative Auswirkungen. Mal abwarten, was da noch für Probleme auftauchen...
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,554
    3,936
    Lehmden
    Home Country
    Germany Germany
    @zunixnuz
    Kannst du diesen Code- Schnipsel mal probieren?
    Das sollte sowohl eventuelle Timing Probleme beheben als auch die Variablen- Deklaration wieder in den geplanten Zustand bringen:
    Code:
    Global $fle_hwnd
    
    If Not FileExists(@ScriptDir & "\groups.ini") Then
    
        $fle_hwnd = FileOpen(@ScriptDir & "\groups.ini", 9)
    
        Sleep(1)
    
        FileClose($fle_hwnd)
    
    EndIf
    Falls auch das bei dir fehlerfrei funktioniert (bei mir ja sowieso), werde ich damit eine neue Version (zusammen mit der neuen EPG-Grabber.exe) machen... Das "Sleep(1)" unterbricht den Programmablauf für eine Millisekunde, das fällt nicht auf und sollte das Timing "beruhigen". Und hinter groups.ini, aus der 8 eine 9 machen. bringt auch noch mal ein ganz kleines bisschen an Fehlertoleranz...
     

    zunixnuz

    Portal Pro
    December 23, 2007
    291
    97
    Home Country
    Austria Austria
    Das ist seltsam.
    ...
    Ich verstehe schon was globale und lokale Variablen sind,
    aber in jeder anderen Programmiersprache (ich behersche da ein paar) würde ich eine globale Deklaration nicht innerhalb des "if" scopes machen
    da dann sowiso jeder Compiler berechtigterweise mekern würde da ja die Deklaration nur bedingt (je nach if Ergebnis) erfolgen würde.
    Folgender Code funktioniert:
    Code:
    ; Read checked groups
    Global $fle_hwnd
    If Not FileExists(@ScriptDir & "\groups.ini") Then
        $fle_hwnd = FileOpen(@ScriptDir & "\groups.ini", 8)
        FileClose($fle_hwnd)
    EndIf
    
    Dim $Groups_checked[1]
    _FileReadToArray(@ScriptDir & "\groups.ini", $Groups_checked)
    
    If Not FileExists(@ScriptDir & "\groups3.ini") Then
        $fle_hwnd = FileOpen(@ScriptDir & "\groups3.ini", 8)
        FileClose($fle_hwnd)
    EndIf
    
    Dim $Groups_checked3[1]
    _FileReadToArray(@ScriptDir & "\groups3.ini", $Groups_checked3)
     
    Last edited:

    zunixnuz

    Portal Pro
    December 23, 2007
    291
    97
    Home Country
    Austria Austria
    ...ich würde jetzt mal vermuten, dass AutoIt eine Deklaration innerhalb eines "if" Scopes automatisch "Local" macht,
    würde ja auch irgendwie Sinn ergeben. Dann wundert mich jedoch dass es auf anderen Systemen keine Probleme gab.
    Keine Ahnung wie AutoIt die "compilierten" Skripte ausführt,
    aber wenn das ganze auf irgendeiner System Runtime aufsetzt könnte es schon sein,
    dass diese eventuell auf neueren Systemen restrektiver auf solche Dinge reagiert und ältere toleranter waren...

    Vielleicht sollte man mal den gesamten Code auf ähnliche Konstellationen und somit möglicher Problemstellen untersuchen.
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,554
    3,936
    Lehmden
    Home Country
    Germany Germany
    eine Deklaration innerhalb eines "if" Scopes automatisch "Local" macht,
    Macht es nicht. Da im Zweifel "Global" immer sicherer als "Local" ist, wird bei unklarer Lage "Global" gesetzt...
    Übrigens, den Code Teil hatte ich ursprünglich mal (für ein älteres Programm) so per Copy & Paste aus einem HowTo übernommen und nur den Dateinamen jeweils angepasst... Wird also wohl häufiger so verwendet...
    aber wenn das ganze auf irgendeiner System Runtime aufsetzt
    Bei AutoIt gibt es keine Runtimes. Deswegen sind kleine Programme recht groß, aber selbst "ganz große" Programme ohne irgendeine Installation immer sofort lauffähig. Der Installer dient einzig der Bequemlichkeit des Users... Allerdings werden Windows Funktionen u.A. zum Öffnen von Dateien genutzt. Hier könnte es tatsächliche Unterschiede geben, je nachdem, wie Windows konfiguriert wurde...
     

    JSurf

    Portal Pro
    November 27, 2011
    115
    115
    46
    Home Country
    Germany Germany
    1. Hatte auch das Problem, dass sich das EPG Buddy Tool nicht mehr öffnen lies mit Fehler in Zeile 15irgendwas. Geht mit der neuesten Version wieder

    2. Serien mit "Serienname : Episodentitel"

    Bin gerade dabei EPG-Buddy als neuen EPG-Lieferanten einzubinden. Qualität des über TV-Spielfilm gelieferten EPGs ist ja ganz gut, allerdings hab ich momentan das Problem dass meine Serienaufnahme des "Tatort" nicht mehr funktioniert, da der Titel jetzt auch Episoden-Informationen enthält, mit einem Doppelpunkt wie: "Tatort: Der Tod ist unser ganzes Leben". Somit funktioniert die Serienaufnahme "Tatort" immer aufzeichnen auf "Das Erste" nicht mehr. Müsste jetzt also jeden Tatort einzeln programmieren. Das Problem mit den Doppelpunkten scheint es auch bei anderen Serien zu geben. Hat jemand ein ähnliches Problem und eine Lösung ?

    Ja und Ja.
    Das Problem tritt bei vielen Serien auf so z.B. bei Columbo, Inspector Barnaby,... Die Lösung ist schon fertig und wird in der neuen Version enthalten sein, die in ein paar Tagen erscheint. Also einfach etwas Geduld bewahren, danke...

    Scheint mir noch nicht zu funktionieren, der Tatort tauch immernoch als z.B. "Tatort: Die Liebe, ein seltsames Spiel" im EPG auf, wird demnach auch nicht für die Aufnahme gescheduled.

    Muss ich das noch irgendwie aktivieren ?
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,554
    3,936
    Lehmden
    Home Country
    Germany Germany
    Hi.
    Scheint mir noch nicht zu funktionieren, der Tatort tauch immernoch als z.B. "Tatort: Die Liebe, ein seltsames Spiel" im EPG auf

    Das müsste sich @lightshock mal ansehen. Eigentlich sollte das jetzt funktionieren. Mir ist soweit auch nichts mehr aufgefallen, aber ich nehme speziell den Tatort nicht auf, von daher...

    Muss ich das noch irgendwie aktivieren ?
    Das einzige, was aktiviert sein muss, ist der Abgleich mit TVDB
    upload_2017-5-8_12-3-37.png

    Also der Haken "Serien- Infos von TVDB laden" muss bei jedem Sender gesetzt sein, für den man präzise Serien- Informationen haben möchte. Bei "Das Erste" ist es sicher sinnvoll, den Haken zu setzen, bei "Tagesschau24" eher weniger... Sonst gibt es da nichts weiter zu beachten...
     

    Users who are viewing this thread

    Top Bottom