Wie StraItem benutzen

  • Hi


    bin hier schon am durchforsten des Sourcecodes aber ich werde nicht schlau aus dem StraItem. Dieses Item implementiert ein StringArray womit man im OSD die Möglichkeit besitzt vordefinierte Strings auszuwählen. Zb. OSDLanguage.
    Jedoch finde ich nicht so recht wie man dieses String Array definiert und füllt.
    Kennt jemand ein Diff oder Plugin wo man auch in Bezug der Nutzung eines StraItems schlau draus wird?
    In meinem Fall möchte ich mich mittels StraItem durch die RecordingNames bewegen.


    Tobias

    :vdr1 VDR User #626:fans
    VDR II: YeongYang A106, Fusi D1522, Celeron 2GHz, Frontend per DVB-s FF, 2xDVB-c, ATRIC-IR, YaVDR 0.3a
    VDR III HDTV: Inter-Tech 2008V mit iMonLCD, Atric, ASRock Extreme3 770 AM3, AMD Sempron 140 1x 2.70GHz AM3, 1,5TB WD15EADS, 2TB WD20EARS, 2x4GB DDR3-1600, NVidia GT520 passiv, 3x DVB-c, YaVDR 0.5 @ Samsung PS-50B550

  • Hi,


    eigentlich ganz einfach :)


    Du machst ein Array von char Pointern (der Einfachhaeit halber mal statisch)

    Zitat


    char * strings[10];


    dann füllst du die einzelnen Einträge

    Zitat


    string[0] = strdup(text1);
    ...
    string[9] = strdup(text10);


    dann brauchst du eine int Variable, die den eingestellten Wert aufnimmt

    Zitat


    int value;


    und dann erzeugst du das item

    Zitat


    Add(new cMenuEditStraItem("Name", &value, 10, strings));


    der eingestellte Wert wird durch value repräsentiert, also 0 entspricht dem ersten string, 1 dem zweiten usw.


    Andreas

  • ok, danke. JEtzt weiß ich wie ich eine StringList aufbauen kann.


    Nun habe ich analog zum StraItem ein neue Item erstellt. Es ist mit dem StraItem identisch,, nur dass die Stringliste im Moment im Constructor definiert wird. Testhalber habe ich dieses Item im OSD-Setup eingefügt. make läuft fehlerfrei durch, wenn ich aber in das OSDSetup wechsle, bricht VDR mit einem Speicherzugriffsfehler ab. Ich habe keine Ahnung warum ....


    menuitems.h

    Code
    class cMenuSelectRecordingsItem  : public cMenuEditIntItem {
    private:
       const char * const *Folders;
       virtual void Set(void);
    public:
       cMenuSelectRecordingsItem( const char *Name, int Value );
    };


    menuitems.c


    Aufruf im menu.c

    Code
    Add(new cMenuSelectRecordingsItem(tr("Setup.OSD$Width"),1));


    irgendwelche Ahnung wo ich da einen Speicherzugriffsfehler haben könnte???
    Wenn das dann mal funktioniert soll die Stringliste auch dynamisch sein, dh. ich weiß bei der definition noch nicht wie gross sie wird


    Tobias

    :vdr1 VDR User #626:fans
    VDR II: YeongYang A106, Fusi D1522, Celeron 2GHz, Frontend per DVB-s FF, 2xDVB-c, ATRIC-IR, YaVDR 0.3a
    VDR III HDTV: Inter-Tech 2008V mit iMonLCD, Atric, ASRock Extreme3 770 AM3, AMD Sempron 140 1x 2.70GHz AM3, 1,5TB WD15EADS, 2TB WD20EARS, 2x4GB DDR3-1600, NVidia GT520 passiv, 3x DVB-c, YaVDR 0.5 @ Samsung PS-50B550

    2 Mal editiert, zuletzt von Tobias ()

  • Hallo Tobias,


    Zitat

    Original von Tobias


    irgendwelche Ahnung wo ich da einen Speicherzugriffsfehler haben könnte???


    - ist Deine Auswahl-Variable auch initialisiert?
    - muß das Array nicht mit static definiert werden?


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

  • ok, ich machs erstmal ne nummer einfacher


    wenn ich nun auf dieses Item im OSD wechsele, (test_2 wird angezeigt) dann erhalte ich sofort einen Speicherzugriffsfehler wenn ich mit "Pfeil runter" den nächsten Menüpunkt anspringen will.


    Tobias

    :vdr1 VDR User #626:fans
    VDR II: YeongYang A106, Fusi D1522, Celeron 2GHz, Frontend per DVB-s FF, 2xDVB-c, ATRIC-IR, YaVDR 0.3a
    VDR III HDTV: Inter-Tech 2008V mit iMonLCD, Atric, ASRock Extreme3 770 AM3, AMD Sempron 140 1x 2.70GHz AM3, 1,5TB WD15EADS, 2TB WD20EARS, 2x4GB DDR3-1600, NVidia GT520 passiv, 3x DVB-c, YaVDR 0.5 @ Samsung PS-50B550

  • Hi,


    Die Lebenszeit von "char *RecStrings[3];" muss solange dauern wie das Menu auch verwendet
    wird, also nicht nur während des Anlegen im Konstruktor.


    cMenuEditStraItem legt keine internen Kopien an.
    Also am einfachsten als Membervariablen deiner Menuklasse anlegen.


    Cu,
    Andreas

  • Danke :)


    nächstes WE gehts weiter .... ;)


    Tobias

    :vdr1 VDR User #626:fans
    VDR II: YeongYang A106, Fusi D1522, Celeron 2GHz, Frontend per DVB-s FF, 2xDVB-c, ATRIC-IR, YaVDR 0.3a
    VDR III HDTV: Inter-Tech 2008V mit iMonLCD, Atric, ASRock Extreme3 770 AM3, AMD Sempron 140 1x 2.70GHz AM3, 1,5TB WD15EADS, 2TB WD20EARS, 2x4GB DDR3-1600, NVidia GT520 passiv, 3x DVB-c, YaVDR 0.5 @ Samsung PS-50B550

Jetzt mitmachen!

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