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)
| | | |-+  Ayudilla para archivos C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayudilla para archivos C#  (Leído 2,957 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Ayudilla para archivos C#
« en: 17 Abril 2015, 20:47 pm »

Código
  1. StreamReader reader = new StreamReader(directorio + "\\Temas.txt");
  2.                StreamReader readel = new StreamReader(directorio + "\\Respuestas.txt");
  3.  
  4.                if (aleatoriedad == 1)
  5.                {
  6.                    int i=0;
  7.                    while (reader.Peek()>=0)
  8.                    {
  9.                        linea = reader.ReadLine();
  10.                        mensaje = readel.ReadLine();
  11.                        if(mensaje=="")//reinicia el puntero al inicio
  12.                        {
  13.                            readel.BaseStream.Position = 0;
  14.                            readel.DiscardBufferedData();
  15.                        }
  16.                        MessageBox.Show("LINEA: "+linea+ "MENSAJE: "+mensaje);
  17.                    }
  18.                    reader.Close();
  19.                    readel.Close();

La primera iteracion lee la primera linea de los archivos correctamente, pero luego no funciona ¿?? que pasa, es horrible programar para archivos en C#, luego se quejan de C.

Gracias socios.


« Última modificación: 17 Abril 2015, 22:53 pm por kub0x » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
Re: Ayudilla para archivos C#
« Respuesta #1 en: 17 Abril 2015, 21:48 pm »

Código
  1. while (reader.Peek()>=0)

----------->

Código
  1. while ((reader.Peek() != -1))
  2. {
  3.    linea = reader.ReadLine();
  4.    using (StringReader sr = new StringReader(linea))
  5.    {

Yo siempre lo trabajé así. Prueba!


« Última modificación: 17 Abril 2015, 21:50 pm por wiD^ » En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: Ayudilla para archivos C#
« Respuesta #2 en: 17 Abril 2015, 22:53 pm »

Mejor comprueba la propiedad "EndOfStream" del objeto StreamReader ya que nos indica si llegamos al EOF o final del archivo.

Código
  1. while (!reader.EndOfStream) //Mientras no hayamos llegado al final del archivo
  2.    Console.WriteLine(reader.ReadLine()); //Imprimos una línea

es horrible programar para archivos en C#, luego se quejan de C.

Perdona grrr pero no hables sin saber ;D En C todo es más primitivo, otra cosa sería C++ aun así comparándolo con C# es inferior en funcionalidad nativa o "por defecto" ya que el Framework te abstrae de muchos procesos que en C++ no están implementados (se arregla descargando libs de terceros o implementando dichas funcionalidades tu mismo). Ojo que programo más en C++ que en .NET (VB/C#) pero C# por defecto te trae una gran cantidad de librerías directas para usar ;)

Saludos.
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: Ayudilla para archivos C#
« Respuesta #3 en: 17 Abril 2015, 23:00 pm »

es horrible programar para archivos en C#, luego se quejan de C.

¿Te das cuenta que basas tu crítica en el desconocimiento del lenguaje?, no es cierto lo que dices, para ti es "horrible" solamente por que no sabes cómo hacerlo, eso no significa que sea más dificil que en C/C++, y además, hay formas más simples para leer un archivo de cómo lo estás intentando, pero no puedo mostrártelo sin saber exactamente que intentas hacer con 2 archivos al mismo tiempo.

Si quieres leer un archivo de principio a fin, linea por linea, en lugar de basar tu evaluación en el siguiente caracter, utiliza el loop para evaluar la propiedad StreamReader.EndOfStream

Código
  1. string themFilepath = Path.Combine(dirPath, "Temas.txt");
  2. string respFilepath = Path.Combine(dirPath, "Respuestas.txt");
  3.  
  4. string themLine = string.Empty;
  5. string respLine = string.Empty;
  6.  
  7. StreamReader themSR = new StreamReader(themFilepath);
  8. StreamReader respSR = new StreamReader(respFilepath);
  9.  
  10. while (!(themSR.EndOfStream)) {
  11.  
  12.    themLine = themSR.ReadLine;
  13.    respLine = respSR.ReadLine;
  14.  
  15.    // ...
  16.  
  17. }
« Última modificación: 17 Abril 2015, 23:10 pm por Eleкtro » En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Ayudilla para archivos C#
« Respuesta #4 en: 18 Abril 2015, 00:48 am »

Bueno gracias por las respuestas, si antes lo tenia asi con el EndOfStream, estuve cambiando bastante código y pensé que era fallo del bucle por eso lo cambie.

Mirad!!! Me pasa una cosa muy curiosa, como pensaba que el fallo que os voy a explicar ahora era tema del StreamReader hice el siguiente code:

Código
  1. FileStream readerTemas = new FileStream(directorio + "\\Temas.txt", FileMode.Open, FileAccess.Read);
  2.            FileStream readerRespuestas = new FileStream(directorio + "\\Respuestas.txt", FileMode.Open, FileAccess.Read);do
  3.                {
  4.                    Random r = new Random(DateTime.Now.Millisecond);
  5.                    URL = ""; respuesta = "";
  6.                    do
  7.                    {
  8.                        caracter = (char)(byte)readerTemas.ReadByte();
  9.                        if (caracter == '\n')
  10.                            break;
  11.                        URL += caracter;
  12.                    } while (caracter != '\n');
  13.                    do
  14.                    {
  15.                        caracter = (char)(byte)readerRespuestas.ReadByte();
  16.                        if (caracter == '\n')
  17.                            break;
  18.                        respuesta += caracter;
  19.                    } while (caracter != '\n');
  20.  
  21.                    MessageBox.Show("url: " + URL + Environment.NewLine + "respuesta:" + respuesta);

Y bien es gracioso, funciona igual que lo hacía el streamreader, con el fallo igual.

La primera ejecucion muestra la primera linea de cada archivo, la segunda muestra nada en URL, y en respuesta si hay contenido, la tercera muestra contenido en URL (el de la segunda linea) y hay contenido en respuesta respectivo a su iteracion del bucle, la cuarta URL no muestra nada, y respuesta sigue mostrandose de acuerdo a su linea.

En fin Temas.txt recoge el contenido de la linea solo en las interacciones impares, y en Respuestas.txt funciona con normalidad WTF, este error lo llevaba arrastrando de tiempo y no sabia como solucionarlo, por eso deje de lado el StreamReader y pase a filestream pero ocurre igual.

El archivo solo se usa ahi para lectura, las demas veces que se una se cierra bien y su contenido con lineas con urls, pero al leer solo le lee en impares no se porque  :rolleyes: :rolleyes: :-*

Con el streamreader para solucionar ese error hice lo siguiente:

Código
  1. while (!reader.EndOfStream)
  2.                {
  3.                    j++;
  4.                    if (j % 2 == 0)
  5.                    {
  6.                        linea = reader.ReadLine();
  7.                        linea = reader.ReadLine();
  8.                    }
  9.                    else
  10.                    {
  11.                        linea = reader.ReadLine();
  12.                    }
  13.                    mensaje = readel.ReadLine();
  14.                    if (linea == "" || mensaje == "")
  15.                    {
  16.                        break;
  17.                    }
  18.  

edito: en lo de C# que es dificil y tal que es mejor C, pues que queréis que os diga mirad como se abre un fichero en C 2 lineas, y en C# tambien 2 lineas pero otros tantas opciones y instancias para abrirlos que lo hacen muy engorroso todo, si fuese C no tendría estos probleas, puede que sea por desconocimiento, pero eso de using, buffers.... en fin para mi lo hace muy complejo aunque mas completo.

Gracias por estar ayudando gente <3
« Última modificación: 18 Abril 2015, 00:58 am por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
servidor para subir y descargar archivos a pequeña escala para prototipo
Redes
aztecashflow 1 2,887 Último mensaje 23 Enero 2012, 20:58 pm
por el-brujo
ayuda para Reparar archivos de un DVD que cambio de formato a mis archivos
Multimedia
Maxlej 1 3,671 Último mensaje 5 Junio 2013, 16:29 pm
por Eleкtro
Una ayudilla de redes ;3
Redes
WIитX 3 2,201 Último mensaje 12 Octubre 2013, 03:22 am
por tiestsodeejay
Aplicación para administrar archivos en mis carpetas. (Para cambiar sus nombres)
Software
hackmastter 5 2,707 Último mensaje 19 Febrero 2015, 20:33 pm
por Orubatosu
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines