Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Conversión unsigned char a AnsiString (https://www.clubdelphi.com/foros/showthread.php?t=71910)

NPIdea 18-01-2011 10:39:29

Conversión unsigned char a AnsiString
 
Hola a todos.
Tengo un unsigned char str[3]="318";

Quiero pasarlo a un AnsiChar ss y he probado muchas cosas pero no hay forma.

ss=AnsiChar(*str) me da el valor hexadecimal del primer caracter osea el 51.

He probado con new String y tampoco.

Notese que soy novato en c++ y no encuentro la forma de hacerlo.

Gracias.

escafandra 19-01-2011 00:27:38

Me parece que lo que tu quieres hacer es convertirlo a un AnsiString o String.

Pues es fácil.

Implicitamente:

Código:

  char str[] = "318";
  Label1->Caption = str;

Explícitamente:
Código:

  char str[] = "318";
  Label1->Caption = AnsiString(str);

Es un error lo que pusiste:
Código:

char str[3] = "318";
Las cadenas en C deben terminar en un carácter nulo "\0", de forma que lo correcto es:
Código:

char str[] = "318";  //OK: el compilador reserva 4 char
char str[4] = "318"; //OK
char str[3] = "318"; // MAL

Saludos.

Casimiro Notevi 19-01-2011 00:51:05

Como bien indica escafandra, esto te dará un bonito error de puntero nulo que acabará bloqueando tu programa, como mínimo :)
Cita:

Empezado por NPIdea (Mensaje 387844)
.
Tengo un unsigned char str[3]="318";

El motivo:
str[0] = '3'
str[1] = '1'
str[2] = '8'
str[3] = '\0' <- si falta el puntero nulo... ¡¡¡crash!!! porque no se sabe donde acaba la cadena, puntero, etc.

En tu caso deberás declararlo como unsigned char str[4]="318";

NPIdea 20-01-2011 09:28:51

Solucionado, muchas gracias a todos por vuestras respuestas.


La franja horaria es GMT +2. Ahora son las 02:16:32.

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