Вывод нужной строки

Тема в разделе ".NET", создана пользователем Belka, 18 дек 2004.

Статус темы:
Закрыта.
  1. Belka

    Belka Гость

    Кто знает, подскажите.
    На фрме есть кнопка при ее нажатии программа должна открыть файл и считать оттуда нужную строку с выводом этой строки в ToolBox.Text.

    Пример файла:
    #1
    blabla bum
    #2
    tok tuk
    #3
    .....

    В зависимости от выбора в форме 1,2,3 и т.д. должна быть выведена соответствующая строка.
    За ранее спасибо.
     
  2. Dr.Gigabit

    Dr.Gigabit Гость

    Что-то вроде такого:

    Код (Text):
    using System;
    using System.IO;

    class Test
    {
       public static void Main()
       {
           try
           {
               // Create an instance of StreamReader to read from a file.
               // The using statement also closes the StreamReader.
               using (StreamReader sr = new StreamReader("TestFile.txt"))
               {
                   String line;
                   // Read and display lines from the file until the end of
                   // the file is reached.
                   int i = 0;
                  while ((line = sr.ReadLine()) != null)
                   {
                        i++;
                        if (i == index) // index - нужная нам строка
                         Console.WriteLine(line); // выводим на экран или проводим другие манипуляции
                   }
               }
           }
           catch (Exception e)
           {
               // Let the user know what went wrong.
               Console.WriteLine("The file could not be read:");
               Console.WriteLine(e.Message);
           }
       }
    }
    А вообще, может вам в сторону XML посмотреть? Уж очень коряво так делать с текстовым файлом
     
  3. Belka

    Belka Гость

    Спасибочки! Попробую. Но мне нужно именно так, да и в XML нет времени разбираться.
    Еще раз 10tnx.
     
  4. Belka

    Belka Гость

    Еще раз огромное спасибо. Еще один вопросик. В файле идет строка: парам парам парам... Я ее передала в ToolBox.Text, но она выводится целой строкой и приходится подбирать пробелы. Нужно:
    парам
    парам
    парам...
    Пробовала вставлять в середину текста \r\n, но почему-то не пошло. Не подскажите, а?
     
  5. Dr.Gigabit

    Dr.Gigabit Гость

    А как вставляли-то? ;)

    Код в студию!
     
  6. Dr.Gigabit

    Dr.Gigabit Гость

    А вообще вот такой вариант можете попробовать


    Код (Text):
    #region Using directives

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Text.RegularExpressions;

    #endregion

    namespace ConsoleApplication1
    {
       class Program
       {
           static void Main(string[] args)
           {
               Regex regex = new Regex(@" "); // здесь регулярное выражение для поиска разделителей. В нашем случае пробел
               string[] parts = regex.Split("парам парам парам");
               foreach (string part in parts)
                   Console.WriteLine(part);
           }
       }
    }
     
  7. Belka

    Belka Гость

    Спасибо. Но что-то меня это смусщает.

    using(StreamReader sr=new StreamReader(m_strPath+h+".txt", Encoding.GetEncoding("windows-1251")
    {
    int y=0;
    while((line=sr.ReadLine())!=null)
    {
    y++;
    if(y==j)
    tBox1.Text=line;
    }
    }

    Вот мой кусок. В line лежит строка "парам парам парам" и ее-то и нужно, когда я ее запихиваю в ToolBox.Text, что бы она выводилась уже как:
    парам
    парам
    парам...
     
  8. Dr.Gigabit

    Dr.Gigabit Гость

    А что конкретно смущает? RegExp'ы? C ними нужно дружить;)

    А что такое j? В приведенном коде я не вижу места которое разделяет строку на подстроки...Я имел ввиду, что бы вы привели именно эту часть вашего кода
     
  9. Belka

    Belka Гость

    j - это переменная которая обрабатывается еще и при выводе изображения. В зависимости от ее значения выводится соответствующая картинка, соответственно к картинке выводится соответствующая строка (парам парам парам)из текстовика. Но вот эта строка и должна отображатся не как одна целая, а разбившись на три строки
    парам
    парам
    парам...
    ;)
     
  10. Dr.Gigabit

    Dr.Gigabit Гость

    А чем мой код не подходит? Если строка валидная, т.е разбивать нужно только по пробелам... Если могут быть еще какие-то разделители - с регулярными выражениями пошаманить;)
     
  11. Belka

    Belka Гость

    Паси!!!! ;)
     
  12. Belka

    Belka Гость

    ;) Не идет, выводит только последний "парам" из трех, а не все три, но в столбик. Я их разделила табом
    Код (Text):
    Regex regex=new Regex(@"    ");//
    using(StreamReader sr=new StreamReader(m_strPath+h+".txt", Encoding.GetEncoding("windows-1251")))
    {
     int y=0;
     while((line=sr.ReadLine())!=null)
     {
        y++;
        if(y==j)
        {
      string[] parts=regex.Split(line);//
      foreach(string part in parts)//
      tBox1.Text=part;//line
        }
     }
    }
     
  13. Dr.Gigabit

    Dr.Gigabit Гость

    Конечно, последний, т.к у вас tBox1.Text в цикле присваиватеся каждый раз новый;)

    Нужно вот так tBox1.Text += part; // можно tBox1.Text += Enviroment.Nevline; tBox1.Text += part;
     
  14. Belka

    Belka Гость

    Вот я тормоз. ;) Это наверно от переутомления.
    Только я не поняла, что это такое Enviroment.Nevline. В хэлпе у меня этого нет. У меня VS 2003 и там такого почему-то нет.
     
  15. Dr.Gigabit

    Dr.Gigabit Гость

    Сорри, Environment.NewLine - аналог "\r\n".
    Для переносимости между платформами :D
     
  16. Belka

    Belka Гость

    А почему если в программе в переменную я внесу "\r\n", то все сработает. А вот если из текстового файла в переменную загнать строку с "\r\n", то ничего не работает? Странно ведь для компилятора по идее, что одна переменная, что вторая должны быть одинаковые.
     
  17. Dr.Gigabit

    Dr.Gigabit Гость

    Сорри не понял, что значит работает и не работает. Можно пример?
     
  18. Belka

    Belka Гость

    Ну когда в самой программе я указываю к примеру:
    public string foo="boom\r\nhuum\r\npoom";
    toolBox1.Text=foo;
    то выведется:
    boom
    huum
    poom
    А если я в текстовом файле напишу:
    boom\r\nhuum\r\npoom
    Потом эту строку передам в переменную foo (public string foo;)
    и сделаю toolBox1.Text=foo; то выведится boom\r\nhuum\r\npoom
    Почему? Ведь и в первом и во втором случае значение foo одинаковое.
     
  19. Dr.Gigabit

    Dr.Gigabit Гость

    Нет, на самом деле \n - это управляющий символ, интерпретация его зависит от операционной системы. Т.е допустим, для MS-DOS \n это OxOD(возврат курсора) и OxOA(перевод строки) При чтении такого файла каждое вхождение этой пары байт заменяется на '\n'
     
  20. Belka

    Belka Гость

    Это я знаю, но почему когда из файла я загнала строку с этими управляющими символами, они не отработались, а вывелись на экран? Мне надо, чтоб было на оборот.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей