textBox->Text in const char* casten ??



  • Hi wie es der Titel schon sagt wie kann ich

    textBox->Text in const char* casten ??

    Freue mich auf Antworten

    Gruss

    VistaNow



  • Was ist denn 'Text', ein CString? Dann mit GetBuffer() bzw. operator (LPCTSTR).



  • Leider Nicht, ein System::String^^ 😞



  • //Edit

    Ich meine

    System::String^^



  • Mit PtrToStringChars in Vcclr.h können Sie String in das systemeigene wchar_t * oder char * konvertieren. Dadurch wird immer ein Zeiger mit breiter Unicode-Zeichenfolge zurückgegeben, da CLR-Zeichenfolgen intern Unicode sind.

    aus der MSDN 😉



  • Funktioniert aber irgendwie nicht ^^

    const char* chars = PtrToStringChars(textBox1->Text);

    So ????

    Dann kommpt folgender Fehler:

    Fehler 1 error C2440: 'Initialisierung': 'cli::interior_ptr<Type>' kann nicht in 'const char *' konvertiert werden c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2005\projects\mytestform\mytestform\Form1.h 130



  • ganz so einfach scheints auch nicht zu sein 😉 siehe folgendes Bsp.:

    #include < stdio.h >
    #include < stdlib.h >
    #include < vcclr.h >
    
    using namespace System;
    
    int main() {
       String ^str = "Hello";
    
       // Pin memory so GC can't move it while native function is called
       pin_ptr<const wchar_t> wch = PtrToStringChars(str);
       printf_s("%S\n", wch);
    
       // Conversion to char* :
       // Can just convert wchar_t* to char* using one of the 
       // conversion functions such as: 
       // WideCharToMultiByte()
       // wcstombs_s()
       // ... etc
       size_t convertedChars = 0;
       size_t  sizeInBytes = ((str->Length + 1) * 2);
       errno_t err = 0;
       char    *ch = (char *)malloc(sizeInBytes);
    
       err = wcstombs_s(&convertedChars, 
                        ch, sizeInBytes,
                        wch, sizeInBytes);
       if (err != 0)
          printf_s("wcstombs_s  failed!\n");
    
        printf_s("%s\n", ch);
    }
    


  • Hi habe den Fehler gemerkt aber so Funktioniert es auch nicht 😞

    pin_ptr<const char*> chars = PtrToStringChars(textBox1->Text);

    Fehler:

    Fehler 1 error C2440: 'Initialisierung': 'cli::interior_ptr<Type>' kann nicht in 'cli::pin_ptr<Type>' konvertiert werden c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2005\projects\mytestform\mytestform\Form1.h 130

    Fehler 1 error C2440: 'Initialisierung': 'cli::interior_ptr<Type>' kann nicht in 'cli::pin_ptr<Type>' konvertiert werden c:\dokumente und einstellungen\admin\eigene dateien\visual studio 2005\projects\mytestform\mytestform\Form1.h 130



  • So kanns auch nicht gehen du must erst, wie im Bsp., nach wchar_t* konvertieren und dann nach char*.

    // Conversion to char* :
       // Can just convert wchar_t* to char* using one of the
       // conversion functions such as:
       // WideCharToMultiByte()
       // wcstombs_s()
       // ... etc
    


  • Hi Danke Funktioniert ^^

    Wiso machen die den das so Kompliziert, die könnten doch einfach dass Array der Textbox als normalen std::String machen 🙄



  • Wer weiss...



  • Hi, geht dass auch umgekerhrt ????

    Also

    char* nach System::String^ ??



  • Mit Sicherheit!
    versuchs doch mal mit:

    String ^str = pChar;


Anmelden zum Antworten