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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Error con arreglo String C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error con arreglo String C#  (Leído 2,337 veces)
SrTrp


Desconectado Desconectado

Mensajes: 325


Script/C#


Ver Perfil
Error con arreglo String C#
« en: 11 Octubre 2018, 03:20 am »

Bueno lo que quiero es pasar datos de un arreglo de una clase hacia otra pero cuando lo hago "supuestamen" si pasa datos correctamente y en esto me doy cuenta desde la primera clase donde quiero mandar, pero desde la otra clase que lo recibe quiero monstrar un dato y da un error de referencia de objeto.
haci es como lo esto mandando.
Código
  1. private void Vt2_FormClosing(object sender, FormClosingEventArgs e)
  2.        {
  3. //INTENTE ASI
  4.            Form1 tr = new Form1();
  5.            tr.arre1= this.miarregloenvio1;
  6.            tr.arre2= this.miarregloenvio2;
  7. //Y ASI
  8.            Form1 tr = new Form1();
  9.            tr.setArre1(this.miarregloenvio1);
  10.            tr.setArre2(this.miarregloenvio2);
  11. //y revise asi si si se envio los datos
  12. MessageBox.Show(tr.arre1[0], "x", MessageBoxButtons.OK, MessageBoxIcon.Information);
  13.        }
  14.  
y si me muestra el dato desde esaclase

también cuando quiero revisar o monstrar el dato desde el form1 me da error
Código
  1. Form1 tr= new Form1();
  2.            string st = tr.arre1[0];
  3.            MessageBox.Show(st, "x", MessageBoxButtons.OK, MessageBoxIcon.Information);
  4.  
Los arreglos son publicos .


En línea

ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: Error con arreglo String C#
« Respuesta #1 en: 11 Octubre 2018, 04:26 am »

Estas creando una variable local (Form1 tr) en tu metodo Vt2_FormClosing y por consiguiente dicha variable solo existira dentro de esa funcion, una vez la ejecucion del programa retorne de tu funcion Vt2_FormClosing la variable tr sera reciclada por el colector de basura y no existira mas en memoria, lo que trae consigo un error de acceso de memoria al querer acceder a un elemento de un arreglo que no existe en tu otra funcion.
Para hacer lo que deseas puedes:
1- Crearte una variable publica "Form1 tr" con sus metodos de acceso dentro de la clase donde deseas tener dicha referencia
2- Crearte una variable global o estática
3- Pasar la variable como referencia a la proxima funcion en la que usaras los datos


En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
SrTrp


Desconectado Desconectado

Mensajes: 325


Script/C#


Ver Perfil
Re: Error con arreglo String C#
« Respuesta #2 en: 14 Octubre 2018, 05:02 am »

Ya intente crear la variable global pero sigue igual, pero cierto me puse a pensar al crear el objeto cuando se cierra se desecha y por decirlo no existe mas ese objeto o "datos", lo que quiero tener del form2 al form1 no me explique mucho cuando plantee el post pero ahora si espero hacerlo
-Se abre primero que nada el Form1 donde tengo un arreglo vació sin declarar el tamaño
-Doy click a un botón se me abre el Form2(el form1 siempre se mantiene abierto)
-Lleno un arreglo con datos en el form2
-Cierro el form2 y al momento del evento(en que se cierra) quiero que el arreglo del form1 se llene con los datos del arreglo del form2, y utilizar o monstrar datos del arreglo.
en si sería Como pasar datos de un form a otro.
Ambos arreglos son globales y publicos.
En línea

ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: Error con arreglo String C#
« Respuesta #3 en: 15 Octubre 2018, 00:15 am »

Ya intente crear la variable global pero sigue igual, pero cierto me puse a pensar al crear el objeto cuando se cierra se desecha y por decirlo no existe mas ese objeto o "datos", lo que quiero tener del form2 al form1 no me explique mucho cuando plantee el post pero ahora si espero hacerlo
-Se abre primero que nada el Form1 donde tengo un arreglo vació sin declarar el tamaño
-Doy click a un botón se me abre el Form2(el form1 siempre se mantiene abierto)
-Lleno un arreglo con datos en el form2
-Cierro el form2 y al momento del evento(en que se cierra) quiero que el arreglo del form1 se llene con los datos del arreglo del form2, y utilizar o monstrar datos del arreglo.
en si sería Como pasar datos de un form a otro.
Ambos arreglos son globales y publicos.

A ver, creo que no me explique bien, necesitas entender algunos conceptos de POO. Form1 y Form2 son simplemente dos clases como cualquier otras y para poder compartir variables entre ellas tienes que usar las reglas de POO.
1- Una de ellas seria la que te dije anteriormente, crearte una variable publica y estática en Form1:

Código
  1. public partial class Form1 : Form
  2. {
  3.        public static string[] strArray;
  4. }

Luego simplemente usas la variable desde Form2 como:

Código
  1. for (int i = 0; i < Form1.strArray.Length; i++)
  2.    Form1.strArray[i] = this.miarregloenvio[i];

2- Crearte una variable publica en Form1 con acceso de lectura y escritura (Properties o Get/Set). Crear una variable de tipo Form1 en la clase Form2 para de esta forma tener la instancia de Form1 en el ambito del Form2. Dicha instancia la puedes pasar mediante un parametro al constructor de Form2 o mediante cualquier otro método.

Código
  1. public partial class Form1 : Form
  2. {
  3.        private string[] strArray;
  4.        public string[] StrArray
  5.        {
  6.            get { return strArray; }
  7.            set { strArray= value; }
  8.        }
  9.  
  10.        // dentro de tu funcion
  11.       Form2 frm2 = new Form2(this);
  12. }

Código
  1. public partial class Form2 : Form
  2. {
  3.        private Form1 frm1;
  4.        public Form2(Form1 pfrm1)
  5.        {
  6.            InitializeComponent();
  7.            this.frm1 = pfrm1;
  8.        }
  9.  
  10.        // Dentro de tu funcion
  11.       if(frm1.StrArray == null)
  12.            frm1.StrArray = new string[SIZE];
  13.       for (int i = 0; i < frm1.StrArray.Length; i++)
  14.           frm1.StrArray[i] = this.miarregloenvio1[i];
  15. }

3- Usa tu imaginación, existen muchas formas de lograrlo
En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
SrTrp


Desconectado Desconectado

Mensajes: 325


Script/C#


Ver Perfil
Re: Error con arreglo String C#
« Respuesta #4 en: 15 Octubre 2018, 01:32 am »

Gracias ya pude solucionarlo  ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Recorrer un Arreglo en Java (Buscar String)
Java
NatzMorel 1 4,226 Último mensaje 14 Junio 2012, 11:31 am
por ollo
Problema con busqueda en arreglo de string
Programación C/C++
MikeMonostone 4 2,837 Último mensaje 13 Noviembre 2012, 00:28 am
por leosansan
Como creo un arreglo MultiClase? a = {String, int, miclase}
Programación C/C++
Synth3tik0 2 2,697 Último mensaje 1 Enero 2013, 21:11 pm
por 0xDani
Arreglo dinamico string
Programación C/C++
leopaez 3 4,760 Último mensaje 10 Diciembre 2016, 21:43 pm
por engel lex
Problema al copiar string a un arreglo string dinamico VS2013 ultimate
Programación C/C++
raver1983 1 2,233 Último mensaje 7 Febrero 2017, 01:11 am
por raver1983
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines