AnsiString nach char[] konvertieren (war: Hilfe zu einem Beispiel)



  • hallo,

    Ich habe mal ein Beispiel bekommen und brauche Hilfe um es zu verändern. Es ist ein Code womit ich einen Text an ein z.B. Edit eines anderen Programmes senden kann. "HALLO" ist der Text. Kann man dieses Beispiel so umbauen das ich auch einen Text aus einem String lesen kann oder aus einem RichEdit und den Sende. Das geht mit dem Code so nicht. Da kommt eine meldung: Konvertierung von 'AnsiString' nach 'char[]' nicht möglich.

    HWND hWin = FindWindow(NULL, "CT Word");
    SetForegroundWindow(hWin); // Focus auf gewuenschtes Fenster setzen
        Sleep(1000);
        char text[] = "HALLO";      // muß gross sein = VK_H, VK_A, VK_L, ...
        for (char *pchar=text; *pchar; pchar++) {
            keybd_event(*pchar, 0, 0, NULL);
            keybd_event(*pchar, 0, KEYEVENTF_KEYUP, 0);
        }
    

    Edit:
    Bitte aussagekräftige Überschriften wählen. Danke!



  • Siehe FAQ unter "AnsiString".



  • Nach dem Beispiel im FAQ bekomme ich die meldung: Konvertierung von 'char' nach 'char[]' nicht möglich.



  • Was hast du denn probiert?



  • Habe es jetzt so probiert.

    HWND hWin = FindWindow(NULL, "Word");
    SetForegroundWindow(hWin); // Focus auf gewuenschtes Fenster setzen
    Sleep(1000);
    AnsiString strText = Label1->Caption;
    char *ch = new char[strText.Length()+1];
    char text[] = ch; // muß gross sein = VK_H, VK_A, VK_L, ...
    for (char *pchar=text; *pchar; pchar++) {
    keybd_event(*pchar, 0, 0, NULL);
    keybd_event(*pchar, 0, KEYEVENTF_KEYUP, 0);
    }
    delete [] ch;

    😞



  • Sag mal was soll das ganze jetzt bewirken???
    Für mich siehts so aus, dass weder in ch noch in text noch in pchar überhaupt irgendetwas drinsteht... Und wo ist da jetzt ne Typenumwandlung bzw. wo kommt die Fehlermeldung???



  • hey,

    das sieht ja echt spannend aus 😉
    Wenn du einen AnsiString in einen nullterminierten String (pchar)
    konvertieren willst, geht's auch etwas einfacher:

    Dieses kleine Beispiel stellt einen AnsiString in einer Messagebox dar:

    AnsiString mystring= "Das ist der Text";
    Application->MessageBox(mystring.c_str(),"Ein Test",0);

    oder um den AnsiString einem pchar zuzuweisen:

    char dummy[125];
    String mystring="Das ist der String";
    strccpy(dummy,mystring.c_str());

    oder auch in der anderen Richtung:

    char dummy[125]= "Das ist der cString";
    String mystring= String(dummy);

    Ich hoffe das hilft weiter

    kb



  • Das Beispiel hat mir nicht sehr geholfen.

    Ich kann jetzt einen Text senden aber anstatt "Test String" kommt dort "t5 s9,7" an.

    HWND hWin = FindWindow(NULL, "Word");
    SetForegroundWindow(hWin); // Focus auf gewuenschtes Fenster setzen
        Sleep(1000);
        char text[125];
        String mystring="Test String";
        strcpy(text,mystring.c_str());
        for (char *pchar=text; *pchar; pchar++) {
            keybd_event(*pchar, 0, 0, NULL);
            keybd_event(*pchar, 0, KEYEVENTF_KEYUP, 0);
        }
    

    Nochmal beschreibung was der Code macht. Ich habe das in einem ButtonClick drin. Wenn ich auf den Button von meinem Programm Klicke. Kann ich mit der Maus in ein Textfeld eines anderen Programmes Klicken und dort wird dann der Text eingetragen. So wie in meinem ersten Beitrag würde es dann hallo eintragen.



  • hm,

    die Umwandlung wird sicherlich funzen.
    Ich denke das problem liegt in der Schleife.

    Versuch's mal in dieser Art:

    int index=0;

    while (text[index]!='\0')
    {
    //hier senden und text[index] übertragen
    index++;
    };

    kb


Anmelden zum Antworten