Problem mit Datenbank



  • In einer Datenbank sollen Texte gespeichert werden, wobei kurze Texte in dem Feld "Kommentar" gespeichert werden und lange Texte aufgespalten und als "LongText" in mehreren Feldern gespeichert werden. Doch selbst wenn LongText = "" ist (ich also nur einen kurzen Text in Kommentar gespeichert habe), wird bei folgendem Code nie der else-Zweig ausgeführt.

    char* DBKommentar::GetLongText(void)
    {
       if (_LongText)
          return _LongText;
       else
          return GetField("KOMMENTAR");
    }
    

    Warum??? 😕
    MfG Anika



  • Ist _LongText ein AnsiString?
    Wenn ja, dann solltest Du mal probieren auf == "" abzuprüfen.

    Gruß,

    Alexander



  • Wenn das ein AnsiString wäre würde der Code nicht kompilieren. 😉
    Trotzdem wäre es interessant, zu wissen, von welchem Typ _LongText ist.



  • LongText ist ein char*. Wenn ich mit dem Debugger die einzelnen Befehle durchgehe, und die Variable untersuche, dann steht da sogar LongText = "", aber es geht trotzdem nicht. Auch auf =="" abprüfen funktioniert nicht.
    MfG Anika



  • Hast Du's schon mal mit strcmp() versucht?
    Ich denke sowas ähnliches wie:

    char* DBKommentar::GetLongText(void)
    {
       if (strcmp(_LongText, "") != 0)
          return _LongText;
       else
          return GetField("KOMMENTAR");
    }
    

    Gruß,

    Alexander



  • Ich habe das gerade mal ausprobiert, aber strcmp(_LongText, "") liefert statt 0 leider -115 zurück. Ich habe auch _LongText untersucht und da stand mal wieder _LongText = "". Warum ist das also nicht gleich???



  • Zeig doch mal, wo Du _LongText initialisierst, bzw. einen Wert zuweist.
    Vielleicht hilft das ja weiter. Ansonsten könnte man vielleicht noch
    versuchen, die einzelnen char-Werte zu vergleichen.

    Gruß,

    Alexander



  • Problem gelöst. Vielen Dank nochmal. Es war ein blöder Fehler, eine nicht initialisierte Variable. Aber das _LongText = "" hat mich darauf gebracht.
    MfG Anika 😉


Anmelden zum Antworten