Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Convertir char*, char[], string (https://www.clubdelphi.com/foros/showthread.php?t=70553)

lmpadron 27-10-2010 19:23:10

Convertir char*, char[], string
 


Hola comunidad, tengo este pequeño problemita, no hallo la forma de convertir los char* y char[]
entre ellos o a String de los String a ellos, les dejo un ejemplo para que entiendan.

Creo el directorio de esta forma.

Código:

        TCHAR DirPath[] = TEXT("C:\\NombreCarpeta\\");
        if (!CreateDirectory(DirPath, NULL))
        {
            MessageDlg("un mensaje de error", mtInformation,            TMsgDlgButtons() << mbOK, 0);
        }

Pero necesito ponerle el nombre de acuerdo a la opción que seleccione el usuario, las opciones están
en un Combobox, asi que queda de esta forma y de paso pongo el error

Código:


        TCHAR DirPath[] = TEXT(Combobox1->Text);
        if (!CreateDirectory(DirPath, NULL))
        {
            MessageDlg("un mensaje de error", mtInformation, TMsgDlgButtons() << mbOK, 0);
        }

[BCC32 Error] Unit1.cpp(157): E2034 Cannot convert 'UnicodeString' to 'char[]'

si uso esto me devuelve este error
Código:


        TCHAR DirPath[] = TEXT(Combobox1->Text);
        if (!CreateDirectory(DirPath, NULL))
        {
            MessageDlg("un mensaje de error", mtInformation, TMsgDlgButtons() << mbOK, 0);
        }

[BCC32 Error] Unit1.cpp(157): E2034 Cannot convert 'char *' to 'char[]'

La pregunta es Como convierto los char * o los char [] entre ellos o a String y de String a ellos

Muchas gracias de antemano

Ñuño Martínez 28-10-2010 09:33:26

A ver si me acuerdo, que hace eones que no hago nada en C++:
Código:

  char *CadenaOriginal = "¡Hola, Mundo!"
  string *CadenaFinal;

  CadenaFinal = new string (CadenaOriginal);

El otro caso:
Código:

  string *CadenaOriginal = new string ("¡Hola, Mundo!");
  char *CadenaFinal;

  CadenaFinal = new char [CadenaOriginal->length ()];
// Posibilidad 1.
  sprintf (CadenaFinal, CadenaOriginal);
// Posibilidad 2.
  sprintf (CadenaFinal, "%s", CadenaOriginal);

Creo que era así. Evidentemente, no olvides los "delete".

_cero_ 29-10-2010 09:08:45

mmm veamos


Código:

//    de String a char
    String micadena="mi texto";
    char* michar=new char[micadena.Length()];

    StrLCopy(michar, micadena.t_str(), micadena.Length());

    ShowMessage(michar);
    delete michar;

//    de char a string
    char michar2[9]="mi texto";
    String micadena2;

    micadena2=String(michar2);

    ShowMessage(micadena2);

Para que funcione tu código

Código:

    if (!CreateDirectory(ComboBox1->Text.t_str(), NULL)) { //La función  “.t_str()” regresa un “const char*”
        MessageDlg("un mensaje de error", mtInformation, TMsgDlgButtons() << mbOK, 0);
    }



La franja horaria es GMT +2. Ahora son las 03:58:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi