TRadioGroup Item umbenennen



  • Hey,
    nutze ein TRadioGroup-Objekt mit 12 Items. Diese möchte ich im Laufe des Programms ändern lassen. Wie kann ich dieses durchführen lassen. Ein Quellcode Beispiel wäre nett.
    Mein bisheriger Versuch sah so aus:

    Form_ChannelDiscr->RG_Channel->Items[i].Text = 	searchXMLFile(IntToStr(i),
    		language , "-", "CHANNEL", ExtractFilePath(Application->ExeName)+"dynamictext_channel.xml");
    


  • Hallo

    Form_ChannelDiscr->RG_Channel->Items->Strings[i] =
    

    Siehe auch die BCB-Hilfe zu TStrings.

    bis bald
    akari



  • Erhalte dann leider diese Meldung:

    [C++ Fehler] ChannelDiscr.cpp(28): E2285 Keine Übereinstimmung für 'TStrings::operator =(AnsiString)' gefunden

    Die Funktion serachXMLFile(...) gibt allerdings ein AnsiString-Wert zurück.



  • Hallo

    Das kann aber nicht am RadioGroup-Teil liegen, denn dieser kleiner Test funktioniert nachweislich korrekt

    RadioGroup1->Items->Strings[1] = "Test!";
    

    Aus der Fehlermeldung geht aber hervor, das die Funktion keinen AnsiString, sondern einen TString zurückliefert. Das kannst du so nicht zuweisen. Entweder must du noch aus dem TStrings noch einen einzelnen AnsiString aussuchen, oder du weist gleich die ganze Liste der RadioGroup zu.

    RadioGroup1->Items->Assign(xml(...));
    

    Allerdings stellt sich so die Frage, wer dann die Ownership des TStrings-Objektes übernimmt. Da TStrings nicht auf dem Stack angelegt werden können, müßen sie mit new erzeugt wurden sein, was bedeutet das auch jemand diesen Speicher mit delete wieder freigeben muß. Schau in der Doku des XML-Packetes nach, wer für den Speicher verantwortlich ist.
    Das würde dann also so aussehen

    TStrings* result = xml(...);
    RadioGroup1->Items->Assign(result);
    delete result;
    

    bis bald
    akari


Anmelden zum Antworten