Foro Oficial de C#

un paso a la vez... vuelve luego cuando los detectes

ese es el problema, ke estoy trabado en este punto porke no se ke puede estar pasando, el resto de la aplicacion funciona perfectamente, solo en esto de manejo de archivos es ke me "atasco" porke no se usarlos muy bien, si por mi fuese aplicaba una base de datos sencilla ^^ pero el asunto es hacerlo con archivos :S
 
ese es el problema, ke estoy trabado en este punto porke no se ke puede estar pasando, el resto de la aplicacion funciona perfectamente, solo en esto de manejo de archivos es ke me "atasco" porke no se usarlos muy bien, si por mi fuese aplicaba una base de datos sencilla ^^ pero el asunto es hacerlo con archivos :S

postea los nuevos problemas
 
Si, pero dentro de esa carpeta debe haber un archivo que se llama "ProyectoJuego.cs" y que está faltando. Supongo que es el formulario donde está la funcionalidad principal del juego.

Saludos
 
He revisado el código donde guardas y veo algunas cosillas que corregir

La función constructora del StreamWriter tiene una sobrecarga en la que recibe un segundo argumento de tipo booleano que sirve para indicar si al momento de escribir en el archivo, el archivo se trunca (es decir, se borra todo su contenido y es reemplazado por el contenido nuevo) o se añade el contenido al final de este. Lo que necesitas es que el contenido se añada al final del archivo, no que reemplace lo que ya contiene el archivo. por eso manda ese argumento como "True"

Algo asi:
Código:
StreamWriter sw = new StreamWriter(@"D:\pptptj.txt", True);


Hay otras cosillas más, pero prueba esto primero.
 
  • Me gusta
Reacciones: 2 personas
He revisado el código donde guardas y veo algunas cosillas que corregir

La función constructora del StreamWriter tiene una sobrecarga en la que recibe un segundo argumento de tipo booleano que sirve para indicar si al momento de escribir en el archivo, el archivo se trunca (es decir, se borra todo su contenido y es reemplazado por el contenido nuevo) o se añade el contenido al final de este. Lo que necesitas es que el contenido se añada al final del archivo, no que reemplace lo que ya contiene el archivo. por eso manda ese argumento como "True"

Algo asi: StreamWriter(@"D:\pptptj.txt", True);

Hay otras cosillas más, pero prueba esto primero.
bueno al inicio lo tenia asi, pero dejame probar y te comento, gracias de antemano
 
He revisado el código donde guardas y veo algunas cosillas que corregir

La función constructora del StreamWriter tiene una sobrecarga en la que recibe un segundo argumento de tipo booleano que sirve para indicar si al momento de escribir en el archivo, el archivo se trunca (es decir, se borra todo su contenido y es reemplazado por el contenido nuevo) o se añade el contenido al final de este. Lo que necesitas es que el contenido se añada al final del archivo, no que reemplace lo que ya contiene el archivo. por eso manda ese argumento como "True"

Algo asi:
Código:
StreamWriter sw = new StreamWriter(@"D:\pptptj.txt", True);


Hay otras cosillas más, pero prueba esto primero.

jajajaj no se ke paso, mira ke le puse la sobrecarga del "true" y ya me guarda nuevos registros sin reemplazar los anteriores!!! lo interesante es ke antes no lo hacia y lo tenia con la sobrecarga :S sera ke no lo guardaba por lo del this.close()??
 
ahora lo tengo asi, y si me guarda, sin embargo si tienen algunas sugerencias las escucho ansioso, muchisimas gracias por su ayuda!

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.IO;

namespace EjercicioCS
{
public partial class WinnerForm : Form
{
public WinnerForm()
{
InitializeComponent();
}

StreamWriter sw = new StreamWriter(@"D:\pptptj.txt", true);
String [] result = new String [5];
int cont = 0;

private void btn_winner_MouseClick(object sender, MouseEventArgs e)
{
if (cont < 5)
{
result[cont] = txt_Ganador.Text+" "+lwin1.Text + "/" + lwin3.Text;
for (int x = 0; x <= cont; x++)
{
sw.WriteLine(result[x]);
}
}
sw.Close();
this.Hide();
cont++;
}

}
}
 
Bien. Asi como está te va a guardar a todos los ganadores, pero no seleccionará a los 5 puntajes más altos. Para ello debes aplicar una lógica más o menos así:

1. Leer todo el archivo y guardar los datos de los jugadores con sus puntajes en un array.
2. Ordenar los jugadores según su puntaje de mayor a menor
3. Tomar los 5 primeros registros del array
4. Borras el archivo de puntajes.
5. Creas un nuevo archivo y guardas en él los 5 primeros registros que seleccionaste

Ojalá supieses LinQ, es una bendición, y te ayuda a hacer rapidísimo lo que necesitas, es más, con LinQ haces los pasos 2 y 3 en uno sólo.

Saludos

Edit: por cierto, ese for en el guardado del contenido en el archivo te está sobrando, ya que no hace nada relevante.
 
  • Me gusta
Reacciones: 2 personas
Bien. Asi como está te va a guardar a todos los ganadores, pero no seleccionará a los 5 puntajes más altos. Para ello debes aplicar una lógica más o menos así:

1. Leer todo el archivo y guardar los datos de los jugadores con sus puntajes en un array.
2. Ordenar los jugadores según su puntaje de mayor a menor
3. Tomar los 5 primeros registros del array
4. Borras el archivo de puntajes.
5. Creas un nuevo archivo y guardas en él los 5 primeros registros que seleccionaste

Ojalá supiese LinQ, es una bendición, y te ayuda a hacer rapidísimo lo que necesitas, es más, con LinQ haces los pasos 2 y 3 en uno sólo.

Saludos

Edit: por cierto, ese for en el guardado del contenido en el archivo te está sobrando, ya que no hace nada relevante.

eso mismo habia pensado, es mas inicialmente tenia una matriz en la ke el nombre estaba guardado en una columna y el puntaje en otra porke habia pensado en poder ordenarlas para luego mostrarlas...pero como tenia el problema de ke no me guardaba sino una sola linea pues intente ahcerlo con algo mas sencillo
 

Los últimos temas