elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  El código de enviar en consola de más de 255 caracteres me sale error.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: El código de enviar en consola de más de 255 caracteres me sale error.  (Leído 2,195 veces)
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
El código de enviar en consola de más de 255 caracteres me sale error.
« en: 18 Enero 2023, 07:25 am »

Hola:

Usando C++ CLR o .net me sale este error.

Citar
Gravedad    Código    Descripción    Proyecto    Archivo    Línea    Estado suprimido
Error (activo)    E0144    no se puede usar un valor de tipo "cli::array<wchar_t, 1> ^" para inicializar una entidad de tipo "cli::array<char, 1> ^"    Chat Consola CLR    D:\Visual Studio 2022\Chat Consola CLR\Chat Consola CLR\Chat Consola CLR.cpp    144   


Código
  1.        Stream^ entradaDeDatos = Console::OpenStandardInput();
  2.        array<Byte> ^buffer = gcnew array<Byte>(MAXIMA_LONGITUD);
  3.        int numerosBytesLeidos = entradaDeDatos->Read(buffer, 0, MAXIMA_LONGITUD);
  4.        array<char> ^chars = Console::InputEncoding->GetChars(buffer, 0, numerosBytesLeidos);
  5.        mensaje = gcnew String(chars);

¿Alguna idea?

Saludos.


En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: El código de enviar en consola de más de 255 caracteres me sale error.
« Respuesta #1 en: 18 Enero 2023, 16:51 pm »

En C++ unsigned char equivale a 8 bits, un byte de toda la vida desde 0-255. Si es signed char de -127-127.
En cambio wchar_t, WCHAR equivale a un Wide char lo que son 16 bits para formato UTF-16. Convertir wchar_t a char puede ser catastrofico dependiendo del encoding.
Por lo que deberás de analizar si en algún momento encontrarás caracteres fuera de ASCII.

Citar
Error (activo)    E0144    no se puede usar un valor de tipo "cli::array<wchar_t, 1> ^" para inicializar una entidad de tipo "cli::array<char, 1> ^" 

El error te está diciendo que es imposible usar el buffer que es un array de wchar_t para inicializar ^chars que es un array de tipo char. Está claro jeje

Saludos.


En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: El código de enviar en consola de más de 255 caracteres me sale error.
« Respuesta #2 en: 18 Enero 2023, 20:10 pm »

Hola:

Ya funciona. Puse esto.

Código
  1. array<wchar_t> ^chars = Console::InputEncoding->GetChars(buffer, 0, numerosBytesLeidos);

Muchísimas gracias mi muy distinguido amigo.

Que tengas buen año. ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines