Lösung für StringCompare aus Property in Kodi 18 gesucht.

  • Servus Zusammen

    Ich nutze in meinem addon aktuell für animationen oder anzeigen von feldern die bool condition stringcompare mit properties.
    jetzt habe ich mal die 18er ausgegraben und bemerkt, dass das gar nicht mehr geht.
    z.B.:
    !StringCompare(Window(10000).Property(IBUSCOMMUNICATOR_OBC_LOADED),1)

    Wisst ihr, wie ich wieder zu meinen boolean conditions komme?

  • String.IsEqual() ist das neue StringCompare().

    Das wurde eigentlich schon mit Krypton geändert, nur übergangsweise wurde das alte Infobool in Kodi 17 noch weiter unterstützt.

    Hier gibt es die entsprechenden Infos dazu und zu weiteren "neuen" Infobools.

  • Jetzt muss ich mal noch zu String Contains fragen. Bekomme es irgendwie nicht hin.
    folgendes nutze ich:

    Code
    String.Contains(System.OSVersionInfo,Windows 7)

    Wenn ich mir den string anzeigen lasse, dann ist "Windows 7" enthalten, also sollte doch auch True zurück gegeben werden.
    Will es für Addon settings nutzen.

  • Hey,

    Wenn ich mir den string anzeigen lasse, dann ist "Windows 7" enthalten, also sollte doch auch True zurück gegeben werden.

    An sich müsste ers ja schaffen mit contains wenn irgendwo Windows 7 drin vorkommt.

    Versuch doch mal String.StartsWith falls das System Label damit Beginnt.


    Substrings machten ja auch schon immer Probleme - teilweise hab ich es gelöst in dem ich sich über ein unsichtbares Label irgendwo außerhalb mit einer ID und Control.GetLabel(ID), dann eingesetzt hab.

    Das ging dann seltsamerweise.


    Also was wie

    Code
    String.Contains(Control.GetLabel(5000),Windows 7)

    und ein label mit id="5000" mit $INFO[System.OSVersionInfo].
    Ich kann aber heut Abend oder Morgen mal schauen - ich bin ja selbst mit Windows unterwegs;)..

    Grüße

  • Ok. Hab es gerade mal mit LibreElec (Kodi 18, Milhouse) auf meinem RasPi getestet. Ein

    Code
    String.Contains(System.OSVersionInfo,Libreelec)

    liefert wie gewünscht ein True. Sollte also zumindest in dieser Kombination (LE auf RasPi) funktionieren.

  • Eher ein Kodi Problem - getestet mit WIndows 10 Unterbau.

    Ein String.Contains(System.OSVersionInfo,Windows10) ist false, ein String.Contains(System.OSVersionInfo,Windows) aber true.
    Ob es nun an der Klammer danach liegt mit der Kernel Version kann ich nicht sagen. Ich bin mir ja fast sicher das String.Contains auch nicht auf ganze Wörter beschränkt ist.
    Das wäre aber eine Erklärung weil nach die Info Windows10(kernel irgendwas ausgibt.
    Das sieht dann fast so aus als wollte er ein ganzes Wort Vergleichen und kommt mit Klammer statts Leerzeichen nicht klar.

    Wenn du nun auch noch unterscheiden musst zwischen Windows 7 und 10 klappt bei 10 schon mal Lustigerweise ein
    String.Contains(System.OSVersionInfo,Windows) + String.Contains(System.OSVersionInfo,10)


    Grüße

  • Ich bekomme leider gar nichts eingezeigt. Echt komisch.
    Im Kodi Forum hab ich mich hier mit ran gehangen: https://forum.kodi.tv/showthread.php?tid=324446
    das setting schaut so aus:

  • Schade, ich habs natürlich nur mit zwei labels im Home Versucht. Die Info war nach eine Reload nach der Codeänderung auch sofort da.

    Wenn String.Contains(System.OSVersionInfo,Windows) + String.Contains(System.OSVersionInfo,7) nicht geht wird das wohl nichts.
    Eine Lösung wäre jetzt wenn es sich um nen Skin handeln würde wäre das ganze beim Startup in ein Property zu packen um zu sehen ob das klappt.
    Dann wäre die Info global da - wird sich ja kaum ändern im laufenden Betrieb von Kodi.
    Das bringt dir aber bei Addons ja nix.


    Kannst du vielleicht die Pfad ableiten in einem Addon?
    http://kodi.wiki/view/Special_protocol#Default_OS_mappings

    Wenns nur drum geht ob Windows, LE usw...
    Über "ist Windows" kommst damit aber auch nichts raus - unterscheidet sich ja nicht in 7 und 10.

    Grüße

  • Da ich hier kein Windows habe, was gibt denn das Infolabel System.OSVersionInfo eigentlich komplett unter Windows aus?

    Edit: Kommt bei Windows 7 evtl. Win7 raus und muss auch so verglichen werden? Müssen Leerzeichen (Windows 10) evtl. escaped werden (Windows%2010)?

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Ein String.Contains(System.OSVersionInfo,Windows10) ist false, ein String.Contains(System.OSVersionInfo,Windows) aber true.

    @Marc0810: Kein Wunder, denn 'Windows10' existiert nicht im Ausgabestring von System.OSVersionInfo, wohl aber 'Windows'. Genauso ergeben die Tests nach 'Windows' als auch nach '10' beide True, da alle beide Teilstrings des Ausgabestrings sind.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Marc0810: Kein Wunder, denn 'Windows10' existiert nicht im Ausgabestring von System.OSVersionInfo, wohl aber 'Windows'. Genauso ergeben die Tests nach 'Windows' als auch nach '10' beide True, da alle beide Teilstrings des Ausgabestrings sind.

    Na doch.. ich muss heut Abend schauen am Rechner, aber bei Windows10 sieht System.OSVersionInfo dann ja so aus:

    Windows10(kernel: usw.

    und zwar ohne leerstelle zwischen 10 und Klammer auf.

    Als hab ich $INFO[System.OSVersionInfo] als label ins home gepackt und darunter ein zweites mit irgendeinem Text drin.

    Dort ein visible mit String.Contains(System.OSVersionInfo,Windows10) ging nicht.

    String.Contains(System.OSVersionInfo,Windows) ging, und String.Contains(System.OSVersionInfo,Windows) + String.Contains(System.OSVersionInfo,10) auch.

    Deswegen die Annahme wenn man Windows 7 und 10 auch noch Unterschieden will käme man so damit hin.
    Folgt man der Logi das +10 bei Windows 10 true ist, wäre das doch false bei windows 7.

    Aber wenn diese Info wirklich etwas braucht bis sie kommt bringt das alles eh nix;)..

    Grüße

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!