[ Foro de C# ]

ayuda con programa en c#: fichero, arreglo y datagrid

16-Feb-2014 19:49
Invitado (luis angel)
3 Respuestas

Tengo un problema con este lenguaje de programación ya que no se nada acerca de el, el programa en c# consiste en estos pasos:
1.-crear una matriz de 2 dimensiones o mas en exel.
2.-copiarla y pegarla en un bloc de notas o archivo txt
3.-hacer un programa un programa que lea la matriz y la guarde en un arreglo.
4.-desplegar el arreglo en una tabla para verificar los datos la tabla vendria siendo un datagrid.

El programa en si nadamas tendria en la pantalla el datagrid y en cuanto corra ya debería de aparecer desplegado toda la tabla,creo que el arreglo debería de guardarse en memoria pero tampoco se hacer eso, pero nose ni siquiera por donde empesar para hacerlo.
el mero objetivo de este programa lograr hacer un programa de compilador pero no se me han dado los resultados.
Espero su ayuda.


17-Feb-2014 12:04
Nacho Cabanes (+30)

Vamos paso por paso. Crea el documento de texto y primero un programa que lo lea, usando un StreamReader. Aquí tienes cómo hacer la lectura:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=413

Luego tendrías que pasar esos datos a un array. Eso es fácil, pero pregunta dudas en caso de tenerlas, publicando primero tu fuente con el intento.

Llevar la información al DataGrid es un último paso que tendrás que dar cuando hayas entendido lo anterior, no antes.


18-Feb-2014 08:07
Invitado (luis angel)


 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
 
namespace proyecto
{
    public partial class Form1 : Form
    {
        ArrayList VectorDinamico = new ArrayList();
 
        public Form1()
        {
            InitializeComponent();
            string line;
            string cadena = null;
            int contador = 0;
            // Read the file and display it line by line.
            System.IO.StreamReader file =
                new System.IO.StreamReader(@"C:\Users\LuisAngel\Desktop\ejemplo.txt");
            while ((line = file.ReadLine()) != null)
            {
                listBox1.Items.Add(line);
                int longitud = line.Length;
                for (int i = 0; i <= longitud - 1; i++)
                {
                    if (line != "")
                    {
                        if (line.Substring(0, 1) != " " && line.Substring(0, 1) != "\n" && line.Substring(0, 1) != "\r")
                        {
                            cadena = cadena + line.Substring(0, 1);
                            line = line.Remove(0, 1);
                            if (cadena != null && line == "")
                            {
                                contador++;
                                VectorDinamico.Add(cadena);
                                cadena = null;
                            }
                        }
                    }
                    /////////////////////////////
                    if (line != "")
                    {
                        if (line.Substring(0, 1) == " " || line.Substring(0, 1) == "    ")
                        {
                            if (cadena != null)
                            {
                                contador++;
                                VectorDinamico.Add(cadena);
                                cadena = null;
                            }
                            line = line.Remove(0, 1);
                        }
                    }
                    /////////////////////////////////////////
                    if (line != "")
                    {
                        if (line.Substring(0, 1) == "\n" || line.Substring(0, 1) == "\r")
                        {
                            if (cadena != null && line == "")
                            {
                                contador++;
                                VectorDinamico.Add(cadena);
                                cadena = null;
                                break;
                            }
                            line = line.Remove(0, 1);
                        }
                    }
                }
            }
            file.Close();
            VectorDinamico.Sort();
            ///////////////////////////////////////////
            //int numero = VectorDinamico.Count;
            //for(int i= 0; i<= numero -1; i++)
            //{
              //  MessageBox.Show(VectorDinamico[i].ToString());
            //}
            ArrayList VectorDinamicoNumero = new ArrayList();
            ArrayList VectorFinal = new ArrayList();
            ArrayList VectorFinalNumero = new ArrayList();
 
            for (int i = 0; i <= VectorDinamico.Count - 1; i++)
            {
                int contadorsito = 0;
                for (int j = 0; j <= VectorDinamico.Count - 1; j++)
                {
                    if (VectorDinamico[i].ToString() == VectorDinamico[j].ToString())
                    {
                        contadorsito++;
                    }
                }
                VectorDinamicoNumero.Add(contadorsito);
            }
 
            //for (int i = 0; i <= VectorDinamico.Count - 1; i++)
            //{
 
        }
 


Este es el codigo pero lo que nose como agregarlos en el datagrid de manera que no me pege los numeros ya que los quiero mostrar asi en el datagrid:
1 2 3
2 2 2
3 4 5

y lo que no se es que a la hora de pasar de exel esos numeros al bloc de notas el espacio que hay entre ellos nose como se llama para poder hacer que los separe y no me los deje pegados y tampoco se como agregarlos al datagrid de manera que no marque un error ya que no debo de hacerlo de forma manual si no que el mismo codigo los agrege exactamente a como estan anteriormente puestos los numeros


19-Feb-2014 11:08
Nacho Cabanes (+30)

Buffff... faltan muchos comentarios en ese código para tener claro lo que pretendes...

Imagino que esa parte repetitiva que mira si hay un espacio o no y lo añade a un ArrayList es para extraer los elementos que conforman cada línea. Una forma más simple es usar "Split", para descomponer la línea en sus componentes, como puedes ver en este ejemplo:

http://www.aprendeaprogramar.com/fuentes/view.php?t=5

Pero en tu caso, que sabes que va a haber exactamente 3 números por línea, puede ser más simple:

 
dato1 = Convert.ToInt32( fichero.Read() );
dato2 = Convert.ToInt32( fichero.Read() );
dato3 = Convert.ToInt32( fichero.ReadLine() );
 



De hecho, podrías guardar directamente en un array de 3x3 elementos, si repites esa estructura 3 veces.  No entiendo por qué usas 3 ArrayList para eso.

¿Luego tienes que volcarlo a un DataGrid o a un DataGridView? Imagino que lo segundo, si estás usando WindowsForms, pero para ganar un poco de tiempo, la referencia oficial del primero la tienes aquí:

http://msdn.microsoft.com/es-es/library/system.web.ui.webcontrols.datagrid(v=vs.110).aspx

y la del segundo aquí:

http://msdn.microsoft.com/es-es/library/system.windows.forms.datagridview(v=vs.110).aspx






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)