Foros del Web » Programación para mayores de 30 ;) » .NET »

Problemas con String^ y ArrayList

Estas en el tema de Problemas con String^ y ArrayList en el foro de .NET en Foros del Web. Hola a tod@s, en este código public ref class Adaptador { public: ... property String^ Nombre; ... } ________________________________________ Sniffer::Sniffer(void) { int i = 0; ...
  #1 (permalink)  
Antiguo 23/04/2007, 02:49
 
Fecha de Ingreso: mayo-2004
Mensajes: 12
Antigüedad: 20 años
Puntos: 0
Pregunta Problemas con String^ y ArrayList

Hola a tod@s, en este código


public ref class Adaptador {
public:
...
property String^ Nombre;
...
}

________________________________________


Sniffer::Sniffer(void) {
int i = 0;
String^ msj;
pcap_if_t *tRed;
pcap_if_t *tarjetasRed;
char errBuffer[PCAP_ERRBUF_SIZE];
Adaptador^ adp;

// Obtenemos la lista de tarjetas de red de ordenador donde se ejecute.
int OK = pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &tarjetasRed, errBuffer);
if (OK == -1) {
msj = String::Concat("Error en pcap_findalldevs_ex:", gcnew String(errBuffer));
MessageBox::Show(msj, "Error en WinPcap", MessageBoxButtons::OK, MessageBoxIcon::Error);
//fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errBuffer);
}

for(tRed = tarjetasRed; tRed != NULL; tRed = tRed->next) {
msj = gcnew String(tRed->name);

adp->Nombre = msj;
if (tRed->description)
adp->Descripcion = gcnew String(tRed->description);
else
adp->Descripcion = "Sin descripcion";
// Object^ obj = safe_cast<Object^>(adp);
Adaptadores.Add(adp);
//MessageBox::Show(msj, "Adptador de red", MessageBoxButtons::OK, MessageBoxIcon::Error);
i++;
}

// Se libera la lista de tarjetas de red obtenida anteriormente.
pcap_freealldevs(tarjetasRed);
} // FIN Sniffer(void)

en las sentencias subrayadas me da el siguiente error de ejecución:
"Excepción no controlada del tipo 'System.NullReferenceException' en Pruebas.exe"

Información adicional:Referencia a objeto no establecido como instacia del objeto"


¿¿¿¿¿como puedo revolverlo?????

Si cambio el código anterior por este otro (En cursiva están los cambios):

Sniffer::Sniffer(void) {
int i = 0;
String^ msj;
pcap_if_t *tRed;
pcap_if_t *tarjetasRed;
char errBuffer[PCAP_ERRBUF_SIZE];
Adaptador adp;

// Obtenemos la lista de tarjetas de red de ordenador donde se ejecute.
int OK = pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &tarjetasRed, errBuffer);
if (OK == -1) {
msj = String::Concat("Error en pcap_findalldevs_ex:", gcnew String(errBuffer));
MessageBox::Show(msj, "Error en WinPcap", MessageBoxButtons::OK, MessageBoxIcon::Error);
//fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errBuffer);
}

for(tRed = tarjetasRed; tRed != NULL; tRed = tRed->next) {
msj = gcnew String(tRed->name);

adp.Nombre = msj;
if (tRed->description)
adp.Descripcion = gcnew String(tRed->description);
else
adp.Descripcion = "Sin descripcion";
// Object^ obj = safe_cast<Object^>(adp);
Adaptadores.Add(adp);
//MessageBox::Show(msj, "Adptador de red", MessageBoxButtons::OK, MessageBoxIcon::Error);
i++;
}

// Se libera la lista de tarjetas de red obtenida anteriormente.
pcap_freealldevs(tarjetasRed);
} // FIN Sniffer(void)

en la sentencia subyadada me da el siguiente error:


error C2664: 'System::Collections::ArrayList::Add' : no se puede convertir el parámetro 1 de 'Adaptador' a 'System::Object ^'

¿¿¿¿¿como puedo revolverlo?????

Muchas gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:52.