Variablen verbinden?



  • Du hast da ein grundsätzliches Problem. In C++ kannst du aus einem String keinen Variablennamen machen. Das musst du anders lösen.



  • 1. Zeige mal, in welcher Zeile dein Fehler auftritt.
    2. Wenn du nicht einen driftigen Grund dazu hast, würde ich dir auf jeden Fall raten, die stringstreams von C++ zu benutzen, ähnlich wie "operator void" es zeigte:

    #include <sstream>
    ...
    
    std::string lbl = "Label"
    int x = 5;
    std::string var1 = "asd";
    
    std::ostringstream stream;
    stream << lbl << ' ' << x << " = " << var1; // sogar mit Leerzeichen!
    std::string ergebnis = stream.str();
    


  • Till schrieb:

    1. Zeige mal, in welcher Zeile dein Fehler auftritt.
    2. Wenn du nicht einen driftigen Grund dazu hast, würde ich dir auf jeden Fall raten, die stringstreams von C++ zu benutzen, ähnlich wie "operator void" es zeigte:

    #include <sstream>
    ...
    
    std::string lbl = "Label"
    int x = 5;
    std::string var1 = "asd";
    
    std::ostringstream stream;
    stream << lbl << ' ' << x << " = " << var1; // sogar mit Leerzeichen!
    std::string ergebnis = stream.str();
    

    Also ich habs jetzt so gemacht wie du und void gesagt haben, doch dann kommt bei folgendem code

    std::string lbl = "Label"; // Entweder mit C-"Strings"...
    int x = 5;
    std::string var1 = "asd"; // ...oder gleich mit C++-Strings.
    
    std::ostringstream stream;
    stream << lbl << ' ' << x << " = " << var1;
    std::string ergebnis = stream.str();
    Label1->Caption = ergebnis;
    

    der Fehler:

    [C++ Fehler] Unit1.cpp(29): E2034 Konvertierung von '_STL::string' nach 'AnsiString' nicht möglich



  • Woooo? Wo ist bei dir Zeile 29?



  • Till schrieb:

    Woooo? Wo ist bei dir Zeile 29?

    Oh sorry, das is die zeile "Label1->Caption = ergebnis;"



  • Ich arbeite nicht mit Borland C++ Builder, aber ich schätze, dass einfach ein C-String erwartet wird. Also schreibst du einfach

    Label1->Caption = ergebnis.c_str(); // macht aus einem std::string ein char[]
    

    Klappt's jetzt?



  • Aaaaaaaaalso das klappt jetzt so, doch nun mochte ich es ja so haben:

    std::string lbl = "Label"; // Entweder mit C-"Strings"...
    int x = 5;
    std::string var1 = "asd"; // ...oder gleich mit C++-Strings.
    
    std::ostringstream stream;
    stream << lbl << x;
    std::string ergebnis = stream.str();
    std::string ergebnis2 = ergebnis.c_str();
    ergebnis2->Caption = var1;
    

    da kommt der fehler:

    [C++ Fehler] Unit1.cpp(30): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich*

    und der is in der zeile "ergebnis2->Caption = var1;"

    Ich hoffe Ihr verliert die gedult mit ir nicht 🙂



  • Hallo

    du hast ein grundsätzliches Verständnissproblem. Du willst unter C++Builder dynamisch Labels mit einem von dir zusammengestellten Namen erzeugen. Das geht schon, und wie das findest du in der FAQ des BCB-Forums.

    bis bald
    akari



  • jaaaaaaaaa genau das will ich.
    doch wonach muss ich in der bcb hilfe suchen?



  • Hallo

    ich meinte die FAQ
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39305.html
    insbesondere den Abschnitt "Komponenten benutzen"

    bis bald
    akari



  • Hi Zsammn

    Tolles Forum!
    Hab im Google nach der Möglichkeit gesucht, eine Textzeile (Pfad) in einer Schlaufe zu alternieren.
    _Till_ hat mir die Lösung gebracht....

    Danke nochmal für das sauber dokumetierte (und damit suchbare!) Forum, Ihr seid Helden.... 👍 🤡

    Gruss

    Roric 🤡



  • Danke danke ... nicht gleich übertreiben, man hilft halt wo man kann ... 😃


Anmelden zum Antworten