== NULL?



  • Nabend,

    ich stehe grad voll auffem Schlauch und bin am Verzweifeln...
    ich habe folgenden Code:

    AnsiString c = InputBox("Account erstellen", "Username eingeben:" , "");
    

    Diese Eingabe möchte ich einfach Überprüfen ob in dieser Box nichts oder leerzeichen eingegeben worden...

    BITTE HELFT MIR 😕



  • if(c == "")

    Und bei Leerzeichen musst du halt entsprechend daraufhin prüfen...



  • AnsiString hat eine Methode namens IsEmpty() 😉



  • Hallo,

    Um auch Leerzeichen (und Steuerzeichen) auszuschließen...

    if (Trim(c) == "")
    {
      ...
    }
    

    Bis dann denn,
    🙂
    Nash



  • wenn dann auf jeden fall fuer den vergleich IsEmpty() verwenden, da dort direkt das zugrundeliegende char-array geprueft wird und kein umstaendlicher vergleichsoperator benoetigt wird. zumal der zweiter vergleichsparameter erst in einen ansistring-typ umgewandelt werden muss.



  • Hallo,

    Diese Eingabe möchte ich einfach Überprüfen ob in dieser Box nichts oder leerzeichen eingegeben worden...

    Sobald "c" mit mind. einem Leerzeichen gefüllt ist, gibt IsEmpty() false zurück. Wenn man überprüfen will, ob der String leer ist oder nur Leerzeichen enthält, geht das mit Trim() am besten (finde ich).

    Bis dann denn,
    🙂
    Nash



  • args... IsEmpty prueft (wie der name ja schon sagt), ob der string 0 oder != 0 ist, d.h. ob im char-array irgendein zeichen steht!

    if (Trim(c).IsEmpty())
    {
    }
    


  • Hallo,

    Nee, is schon klar... ist ja sehr viel kürzer, viel übersichtlicher, viel schneller... und einfach eben besser...
    Da ich ja lernfähig bin : Erkläre mir doch bitte, warum ist "if (Trim(c).IsEmpty())" so viel besser als "if (Trim(c) == "")" ?

    Bis dann denn,
    🙂
    Nash



  • Bei IsEmpty wird lediglich kontrolliert, ob der interne char-Pointer 0 ist (nur ein Vergleich). Dies ist identisch mit

    AnsiString str;
    if( str.data() == NULL );
    

    Bei deiner Variante wird zuerst ein temporärer AnsiString erzeugt (aus dem Leestring über sprintf). Danach wird die LStrCmp-Funktion aufgerufen. Das ist eindeutig komplizierter.

    Ciao



  • Hallo,

    Mmmh, nun gut, stimmt. Für den Compiler ist es mit "IsEmpty()" wohl leichter. Ich finde nur, daß der Vergleich (==) ein wenig übersichtlicher ist (jedenfalls für mich). Ich würde wohl bei sehr vielen Vergleichen (in einer Schleife) auch zu "IsEmpty()" greifen (aber auch nur aus Optimierungsgründen).

    Bis dann denn,
    🙂
    Nash


Anmelden zum Antworten