FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Convertir AnsiString a char[260]
Hola amigos,
tengo un problemita, necesito asiganr un texto en AnsiString a un de char[].... Código:
AnsiString name; char name2[MAX_PATH] = name; [bcc32 Error] Unit1.cpp(120): E2034 Cannot convert 'AnsiString' to 'char[260]' Saludos y gracias de antemano. |
#2
|
||||
|
||||
c_str() te devuelve un puntero al buffer ASCIIZ del String, para asignarlo a un array tipo char[] deber copiar el contenido:
Código:
AnsiString name = "lo que sea"; char name2[MAX_PATH]; strncpy(name2, name.c_str(), name.Length()); Saludos. |
#3
|
||||
|
||||
Hola.
Otra opción para este caso es strcpy, Código PHP:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#4
|
|||
|
|||
listo y gracias
Gracias escafandra y ecfisa,
Ambos códigos me funcionaron, pero el código de escafandra con strncpy() me daba un problema, no me reconocia todos los AnsiString que convertía char[]. El código de ecfisa, si me reconocía todos los nombres que pasaba de AnsiString a char[], lo comento como dato para los que visiten este hilo. Agrego que lo estoy trabajando con el Trial de Embarcadero XE8, quizás eso influye algo si es con builder o Embarcadero, ya que por lo que tengo entendido trabajan mas con builder. Saludos y gracias. |
#5
|
||||
|
||||
Cita:
Si dices que "no reconoce" todos los ansichar el problema lo vas a tener en que estén vacíos o en el cálculo de la longitud y no en la versión de la función. No es muy recomendado el usno de strcpy por el riesgo de un desbordamiento de pila si no se tiene la precaución de tener un buffer lo suficientemente grande. Una cadena corrupta o inesperedamente larga lo producirá, para evitar eso se diseñó strncpy. El mismo Windows tiene versiones seguras de esta función en su API. La forma segura de usar strncpy es esta: Código:
AnsiString name = "lo que sea"; char name2[MAX_PATH]; strncpy(name2, name.c_str(), sizeof(name2)-1); // limitas el desbordamiento del buffer y dejas espacio para el /0 final Saludos. Última edición por escafandra fecha: 24-06-2015 a las 20:26:14. |
#6
|
||||
|
||||
Hola escafandra.
Recién ahora lo noto y creo que la razón del problema que menciona darkmir es debido al valor pasado al argumento maxlen en el primer ejemplo de strncpy. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Duda convertir de int a char array | mizzard | C++ Builder | 3 | 17-04-2011 11:14:47 |
Conversión unsigned char a AnsiString | NPIdea | C++ Builder | 3 | 20-01-2011 09:28:51 |
Convertir char*, char[], string | lmpadron | C++ Builder | 2 | 29-10-2010 09:08:45 |
convertir int o char a hexadecimal. | bactering | C++ Builder | 2 | 05-10-2008 21:18:45 |
Convertir un Single en 4 char | cmurua71 | Varios | 4 | 15-06-2007 11:25:26 |
|