Beliebiges Zeichen aus "char *" löschen?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von bonsai, 23. August 2006 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 23. August 2006
    Hi,

    ich hab grad ein kleines Problem was mich schon seit gestern Abend beschäftigt. Ich hole mir aus einem Panel den Text (Panel1->Caption) und speichere diesen in einem "char *".
    Nun möchte ich aber z.B. das letzte Zeichen löschen und dann das Panel1->Caption auf den neuen Wert setzen.

    Bisher mache ich das so:
    Code:
    char *FeldText = (Panel1->Caption).c_str();
    FeldText = strrev(FeldText); // letztes Zeichen <=> erstes Zeichen
    int lang = strlen(FeldText) - 1;
    
    for (int p = 0; p < lang; ++p)
    {
     FeldText[p] = FeldText[p + 1];
    }
    
    FeldText = strrev(FeldText); // letztes Zeichen <=> erstes Zeichen
    Panel1->Caption = String(FeldText);
    
    Das Funktioniert auch recht gut - aber nur solange das Panel->Caption nicht über 20 Zeichen lang ist, denn dann hängt er sich an einer beliebigen Stelle auf (mal so und mal so *nerv*)

    Kenne mich mit den String / char Operatoren fast garnicht aus und suche deshalb nach einer "besseren" Lösung. Gibt es vielleicht eine Möglichkeit die in etwa so aussieht?

    Code:
    char* TextFeld = (Panel1->Caption).c_str();
    int lang = strlen(FeldText) - 1;
    TextFeld->delte(lang);
    
    Habe schon den ganzen Tag gegoogelt und einiges über "string" und "std" gelesen. Habe es mit der "string.h" und "string" versucht, aber ohne Erfolg. Vielleicht steh ich ja auch mal wieder auf dem Schlauch? ^^

    Also wäre nett wenn mir bitte jemand eine gute Lösung für das kleine Problem anbieten könnte. Danke schonmal.


    MfG bonsai

    ---

    EDIT:

    Hab mir grad nochmal ein Beispiel von der Verwendung von "string" angeguckt und meinen Fehler gefunden.

    Hab den code jetzt angepasst und es funktioniert einwandfrei *freu*
    Wen es interessiert, hier der code:

    Code:
    string TextFeld = (Panel1->Caption).c_str();
    lang = strlen(TextFeld.c_str()) - 1;
    TextFeld.erase(lang, 1); // letztes Zeichen - länge 1
    Panel1->Caption = TextFeld.c_str();
    
    Also kann hier schon wieder geclosed werden *hehe*

    /EDIT
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.