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)
| | | |-+  Identificador no declarado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Identificador no declarado  (Leído 3,108 veces)
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Identificador no declarado
« en: 18 Enero 2023, 22:52 pm »

Buenas:

Usando C++ CLR .net me da este error:

Código
  1. Thread^ readThread = gcnew Thread(Leer);

Error   C2065   'Leer': identificador no declarado   

Sigue con el código de llamada que también hay problemas de error.
Código
  1.        // Lee mensaje recibido.
  2.        void Leer();
  3.        {
  4.            // Si _continua es true se ejecuta todas las instrucciones dentro de while.
  5.            while (_continua)
  6.            {
  7.                try
  8.                {
  9.                    // Almacena en la variable mensaje cualquier caracter o mensaje recibido.
  10.                    String^ mensaje = Puerto_serie->ReadLine();
  11.  
  12.                    // Muestra en pantalla mensaje recibido.
  13.                    Console::WriteLine(mensaje);
  14.                }
  15.                catch (TimeoutException) {}
  16.            }
  17.        }


Error   C2725   'System::TimeoutException': no se puede producir o detectar un objeto administrado por valor o referencia.

Error   C2316   'System::TimeoutException': no se puede detectar porque el destructor y/o el constructor de copia están inaccesibles o se eliminaron.


En línea

Eternal Idol
Kernel coder
Colaborador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Identificador no declarado
« Respuesta #1 en: 19 Enero 2023, 11:49 am »

¿La linea 2 deberia terminar con punto y coma?


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Identificador no declarado
« Respuesta #2 en: 19 Enero 2023, 17:30 pm »

Si te refieres a este.

Código
  1. void Leer();

No debe tenerlo.

Ya se el motivo, había que poner en el punto 15 el ^.

Código
  1. catch (TimeoutException^) {}

En la línea de abajo, sigue con el fallo.

Código
  1. Thread^ readThread = gcnew Thread(Leer);

Gracias.
« Última modificación: 19 Enero 2023, 22:37 pm por Meta » En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Identificador no declarado
« Respuesta #3 en: 20 Enero 2023, 19:52 pm »

Ya funciona.

Lo dejo el código completo aquí por si alguien lo necesita.

Muchas gracias.

Código
  1. #include "pch.h"
  2. using namespace System::Threading;
  3. using namespace System;
  4. using namespace System::IO;
  5. using namespace System::IO::Ports;
  6. using namespace System::Text;
  7.  
  8. ref class Chat
  9. {
  10. static bool _continua;
  11. static SerialPort^ Puerto_serie;
  12.  
  13. public:
  14. static void Main(array<System::String^>^ args)
  15. {
  16. const int MAXIMA_LONGITUD = 40000;
  17. String^ COM = "";
  18. String^ nombre;
  19. String^ mensaje;
  20. String^ titulo = "Mini chat C++ CLR .net";
  21.  
  22.  
  23. StringComparer^ comparaString = StringComparer::OrdinalIgnoreCase;
  24. //Thread^ readThread = gcnew Thread(Leer);
  25. Thread^ readThread = gcnew Thread(gcnew ThreadStart(Chat::Leer));
  26.  
  27. #pragma region Configuración ventana.
  28. // Título de la ventana.
  29. Console::Title = titulo;
  30.  
  31. // Tamaño de la ventana, x, y, o ancho y alto.
  32. const Byte ANCHO_X = 70, ALTO_Y = 25;
  33. Console::SetWindowSize(ANCHO_X, ALTO_Y);
  34.  
  35. // Color de fondo.
  36. Console::BackgroundColor = ConsoleColor::Yellow;
  37.  
  38. // Color de las letras.
  39. Console::ForegroundColor = ConsoleColor::Black;
  40.  
  41. // Limpiar pantalla y dejarlo todo en color de fondo.
  42. Console::Clear();
  43.  
  44. // Visible el cursor.
  45. Console::CursorVisible = true;
  46. #pragma endregion
  47.  
  48. #pragma region Configuración puerto serie.
  49. // Crear un nuevo objeto SerialPort con la configuración predeterminada.
  50. Puerto_serie = gcnew SerialPort();
  51.  
  52. // Codificar a UTF-8 para que se vean bien las tildes, ñ y otros caracteres.
  53. Puerto_serie->Encoding = Encoding::UTF8;
  54.  
  55. // Obtenga una lista de nombres de puertos serie.
  56. array<String^>^ puertos = SerialPort::GetPortNames();
  57.  
  58. Console::WriteLine("Se encontraron los siguientes puertos series:");
  59.  
  60. // Muestre el nombre de cada puerto en la consola.
  61. for each (String ^ puerto in puertos)
  62. {
  63. Console::WriteLine(puerto);
  64. }
  65.  
  66. // Configuración.
  67. Console::Write(
  68. "Introduzca un número para seleccionar puerto COM.\n"
  69. "Por ejemplo el 4, sería COM4.\n"
  70. "\n"
  71. "Puerto: ");
  72. COM = Console::ReadLine(); // Escribir el número del puerto.
  73. Console::Clear(); // Limpiar pantalla.
  74.  
  75. Puerto_serie->PortName = "COM" + COM; // Número del puerto serie.
  76.  
  77. // Configuración del puerto serie.
  78. Puerto_serie->BaudRate = 115200;
  79. Puerto_serie->Parity = Parity::None;
  80. Puerto_serie->StopBits = StopBits::One;
  81. Puerto_serie->DataBits = 8;
  82. Puerto_serie->Handshake = Handshake::None;
  83. Puerto_serie->RtsEnable = true;
  84.  
  85. // Establecer los tiempos de espera de lectura / escritura.
  86. Puerto_serie->ReadTimeout = 500; // 500 Milisegundos.
  87. Puerto_serie->WriteTimeout = 500; // 500
  88.  
  89. // Comprueba si puede abrir el puerto serie.
  90. try
  91. {
  92. Puerto_serie->Open(); // Abrir el puerto serie.
  93. }
  94.  
  95. // En caso que diera algún error como que no encuentra el puerto seleccionado
  96. // muestra una excepción.
  97. catch (IOException^)
  98. {
  99. Console::ForegroundColor = ConsoleColor::Red; // Texto en rojo.
  100. Console::CursorVisible = false;
  101. Console::SetCursorPosition(16, 6);
  102. Console::WriteLine("El puerto " + Puerto_serie->PortName + " no existe " +
  103. "o no lo encuentra.");
  104. Console::ReadKey();   // Pulse cualquier tecla.
  105. Environment::Exit(1); // Salir de la aplicación.
  106. }
  107.  
  108. // Se ha denegado el acceso al puerto.
  109. catch (UnauthorizedAccessException^)
  110. {
  111. Console::ForegroundColor = ConsoleColor::Red; // Texto en rojo.
  112. Console::CursorVisible = false;
  113. Console::SetCursorPosition(16, 6);
  114. Console::WriteLine("Se ha denegado el acceso al puerto " + Puerto_serie->PortName +
  115. "" +
  116. "\nPuede estar el puerto escogido en uso.\n" +
  117. "Elija un puerto diferente o desactiva el que está en uso.");
  118. Console::ReadKey();   // Pulse cualquier tecla.
  119. Environment::Exit(1); // Salir de la aplicación.
  120. }
  121. #pragma endregion
  122.  
  123. _continua = true;
  124. readThread->Start();
  125.  
  126. // Mostrar texto Nombre y se
  127. Console::Write("Nombre: ");
  128.  
  129. // guarda en la variable nombre.
  130. nombre = Console::ReadLine();
  131.  
  132. // Se muestra el nombre o nick y el puerto seleccionado al final del título de la ventana.
  133. Console::Title = titulo + "- Nick: " + nombre + " - COM: " + COM;
  134.  
  135. Console::WriteLine("Escriba /salir para salir.");
  136.  
  137. while (_continua)
  138. {
  139. // Cualquier caracter recibido se guarda en la variable mensaje.
  140. //mensaje = Console.ReadLine();
  141.  
  142. #pragma region Enviar más de 255 caracteres.
  143. // #########################################################################
  144. Stream^ entradaDeDatos = Console::OpenStandardInput();
  145. array<Byte>^ buffer = gcnew array<Byte>(MAXIMA_LONGITUD);
  146. int numerosBytesLeidos = entradaDeDatos->Read(buffer, 0, MAXIMA_LONGITUD);
  147. array<Char>^ chars = Console::InputEncoding->GetChars(buffer, 0, numerosBytesLeidos);
  148. mensaje = gcnew String(chars);
  149. // #########################################################################
  150. #pragma endregion
  151.  
  152. // Compara /salir con el mensaje /salir si lo haz escrito igual.
  153. // ¿Escribiste la palabra /salir?
  154. if (comparaString->Equals("/salir\r\n", mensaje))
  155. {
  156. // Sí. Entonces, pone esta variable _continue en false.
  157. _continua = false;
  158. }
  159. // No. Entonces, envía por el puerto serie tu nick
  160. // y mensaje que haz escrito.
  161. else
  162. {
  163. Puerto_serie->WriteLine(String::Format("<{0}>: {1}", nombre, mensaje));
  164. }
  165. }
  166.  
  167. // Bloquea el subproceso.
  168. readThread->Join();
  169.  
  170. // Cierra el puerto serie.
  171. Puerto_serie->Close();
  172. }
  173.  
  174. // Lee mensaje recibido.
  175. static void Leer()
  176. {
  177. // Si _continua es true se ejecuta todas las instrucciones dentro de while.
  178. while (_continua)
  179. {
  180. try
  181. {
  182. // Almacena en la variable mensaje cualquier caracter o mensaje recibido.
  183. String^ mensaje = Puerto_serie->ReadLine();
  184.  
  185. // Muestra en pantalla mensaje recibido.
  186. Console::WriteLine(mensaje);
  187. }
  188. catch (TimeoutException^) {}
  189. }
  190. }
  191. };
  192.  
  193. int main(array<System::String^>^ args)
  194. {
  195. Chat::Main(args);
  196.  
  197. return 0;
  198. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Fondo mal declarado? Resuleto
Desarrollo Web
Puntoinfinito 0 1,502 Último mensaje 17 Diciembre 2012, 16:43 pm
por Puntoinfinito
SetInterval no esta declarado.
Desarrollo Web
bemone 3 2,267 Último mensaje 18 Marzo 2014, 05:24 am
por engel lex
Uber es declarado legal en Londres
Noticias
wolfbcn 0 985 Último mensaje 4 Julio 2014, 01:47 am
por wolfbcn
Ripear DVD puede ser declarado ilegal
Noticias
wolfbcn 2 1,772 Último mensaje 23 Marzo 2015, 21:22 pm
por Orubatosu
SET /P sin valor declarado
Scripting
Orni1 4 3,044 Último mensaje 21 Septiembre 2017, 23:15 pm
por **Aincrad**
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines