• Jueves 2 de Mayo de 2024, 02:01

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - U2_Caparzo

Páginas: 1 [2]
26
C# / Re:Dictionary de clases?
« en: Domingo 17 de Junio de 2012, 02:34 »
Cada vez que cargues tú aplicación cargaras tú Diccionario en memoria?.. no sé si entendí bien (lo más seguro es que no n.n ),  pero creo que lo mejor es que crees un proyecto independiente con tus clases y en el proyecto donde tienes tú aplicación agregues como referencia el proyecto donde se encuentren tus clases, así las llamas cuando las necesites y no se cargarán en la memoria de la PC donde se use la aplicación.

Bueno sólo era una opinión, ahora si deseas usar el Dictionary puedes leer aquí:

http://msdn.microsoft.com/es-es/library/xfhwa508%28v=VS.80%29.aspx

http://msdn.microsoft.com/es-es/library/xfhwa508.aspx


Saludos! :)

no se yo no te entendi o tu no me entendiste xD...
pero bueno, aqui va otra explicacion :)
este es un ejemplo de una estructura de un packet(paquetes, los arrays de bytes que se envian de servidor a cliente en el juego, les dire packets por costumbre xd)
Código: [Seleccionar]
class AuthorizationResponse : IPacket
    {
        byte[] Packet;
        public byte[] ToArray
        {
            get { return this.Packet; }
        }
        public AuthorizationResponse(ClientSocket Client)
        {
            Packet = new byte[32];
            ConquerPacket.WriteUInt16(32, 0, this.Packet);
            ConquerPacket.WriteUInt16(1055, 2, this.Packet);
            ConquerPacket.WriteUInt32(Client.ClientUID, 4, this.Packet);
            ConquerPacket.WriteUInt32(Client.AuthType, 8, this.Packet);
            ConquerPacket.WriteString(Constants.ServerIP, 12, this.Packet);
            ConquerPacket.WriteUInt16(Constants.GamePort, 28, this.Packet);

        }

este es el packet mas simple que tengo. pasa que otros involucran mas valores y se envian muy seguido (cada segundo o incluso menos en el caso del chat publico).
Entonces, cada vez que tengo que enviar ese packet, estaria creando una nueva clase, lo cual me imagino (no soy nadie muy experenciado, pero crear una cantidad muy alta de clases tan seguido suena mal xD) que no es muy bueno.
Fue entonces cuando se me ocurrio, que cada vez que el Servidor envie un packet al cliente, revise si esa clase existe en el Dictionary(estaria creando un Dictionary por cada cliente), si existe editar esa clase y enviarla, o sino crearla y agregarla al Dictionary.

pero mi problema esta en que como guardo esas clases en el Dictionary, tendria la ID del paquete como ushort como TKey, pero como TValue no sabria que poner, porque si pongo Object, o una Interface que tengo creada o lo que sea, no se como convertir eso a la clase del Packet.
por eso tengo

Dictionary <ushort, Value> MisPackets; //aqui esta el problema, como agrego clases distintas como Value, y luego obtener la Clase que quiera de ese Value.

espero haberme explicado mas :)

27
C# / Dictionary de clases?
« en: Sábado 16 de Junio de 2012, 03:30 »
Hola a todos, hace poco comenze a escribir un emulador para un juego online(apoyado de varias guias obviamente) y ahora tengo que enviar muchos paquetes, las estructuras para estos las tengo en clases (asi no tengo que escribir el paquete desde 0, sino que cambio algunos valores y lo envio), pero la verdad no quiero crear una clase nueva cada vez que envio un paquete, asi que deseo guardar las clases usadas en un Dictionary para volver a usarlas, pero la duda esta en como las almaceno?

la idea es que sea algo como

Dictionary<ushort, ClasesDeLosPaquetes> MisPaquetes.

como puedo guardar clases en el dictionary? habia pensado en objects, o usar interfaces y hacer los paquetes derivados de la inetrface, pero luego no podria convertir el object o interface a la clase del paquete que requiero. como lo podria hacer?

de antemano gracias

28
C# / Re:error: System.Runtime.InteropServices.COMException (0x800A03EC)
« en: Jueves 14 de Junio de 2012, 04:42 »
Estas usando librerias? o descargaste el proyecto? parece que quisieras ejecutar un proyecto creado en windows de 64bits y tu windows es de 32bits o vice versa, recuerdo tener un problema similar (si es que no es el mismo) y era una libreria que tenia que fue hecha en 64bits.

29
C# / Re:Como validar todos los textbox al mismo tiempo
« en: Martes 12 de Junio de 2012, 01:49 »
pues la verdad no sabria hacer que no acepte letras de una manera correcta, pero se me ocurren 2 soluciones (sin contar try/catch que es algo lento)

char[] numeros = new char{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
o bien
string numeros = "0123456789";


1.- Seria al momento de presionar el boton revisar si para cada char en cada textbox es contenido en "numeros", y si no borrarlo.
2.- Algo poco eficiente, seria tener un Timer, y cada cierto intervalo, por ejemplo 100 ms revisar cada char en cada textbox, si esta contenido en "numeros", o sino borrarlo.

la diferencia esta en que quieres, algo un poco mejor, pero menos comodo para el usuario, o que borre las letras automaticamente cada cierto intervalo.

30
C# / Re:Como validar todos los textbox al mismo tiempo
« en: Lunes 4 de Junio de 2012, 15:45 »
asi lo haria yo, tiene los mismos nombres que en el tuyo asi que no habria problemas, el final no lo entendi mucho asi que lo deje tal cual estaba.

Código: [Seleccionar]
using System;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Windows.Forms;

namespace ProyectoGrafos
{
    public partial class Grafos  : Form
    {
        public Grafos()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            {
                StringBuilder grafo = new StringBuilder();
                grafo.AppendLine("diagraph A{");
                foreach (Control c in this.Controls)
                {
                    if (c is TextBox)
                    {
                        if (string.IsNullOrEmpty(c.Text))
                        {
                            MessageBox.Show("Ingrese todos los valores.", "Error de validación",
                                            MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            return;
                        }
                        else
                        {
                            byte Valor;
                            byte.TryParse(c.Text, out Valor);
                            if (Valor.Equals(1))
                                grafo.AppendLine(c.Name.Substring(0, 1) + " -> " + c.Name.Substring(1, 1));
                            else
                                grafo.AppendLine();
                        }
                    }
                }
                grafo.AppendLine("}");
                File.WriteAllText(@"grafo.dot", grafo.ToString());

                #region Guardar y Crear la imagen
                saveFileDialog1.Filter = "Archivos de imagen (*.png)|*.png";

                saveFileDialog1.Title = "Nombre para el archivo";
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    ProcessStartInfo Grafo = new ProcessStartInfo(@"dot.exe");
                    Grafo.Arguments = "grafo.dot -o " + saveFileDialog1.FileName + " -Tpng -Grankdir=LR";
                    Grafo.UseShellExecute = true;
                    Process.Start(Grafo);
                }
                #endregion
            }
        }
    }
}


Suerte!

31
C# / Re:Como validar todos los textbox al mismo tiempo
« en: Domingo 3 de Junio de 2012, 05:05 »
podrias probar con algo como

Código: [Seleccionar]
short Value;
            foreach (Control c in this.Controls)
                if (c is TextBox)
                    if (string.IsNullOrEmpty(c.Text))
                        continue;
                    else
                    {
                        short.TryParse(c.Text, out Value);
                        if (Value.Equals(1))
                        {
                            grafo.WriteLine("A -> A;");
                        }
                        else
                            grafo.WriteLine("");
                    }

32
C# / Constructor de paquetes
« en: Lunes 28 de Mayo de 2012, 07:38 »
Hola a todos, esta es una clase que quizas a alguien le sirva, es para construir paquetes que son enviados a traves de la internet, solo he testeado agregar bytes y ints, pero deberia funcionar con el resto, habran maneras mejores pero me siento feliz por haber hecho esto ^^
Lo hice ya que como proyecto de aprendizaje estoy programando un servidor de Conquer online desde "0" (los sockets y la criptografia son copiadas)

Esta en ingles porque la comunidad mas desarrollada en servidores de este juego es de E.E.U.U







Código: [Seleccionar]
    public class Builder
    {
        public static void WriteByte(byte val, int offset, byte[] Data)
        {
            Data[offset] = val;
        }
        public static void WriteUInt16(ushort val, int offset, byte[] Data)
        {
            Data[offset] = (byte)val;
            Data[++offset] = (byte)(val >> 8);
        }
        public static void WriteUInt32(uint val, int offset, byte[] Data)
        {
            Data[offset] = (byte)val;
            Data[++offset] = (byte)(val >> 8);
            Data[++offset] = (byte)(val >> 16);
            Data[++offset] = (byte)(val >> 24);
        }
        public static void WriteUInt64(ulong val, int offset, byte[] Data)
        {
            Data[offset] = (byte)val;
            Data[++offset] = (byte)(val >> 8);
            Data[++offset] = (byte)(val >> 16);
            Data[++offset] = (byte)(val >> 24);
            Data[++offset] = (byte)(val >> 32);
            Data[++offset] = (byte)(val >> 40);
            Data[++offset] = (byte)(val >> 48);
            Data[++offset] = (byte)(val >> 56);
        }
        public static void WriteString(string val, int offset, byte[] Data)
        {
            for (int i = 0; i < val.Length; i++)
            {
                Data[offset + i] = (byte)val[i];
            }
        }
    }

33
C# / Re:utilizar el metodo split
« en: Miércoles 9 de Mayo de 2012, 04:51 »
hmm prueba con NombreString.Split('\n'); o NombreString.Split('\n\r');

34
C# / Conectar 2 aplicaciones sin sockets
« en: Viernes 27 de Abril de 2012, 22:20 »
Hola a todos, para explicar un poco el porque, yo me entretengo editando un emulador de un mmorpg en C#, pero la source no es de lo mejor que digamos y es posible que se cierre, la base de datos que usa, es en archivos escritos con BinaryWriter, asi que no puedo guardar un cambio de un personaje inmediatamente despues del cambio porque tengo que guardar todo, entonces la unica solucion que existe es guardarlo cada 10 segundos(se pueden cambiar pero no es lo que quiero).

Lo que se me ocurrio es hacer una aplicacion en C#, que reciba la informacion desde el servidor del juego, asi podria enviar por ejemplo, un solo cambio a la aplicacion, y esta la almacenaria y luego la guardaria, entonces, en vez de escribir todos los datos en el archivo, envia ese cambio a la nueva aplicacion, y esta la guarda cada cierto tiempo, asi aunque cayera el servidor, podria mantener los datos a salvo.

Ojala alguien pueda ayudarme con esto, la idea es hacerlo sin sockets porque me imagino que serian mas lentos, ademas de innecesarios ya que ambos estarian en la misma PC.

Links, nombres, todo me sirve.

Gracias de antemano

35
C# / duda en editor de archivos ini
« en: Jueves 12 de Abril de 2012, 04:02 »
Hola a todos, bueno, he estado tratando de aplicar un poco lo que he leido en unos tutoriales, y decidi hacer un editor de archivos ini entre otras cosas, pero tengo un problema: La velocidad, con 200 campos(campo=valor, a esa parte me refiero) tarda entre 400 y 900 milisegundos, lo cual encuentro que es demasiado.

esto es lo que hice(disculpen el que lo haga en ingles, pero me acostumbre)


Código: [Seleccionar]
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using IniHandler;

namespace IniHandler
{
    struct Item
    {
        public string Section;
        public string Field;
    }
}

namespace IniManager
{
    class IniManager
    {
        byte COUNT = 0;
        string SECTION, FILE;
        string[] SECTIONS = new string[255];
        Dictionary<Item, string> ITEMS;
        StreamReader READER;
        bool READING = true;

        public IniManager(string _FILE)
        {
            COUNT = 0;
            FILE = _FILE;
            ITEMS = new Dictionary<Item, string>();
            FILL();
            READING = true;
        }

        void FILL()
        {
            string[] Lines = File.ReadAllLines(FILE);
            foreach (string Line in Lines)
            {
                ANALYZELINE(Lines);
            }
            //for (ushort i = 0; i < LINES.Length; i++)
            //{
            //    ANALYZELINE(LINES[i]);
            //}
        }

        void ANALYZELINE(string LINE)
        {
            if (LINE.Length > 0)
            {
                if (LINE[0] == '[')
                {
                    SECTIONS[COUNT] = LINE;
                    COUNT++;
                    SECTION = LINE;
                }
                else
                {
                    Item i = new Item();
                    i.Section = SECTION;
                    string[] SPLIT = LINE.Split('=');
                    i.Field = SPLIT[0];
                    ITEMS.Add(i, SPLIT[1]);
                }
            }
            else
                return;
        }

        public Item GetItem(string Section, string Field)
        {
            Item i = new Item();
            i.Section = Section;
            i.Field = Field;
            return i;
        }

        public string ReadString(string Section, string Field)
        {
            string Value;
            Item I = new Item();
            I.Section = '[' + Section + ']';
            I.Field = Field;
            ITEMS.TryGetValue(I, out Value);
            return Value;
        }

        public void Write(string Section, string Field, object Value)
        {
            StringBuilder BUILDER = new StringBuilder();
            Item I = GetItem(Section, Field);
            if (!ITEMS.ContainsKey(I))
            {
                ITEMS.Add(I, Value.ToString());
            }
            else
            {
                ITEMS.Remove(I);
                ITEMS.Add(I, Value.ToString());
            }
            for (byte i = 0; i <= COUNT; i++)
            {
                string section = SECTIONS[i];
                BUILDER.AppendLine(section);
                foreach(KeyValuePair<Item, string> item in ITEMS)
                {
                    if (item.Key.Section != section)
                        continue;
                    else
                    {
                        BUILDER.AppendLine(item.Key.Field + '=' + item.Value);
                    }
                }
            }
            File.WriteAllText(FILE, BUILDER.ToString());
        }
    }
}



ojala puedan ayudarme a mejorar esto, ya que obviamente debe ser una pesima forma por la cantidad de tiempo que toma, y que es exactamente lo que falla, tengo una idea pero la verdad no se si lo es, que seria el crear masivamente objetos a partir de la estructura "Item"

Gracias de antemano

36
C# / ¿Tipos de Bases de datos?
« en: Viernes 6 de Abril de 2012, 02:07 »
Hola a todos, se que muchos pensaran que soy un imbecil por lo que voy a rechazar, pero es que la verdad no me siento comodo usando, que son las bases de datos SQL (mysql, mssql o cualquiera)
por eso les queria pedir alternativas a esto, estuve pensando en INI pero algunos amigos no me lo recomendaron porque no es lo suficientemente rapido, estoy hablando de manejar mas de 50 archivos al mismo tiempo, actualizando datos.
por eso les queria pedir tipos de bases de datos que sean lo suficientemente rapido para estar actualizandose constantemente y poder guardar mas o menos 200 datos distintos de no mas de 40 chars de longitud en la menor cantidad de milisegundos posibles, pero intentando no sacrificar lo que es Uso de CPU y Ram debido a que es muy importante en lo que estoy "trabajando"

en resumen, necesito un tipo de base de datos con bajo uso de cpu y ram, lo mas rapido posible, y de preferencia basada en archivos, un poco de informacion de como se usa.

Gracias de antemano

37
C# / Re:Ejecutar procesos en otra maquina remotamente
« en: Sábado 17 de Marzo de 2012, 20:13 »
bueno, suponiendo que se puede "esconder" un programa en ejecucion, osea que sea visible solo de la ventana de procesos, crear un timer en unos 30 segs, y revisar si tal proceso esta activo y si no iniciarlo, recuerdo hacer eso que era algo como

un bool que revisaba si existia el proceso
private bool existe()
{
Foreach (Process p in pr)
{
if (p.Name == nombreprocesoquedeseasmantenerabierto)
   return true;
}
return false;
}

entonces en el metodo del timer
if(existe == false)
   Process.Start("direccion del proceso necesario")

aunque no se si esto satisface todas tus necesidades

En ese caso, si el programa vigilante se cae, ya no puedes hacer nada. En el caso de un servicio (más o menos con tu código) y se cae por cualquier motivo, windows lo vuelve a levantar automáticamente.

A que te refieres con un servicio? es que la verdad no te entiendo muy bien :s

¿Que podria causar que el programa se cerrase?

38
C# / Re:Ejecutar procesos en otra maquina remotamente
« en: Miércoles 14 de Marzo de 2012, 00:35 »
bueno, suponiendo que se puede "esconder" un programa en ejecucion, osea que sea visible solo de la ventana de procesos, crear un timer en unos 30 segs, y revisar si tal proceso esta activo y si no iniciarlo, recuerdo hacer eso que era algo como

un bool que revisaba si existia el proceso
private bool existe()
{
Foreach (Process p in pr)
{
if (p.Name == nombreprocesoquedeseasmantenerabierto)
   return true;
}
return false;
}

entonces en el metodo del timer
if(existe == false)
   Process.Start("direccion del proceso necesario")

aunque no se si esto satisface todas tus necesidades

39
C# / Re:Ordenar strings en un archivo texto
« en: Martes 13 de Marzo de 2012, 03:04 »
Si bien entiendo quieres ordenar un vector de números de menor a mayor.

Hay muchos métodos documentados. Este es el de burbuja:

http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja

En resumen. Tienes un vector A unidimensional de n posiciones. Coges un elemento j  y compruebas si para j+1 A(j+1)<A(j). En caso positivo intercambias posiciones y continuas. Recorres el vector para cada uno de los elementos i (te aseguras de ordenarlos todos).

for(i=0; <n; i++){
    for(j=0; j<n-1; j++){
          if(A[j]>A[j+1]){
                x = A[j];
                A[j] = A[j+1];
                A[j+1] = x;
           }
     }
}

no te mentire, suena muy interesante, pero prefiero ir con algo que entiendo mas por ahora... ademas el tiempo que tengo debido a las clases es casi nulo :s

40
C# / Re:Ordenar strings en un archivo texto
« en: Martes 13 de Marzo de 2012, 02:59 »
Bueno, aquí te paso lo que para mí es la mejor solución.

Tomando en cuenta el ejemplo que me pasaste, cree un archivo "ordenar.txt"  con el siguiente contenido:
90 1 .......
84 3 .......
12 2 .......
90 2 .......
84 2 .......
84 1 .......
90 3 .......
12 3 .......
12 2 .......

entonces procedemos a ordenarlo.. :)

Código: C#
  1.  
  2.             string[] Lineas = System.IO.File.ReadAllLines(Application.StartupPath + "\\ordenar.txt");
  3.          
  4.             IEnumerable<string> ordenar = Lineas.OrderBy(orde => orde);
  5.  
  6.             foreach (string x in ordenar)
  7.             {
  8.                 richTextBox1.Text += x + (char)13;
  9.             }
  10.  

El resultado lo voy almacenando en un richTextBox como puedes observar, en tú caso recorres el vector ordenar y usas el StreamWriter para crear tú archivo. :) ...

Puedes apoyarte leyendo aquí: http://msdn.microsoft.com/es-es/library/bb534852.aspx , yo utilice el OrderBy (http://msdn.microsoft.com/es-es/library/bb534966.aspx)

Saludos espero te sirva.

eso debe ser lo que oí, Muchisimas gracias  :jumpie:, el fin de semana quizas te traiga la respuesta, por ahora descargare las paginas que no tengo internet todos los dias  :nosweat:

41
C# / Re:Como leer temperatura procesador ??
« en: Lunes 12 de Marzo de 2012, 03:04 »
U2_Caparzo, por lo general si trae ese tipo de monitoreo, al menos en las computadoras actuales si alcanzan cierta temperatura se apagan por protección (no digo que todas las traigan) pero en la mayoría de las computadoras y portátiles en el BIOS es posible leer ese dato, sin embargo no sé como obtenerlo en algún lenguaje de programación.

lo primero si me he percatado, mi laptop se apaga sola(es que ya esta viejita :$) ¿pero sera posible que solo sea como sistema de seguridad mas que algo que pueda ser usado por el usuario de la computadora? a mi parecer no parece una mala opcion a tomar en cuenta... pero bueno en mi caso es solo una teoria debido a que no tengo un amplio conocimiento sobre hardware y en programacion solo estoy empezando en C#

42
C# / Re:Ordenar strings en un archivo texto
« en: Lunes 12 de Marzo de 2012, 02:52 »
Si pudieras poner un ejemplo del archivo que quieres leer y del RESULTADO que quieres obtener me ayudaría un poco más a comprender.... no entendí del todo lo que deseas hacer....

Saludos!
es que tocaria subir los 2 archivos pero como dije estoy en otro pc, pero mira

son los 2 primeros numeros los importantes (ID y Plus respectivamente) los otros dan lo mismo.
el archivo por ejemplo es asi
(AGREGARE PUNTOS PARA DECIR QUE LO OTRO NO ES IMPORTANTE Y ASI AHORRO TIEMPO)
supongamos que esta asi pero a una escala mayor...

90 1 .......
84 3 .......
12 2 .......
90 2 .......
84 2 .......
84 1 .......
90 3 .......
12 3 .......
12 2 .......

el resultado que quiero es esto

12 1 .....
12 2 ......
12 3 ......
84 1 .....
84 2 .....
84 3 .....
90 1 .....
90 2 ......
90 3 .....

de la manera que lo hice funciona pero tarda demasiado, uso 3 foreach y un for, y el archivo tiene mas de 2000 lineas, entonces es obvio el porque tarda, el resultado obviamente es el que dije anteriormente pero de una manera mas eficiente

gracias por la ayuda :D

