char nimmt wert beim zweiten durchlauf nicht an



  • hallo

    habe hier 3 editfelder und einen button
    bei einem klick auf meinem button passiert folgendes:

    AnsiString str_text;
    
    char *Text = "222";
    
    Edit2->Text = Text;
    
    str_text = Edit1->Text;
    
    *Text = str_text.Length()+1;
    strcpy(Text, str_text.c_str());
    
    Edit3->Text = Text;
    

    dh. im Edit2 feld wird das "222" angezeigt und im Edit3 feld wird das von Edit1 angezeigt.
    beim ersten mal klicken verläuft auch alles richtig, wenn ich jedoch nochmal klicke erscheint im Edit2 feld jedoch nicht mehr "222" sondern sofort der Inhalt von Edit3 feld (das ist beim vorigen durchlauf als letzter im char gestanden)
    warum nimmt das char das 222 beim zweiten durchlauf nicht mehr an? 😕



  • Demian schrieb:

    *Text = str_text.Length()+1;
    strcpy(Text, str_text.c_str());
    

    Was machst du denn da 😮



  • ein eingelesenes ansistring (kommt vom editfeld) in ein char* konvertieren, damit ich es dann zerlegen kann und mit keybd_event einzeln die keys schicken kann

    funktioniert soweit auch, bis auf das hier

    aber wenn es so schlimm ist, bitte helft mir, ich copy & paste das meiste ja 🙄 😕



  • Text zeigt auf Speicher auf dem Stack, den du zur Laufzeit nicht beschreiben solltest (String-Literal). Wenn du schreibend darauf zugreifen willst solltest du dir mit new Speicher auf dem Heap besorgen 😉



  • +versteht fast nur bahnhof+

    äh und wie mach ichs? egal ob schreibend oder nicht schreibend zugreifen, hauptsache das was ich will funktioniert 🤡



  • Hallo,

    Text = new str_text.Length() + 1;
    strcpy(Text, str_text.c_str());
    

    MfG
    tuküe



  • Von C++ hast du offenbar noch nicht so besonders viel Ahnung :p

    Text = new char[str_text.Length() + 1];
    

    Aber ich verstehe irgendwie noch nicht so ganz, was du vor hast bzw. wozu du dazu 3 Edits brauchst 😕



  • Hallo,

    doch, eigentlich schon. Hatte Demians Code schnell per Copy/Paste übernommen, um ihn anzupassen und char[] in der Eile einfach vergessen 😕 . Danke für den Hinweis.

    MfG
    tuküe

    // Edit: mal me andere Frage: was hat dieser Thread jetzt mit WinApi zu tun?


Anmelden zum Antworten