Jueves 7 de Noviembre de 2024, 23:04
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
C#
(Moderador:
ProfesorX
) »
Vector De Structura
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Vector De Structura (Leído 2069 veces)
waty00
Nuevo Miembro
Mensajes: 12
Vector De Structura
«
en:
Viernes 25 de Abril de 2008, 12:55 »
0
Hola, buenos dias.
Estoy programando en Visual Studio 2005 con C# y tengo problemas para acceder a un vector de estructuras. Pongo un ejemplo de mi estructura y del vector creado a partir de ella:
unsafe struct AP
{
public string posicion;
public fixed int valores[10];
public int tamvalor;
public float media, varianza, desviacion;
}
AP[] VectorAP = new AP[10];
Ya he creado un vector de tamaño 10 y cada entrada del vector es una estructura AP. Mi problema es como aceder al campo valores que tambien es un vector.
Lo normal para acceder a este tipo de configuracion es por ejemplo:
VectorAP[1].tamvalor = 1; <------ Esto funciona
VectorAP[1].valores[3] = 1; <------ Esto NO FUNCIONA !!!
Al intentar acceder al campo vectores me sale este error:
"Error del compilador CS1666. No puede utilizar los búferes de tamaño fijo contenidos en expresiones de tipo unfixed. Intente usar la instrucción fixed."
Alquien me puede ayudar??
Gracias.
Tweet
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: Vector De Structura
«
Respuesta #1 en:
Viernes 25 de Abril de 2008, 18:24 »
0
Mira waty00, en tu caso, cuando necesito tener un vector en una estructura, prefiero definirla como una clase, al fin y al cabo, un struct y un class, funcionan muy parecido, y me evito ese y otros errores al utilizar structs (he tenido otras dificultades con struct), solo que, para evitar que pueda "heredar" de la clase, la defino como sealed:
Código: Text
sealed class AP
{
public string posicion;
public int[] valores = new int[10];
public int tamvalor;
public float media, varianza, desviacion;
}
De esa manera, el codigo que pones, si seria valido.
Código: Text
AP[] VectorAP = new AP[10];
VectorAP[1].tamvalor = 1;
VectorAP[1].valores[3] = 1;
Ojala y eso resuelva tu problema.
Saludos
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
waty00
Nuevo Miembro
Mensajes: 12
Re: Vector De Structura
«
Respuesta #2 en:
Lunes 28 de Abril de 2008, 22:12 »
0
He probado lo que me dijiste pero no funciona. Me sale este error:
"Excepción no controlada del tipo 'System.NullReferenceException' en PFC.exe
Información adicional: Referencia a objeto no establecida como instancia de un objeto."
Con la clase se me crea el vector de [10] pero no se crean los campos de la estructura de cada posicion del vector. Al intentar acceder a un campo que no existe da el error en tiempo de ejecucion pero en la compilacion no lo detecta.
- VectorAP {Dimensiones:[10]} PFC.Form1.AP[]
null PFC.Form1.AP
[1] null PFC.Form1.AP
[2] null PFC.Form1.AP
[3] null PFC.Form1.AP
[4] null PFC.Form1.AP
[5] null PFC.Form1.AP
[6] null PFC.Form1.AP
[7] null PFC.Form1.AP
[8] null PFC.Form1.AP
[9] null PFC.Form1.AP
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: Vector De Structura
«
Respuesta #3 en:
Martes 29 de Abril de 2008, 18:55 »
0
Es muy raro, porque a mi si me funciona.
Quizas estas declarando mal algo, postea tu codigo, para saber que pasa.
Saludos
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
Mostreus
Nuevo Miembro
Mensajes: 7
Re: Vector De Structura
«
Respuesta #4 en:
Miércoles 30 de Abril de 2008, 22:28 »
0
adf
waty00
Nuevo Miembro
Mensajes: 12
Re: Vector De Structura
«
Respuesta #5 en:
Martes 6 de Mayo de 2008, 15:28 »
0
Este es mi código:
namespace PFC
{
unsafe public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
FicheroUnico(ap);
}
sealed class APP
{
public string posicion;
public int[] valores = new int[10];
public int tamvalor;
public float media, varianza, desviacion;
}
unsafe public void FicheroUnico(string ap)
{
APP[] VectorAPP = new APP[10];
VectorAPP[1].desviacion = 3;
}
}
}
waty00
Nuevo Miembro
Mensajes: 12
Re: Vector De Structura
«
Respuesta #6 en:
Martes 6 de Mayo de 2008, 15:32 »
0
Correccion, el codigo anterior si funciona. Me falto poner la linea conflictiva. Quiero aclarar que esto compila bien pero en tiempo de ejecucion cuando le doy al boton del form salta el error que ya comentaba. Aqui dejo el codigo con la nueva linea:
namespace PFC
{
unsafe public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
FicheroUnico(ap);
}
sealed class APP
{
public string posicion;
public int[] valores = new int[10];
public int tamvalor;
public float media, varianza, desviacion;
}
unsafe public void FicheroUnico(string ap)
{
APP[] VectorAPP = new APP[10];
VectorAPP[1].desviacion = 3;
VectorAPP[1].valores[1] = 4; ----->linea conflictiva
}
}
}
waty00
Nuevo Miembro
Mensajes: 12
Re: Vector De Structura
«
Respuesta #7 en:
Martes 6 de Mayo de 2008, 15:36 »
0
correccion, ninguna linea funciona. todo compila pero me da error al ejecutar.
creia que me funcionaba, pero me da el mismo error en las dos lineas.
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: Vector De Structura
«
Respuesta #8 en:
Martes 6 de Mayo de 2008, 20:53 »
0
Tienes razon, como te lo puse originalmente no funciona, estuve investigando y resulta que cuando haces APP[] VectorAPP = new APP[10] no crea un array de diez objetos, sino un array con REFERENCIAS a diez objetos, pero los objetos aun no existen y por lo tanto, los marca como null.
La solucion es crear el objeto despues de crear el array, esto lo puedes hacer individualmente o mediante un ciclo, como lo prefieras. a continuacion te pongo la manera correcta, por cierto, recuerda que los array comienzan con cero y no con uno, un array de 10 elementos, va del 0 al 9 y no del 1 al 10.
Código: Text
public void FicheroUnico()
{
/// Crea un vector con referencias a 10 objetos
/// las referencias valen null hasta que no se crea
/// el objeto.
APP[] VectorAPP = new APP[10];
/// Creacion del objeto
VectorAPP[0] = new APP();
VectorAPP[0].desviacion = 3;
VectorAPP[0].valores[0] = 4;
}
Código: Text
/// Creacion de los 10 objetos mediante un ciclo
int i;
for (i = 0; i < 10; i++)
{
VectorAPP[i] = new APP();
}
Saludos
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
waty00
Nuevo Miembro
Mensajes: 12
Re: Vector De Structura
«
Respuesta #9 en:
Miércoles 7 de Mayo de 2008, 00:19 »
0
Ahora si me funciona bien. Es lo que quería aunque tenga mas lineas de código.
Muchicimas Gracias.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
CLR: .Net / Mono / Boo / Otros CLR
»
C#
(Moderador:
ProfesorX
) »
Vector De Structura