43
C# / Re:Como leer temperatura procesador ??
« en: Lunes 12 de Marzo de 2012, 00:23 »
no se puede, si algun computador tuviera ese tipo de "termometro" en el procesador, ya traeria implementado un monitor para eso, lo que tratas de hacer es como captar wi-fi desde un pc que no tiene esa opcion, por tener un software que capte wi-fi, si no esta el hardware, no captara wi-fi.

44
C# / Re:Progressbar al momento de hace una consulta a base de datos
« en: Lunes 12 de Marzo de 2012, 00:15 »
Algo rara tu pregunta, me imagino que la base de datos esta en SQL, suponiendo que quieres leer toda una tabla, podrias hacer que el valor maximo del progressbar sea igual a la cantidad de lineas que tiene la tabla(progressBar1.Max = nose como hacer lo sgt) y luego algo como

for (ushor i = 0; i <= la cantidad de lineas; i++)
{
    //aqui asignas los valores que leeras de la base de datos
    progressBar1.Increment(1);
}

puedes buscar en google como saber la cantidad de lineas que tiene la tabla, aunque si siempre tienes que leer toda la tabla ¿no seria mejor usar un archivo de texto? SQL es mas rapido en consultas y en buscar determinado dato, porque para eso esta hecha, osea en teoria

Si quieres hacer por ejemplo algo con varias cuentas y quieres comprobar por ejemplo la password es mejor SQL

si quieres por ejemplo llenar un array, usar una coleccion, o lo que sea pero usar todos los datos, es mejor tener archivos de texto, ya sean simples como archivos comunes, hechos con binary writer o como desees.

45
C# / Ordenar strings en un archivo texto
« en: Domingo 11 de Marzo de 2012, 22:44 »
Hola a todos, primero que nada, me presento, soy rodrigo cordova, uso el nick de U2_Caparzo, actualmente soy estudiante de 17 años(estoy en mi ultimo año del liceo) y uno de mis intereses es continuar como estudiante de ingenieria informatica.
Paso bastante tiempo, editando un servidor de un juego(conquer), los cuales todos estan escritos en C#. Vine a este foro, porque en el foro que participaba en desarrollo de estos servidores, no hay nadie que tenga grandes conocimientos, de hecho yo escribi algo basico para que algunos aprendieran de C#.

Bueno ahora al grano.

El otro dia, estuve tratando de ordenar un archivo de texto llamado ItemAdd.ini
el archivo solo son numeros por ejemplo

123510 12 4214 32141 421421 4213 5436 534 12

los 2 primeros numeros son los que estoy tratando de ordenar, o sea que a partir de esos trato de ordeanr el archivo

el primer numero se repite siempre 12 veces
por ejemplo
123510 1 ......
123510 2 ......

ahora, estan todos desordenados, asi que lo que hice fue 2 maneras de ordenarlo que es por el primer numero o el segundo numero.

Les proveere el codigo que estoy usando, como estructura generalizada, porque no me encuentro en mi Laptop y no tengo C# aca.

se que obviamente la ineficiencia esta en el uso masivo de ciclos asi que esperaria algo de ayuda con eso.

bueno, lo que hice fue esto

tengo un List<string> llamado IDsque almacenara todas las ID (primer numero) y un byte llamado Maximo plus = 12; (el maximo base del segundo numero)

creo un array de strings de todas las lineas con File.ReadAllLines

luego
foreach(string linea in lineas)//lineas es el array anterior
{
string[] sp = linea.Split(' ');
if(!IDs.Contains(sp[0]))
    IDs.Add(sp[0]);
if(Maximo < byte.Parse(sp[1]))
   Maximo = byte.Parse(sp[1]);
}

entonces aqui viene lo feo, son 3 ciclos en total... por cierto cree un stringbuilder sb

foreach(string ID in IDs)//el List<string> que cree antes
{
    for(byte i = 1; i <= Maximo; i++);
       {
        foreach(string linea in lineas)//del array al leer el archivo
             {
                if(Line.StartsWith(ID + " " + i.ToString() + " ")/*agrego un espacio al final porque el 1 se repetiria en 1, 10, 11, y 12, etc...*/
                         sb.AppendLine(linea);
             }
       }
}

y luego escribo el stringbuilder al archivo con StreamWriter.

lo que pasa es que tarda mucho ademas de que usa bastante memoria, asi que algo de guia con esto se los agradeceria demasiado. he escuchado algo de OrderBy en List<> pero no entendi mucho como usarlo

gracias por adelantado

Páginas: 1 [2]