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 aberAnsiString 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