AnsiString und strcat



  • Bei folgendem Code stürzt mein Programm ab:

    AnsiString var_Druckerliste_in="Hallo";
    AnsiString var_Druckerzeile_temp="Welt";
    
    strcat(var_Druckerliste_in.c_str(),var_Druckerzeile_temp.c_str()); // auf die Zeile zeigt er
    

    Müsste das nicht eigentlich funktionieren?
    Gibt es eine Funktion, die ich stattdessen nehmen könnte, am besten für AnsiStrings????

    thx, MFG



  • Nun benutze ich selber gerne strcat usw. in C++, aber das geht nicht. Zwar geben beide einen Pointer auf char zurueck, aber einen const Pointer (mich wundert, dass der Complier das durchlaesst). Also einfach:

    var_Druckerliste_in += var_Druckerzeile_temp;
    

    Wenn Du wirklich strcat verwenden willst, dann sieht das so aus

    char    *szDrucker_0,
            *szDrucker_1,
            *szString_final;
    int      iLenght;
    
    szDrucker_0 = var_Druckerliste_in.c_str();
    szDrucker_1 = var_Druckerzeile_temp.c_str();
    
    iLenght = strlen (szDrucker_0) + strlen (szDrucker_1) + 1;
    
    szString_final = (char *) calloc (iLenght, sizeof (char));
    if (szString_final == NULL)
    {
    /* Fehlerhandling*/
    }
    else
    {
        strcpy (szString_final, szDrucker_0);
        strcat (szString_final, szDrucker_0); 
        /* Hier hast Du jetzt Dein strcat - aber wert ist es nicht ;-) */
    }
    


  • Für AnsiString bist du im falschen Forum.

    Eigentlich müsse es so gehen:

    AnsiString hallo = "Hallo",welt="welt";
    hallo += welt;
    

Anmelden zum Antworten