Klitze kleine if/else Frage



  • Tach.

    Text = (Text.IsEmpty()) ? "hello world!" : Text;
    

    Das "hello wordl!" ist an dieser Stelle nicht erlaubt, meint mein BCB5 Compiler.
    Er behauptet das die beiden Operanten nicht den selben Datentypen entsprechen.

    Diese Lösung

    Text = (Text.IsEmpty()) ? (AnsiString)"hello world!" : Text;
    

    und auch diese

    AnsiString Text2 = "hello world!";
    Text = (Text.IsEmpty()) ? Text2 : Text;
    

    gefallen mir erlich gesagt nicht so ganz.

    Ich werd jetzt eine Funktion schaffen die AnsiString zurückgibt

    AnsiString TextToString(AnsiString Text)
    {
    return Text;
    }
    Text = (Text.IsEmpty()) ? TextToString("hello world!") : Text;
    

    Ich wollte jetzt gern wissen, ob es eine Andere, schönere und schnellere Möglichkeit gibt das ebenfalls lauffähig zu machen.



  • ich hab zwar keinen blassen schimmer von borland, aber wenn die library gut gemacht ist, dann sollte sowas gehen:

    Text = (Text.IsEmpty()) ? AnsiString("hello world!") : Text;



  • String Text = (Text.IsEmpty()) ? "hello world!" : "";

    funktioniert ausgezeichnet.

    Des Weiteren

    Was soll diese Abfrage ergeben? Wenn Text leer ist dann soll er "hello world" sein. Ist er es nicht dann text -> also "", aber

    AnsiString oder kürzer string erlaubt einen == Vergleich, also

    if(test=="")
    test="hello world";
    ist möglich



  • Korrektur

    ..... kürzer String erlaubt ....



  • @net
    Danke, das ne schöne Lösung. Habs dahingehend mal editiert.

    @Christian211
    Dein Zitat (von wem auch immer) hat die selben Operanten. BCB sieht aber

    AnsiString Text;
    // irgendwelcher Code
    Text = (Text.IsEmpty()) ? "hello world!" : Text;
    

    eben nicht als gleich an und es ging mir speziell eben um diesen Konstrukt der if/else. 😉



  • Gunta schrieb:

    eben nicht als gleich an und es ging mir speziell eben um diesen Konstrukt der if/else. 😉

    wobei dir klar sein sollte, dass der compiler wahrschinlich den gleichen code erzeugt, ob du nun ein einzeiliges 'conditional' verwendest, oder ein mehrzeiliges if...else mit 'ner menge geschweifter klammern darin



  • Wozu einfach, wenn's auch kompliziert geht


Anmelden zum Antworten