С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/154: Рейтинг темы: голосов - 154, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 09.01.2010
Сообщений: 13
1

Чтение текста построчно

09.01.2010, 14:20. Показов 29339. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Хочу попросить вашей помощи.

На данный момент я учусь работать с текстом в visual basic и не могу разобраться с чтением текста построчно.
Главной моей целью является чтение нужной мне строки в текстовом документе.

Допустим на форме кнопка и текстбокс, имеется текстовый документ на диске D:, в нем текст, состоящий из нескольких строк. Как сделать, чтобы я мог прочитать нужную мне строку в документе?

Пока такое накалякал, но с этим кодом я могу прочитать только первую строку документа...
VB.NET
1
2
3
4
5
6
7
8
9
10
Imports System
Imports System.IO
Imports System.Text
Public Class Form1
    Dim path As String = "D:\1.txt"
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sr As StreamReader = New StreamReader(path)
        TextBox1.Text = sr.ReadLine()
    End Sub
End Class
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2010, 14:20
Ответы с готовыми решениями:

Чтение Richtextbox построчно
Вообщем надо когда я обращаюсь к этой функции он мне сначала возвратит первую строку RichTextBox2,...

Чтение файла произвольного доступа построчно
У меня есть файл с записями. Мне надо считать оттуда информацию. Файл открыт для произвольного...

Чтение txt файла построчно с поиском информации
Пересмотрел все варианты такого вопроса на форуме, ответа для себя не нашел, или не понял... ...

Чтение из файла построчно и заполнение полей окна стороннего приложения
Привет уважаемые форумчане. Нужна ваша помощь. Нужно чтобы прога читала текстовый файл и вписывала...

19
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
09.01.2010, 16:41 2
VB ? (какой учиш ?)
0
1 / 1 / 0
Регистрация: 09.01.2010
Сообщений: 13
10.01.2010, 15:35  [ТС] 3
VB,ну всмысле обычную программу делаю, windows forms приложение, в студии 2008 пишу

Добавлено через 20 часов 52 минуты
товарищи, может поможете?
а то прям горит, не знаю, что и сделать
0
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
10.01.2010, 16:11 4
Вопросы по vb.net обсуждаются в разделе vb.net! Этот раздел для более ранних версий vb.

Читать построчно можно с помощью циклов. Например нам нужно считать третью строку, ставим в цикле условие, увеличиваем переменную счётчик на единицу с каждым проходом цикла. Вот пример
Код
Imports System
Imports System.IO
Imports System.Text
Public Class Form1
    Dim path As String = "D:\1.txt"
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sr As StreamReader = New StreamReader(path)
        Dim i As Integer, st As String
        While sr.Peek <> -1
            i = i + 1
            st = sr.ReadLine()
            If i = 3 Then
                TextBox1.Text = st
                Exit While
            End If
        End While
    End Sub
End Class
3
1 / 1 / 0
Регистрация: 09.01.2010
Сообщений: 13
10.01.2010, 23:37  [ТС] 5
спасибо огромное, сам бы не догадался

Добавлено через 6 часов 51 минуту
Цитата Сообщение от Abu Посмотреть сообщение
Вопросы по vb.net обсуждаются в разделе vb.net! Этот раздел для более ранних версий vb.
я учту на будущее обязательно, но чтобы не создавать новую тему, задам вопрос здесь

теперь мне требуется запись в файл аналогичным методом
я добавил новый текстбокс на форму и новую кнопку, в нужную мне строку (допустим, ту же 3ю) мне нужно сделать запись, или перезаписать ее, как это можно реализовать?
0
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
12.01.2010, 23:59 6
Вообще там есть какие-то классы StringWrite и StringReader, может они как-то особенно приспособлены к работе со строками, я не знаю, почитай про них.

А вообще, если на вскидку, то можно прочесть весь файл в массив строк и потом его перезаписать, предварительно заменив нужный элемент (строку) на другой. Вот пример:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Imports System
Imports System.IO
Imports System.Text
Public Class Form1
    Const fpath As String = "D:\1.txt"
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim sr As StreamReader
        Dim sw As StreamWriter
        Dim i As Integer
        Dim myStr() As String
        sr = New StreamReader(fpath)
        While sr.Peek <> -1
            ReDim Preserve myStr(i)
            myStr(i) = sr.ReadLine()
            i = i + 1
        End While
        sr.Close()
        If UBound(myStr) > 1 Then
            myStr(2) = TextBox2.Text
        Else
            MessageBox.Show("В файле меньше трёх строк")
        End If
        sw = New StreamWriter(fpath, append:=False)
        For i = 0 To UBound(myStr)
            sw.WriteLine(myStr(i))
        Next
        sw.Close()
    End Sub
End Class
1
1 / 1 / 0
Регистрация: 09.01.2010
Сообщений: 13
13.01.2010, 00:16  [ТС] 7
Abu, спасибо, пока остановлюсь на этом
0
1 / 1 / 0
Регистрация: 09.01.2010
Сообщений: 13
24.01.2010, 23:30  [ТС] 8
продолжая тему о работе с текстом...
прошу помочь в написании программы, все-таки с текстом у меня очень плохо получается работать

дан текстовый файл, весь скидывать не буду, он только началом отличается
Код
FILTER COEFFICIENT FILE
FIR DESIGN          FLOATING POINT
SAMPLING FREQUENCY          0.480000E+04 HERTZ
 165                  /* number of taps in decimal     */
  A5                  /* number of taps in hexadecimal */
52                    /* number of bits in quantized coefficients (dec) */
  34                  /* number of bits in quantized coefficients (hex) */
  -.642129873076298629E-03 /* coefficient of tap     0 */
  -.560033975466793698E-04 /* coefficient of tap     1 */
  -.381133597147477765E-04 /* coefficient of tap     2 */
  -.594365237180810979E-05 /* coefficient of tap     3 */
  0.405613073489667108E-04 /* coefficient of tap     4 */
  0.999964924689411560E-04 /* coefficient of tap     5 */
  0.170656072131723579E-03 /* coefficient of tap     6 */
  0.249187338231350929E-03 /* coefficient of tap     7 */
  0.331942835944786018E-03 /* coefficient of tap     8 */
  0.413768378715354234E-03 /* coefficient of tap     9 */
  0.489388414161999474E-03 /* coefficient of tap    10 */
  0.552613722131336526E-03 /* coefficient of tap    11 */
  0.597475287015015332E-03 /* coefficient of tap    12 */
  0.617715943664768474E-03 /* coefficient of tap    13 */
  0.608168734097766083E-03 /* coefficient of tap    14 */
  0.563954681956901282E-03 /* coefficient of tap    15 */
  0.482105882662034979E-03 /* coefficient of tap    16 */
  0.360640167333129557E-03 /* coefficient of tap    17 */
  0.200227444284579503E-03 /* coefficient of tap    18 */
  0.303631944929939745E-05 /* coefficient of tap    19 */
  -.225645890793383108E-03 /* coefficient of tap    20 */
... и так далее до 165 коэффициентов
все эти коэффициенты (которых 20 штук снизу) мне нужно записать в отдельный массив

то есть мне нужно открыть тектовый файл, прочитать эти коэффициенты (также желательно кроме коэффициентов частоту дискретизации (sampling frequency) и общее число коэффициентов (number of taps in decimal) тоже хотелось бы в отдельную переменную вынести)

начал просто заниматься цифровой обработкой сигналов, встал вопрос написания программы-фильтра сигналов, собственно пока загвоздка только в этом

буду очень благодарен в помощи
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
25.01.2010, 17:38 9
Я точно не знаю, что тебе надо но попробуй следующий код (создается массив из двадцати элементов)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub Main()
 
        Dim i As Integer = 0
        Dim rr As New StreamReader("Имя файла с данным текстом")
        Dim ft As String
        Dim text(i) As String
        Dim reg As New Regex("(-.|0.)(\w{10,})(\p{P})(\w{2,})")
        Dim sw As New StreamWriter("Здесь имя файла куда надо записать массив")
 
        While rr.Peek() > -1
            ft = rr.ReadLine()
            Dim mat As Match = reg.Match(ft)
 
            If mat.Success Then
                ReDim Preserve text(i)
                text(i) = mat.Value.ToString
                Console.WriteLine(" {0} element - {1}", i, text(i))
                sw.WriteLine(i & " element " & text(i))
                i = i + 1
            End If
 
        End While
        sw.Flush()
        sw.Close()
 
        Console.ReadLine()
    End Sub
0
2 / 2 / 1
Регистрация: 16.08.2011
Сообщений: 76
03.04.2012, 13:23 10
Скажите, пожалуйста как можно чтение текста построчно таким образом: в textBox записать либо первые три строчки, или вторые три строчки, или т.д. где строчек может быть до 300.
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
03.04.2012, 13:30 11
Цитата Сообщение от Lilek Посмотреть сообщение
Скажите, пожалуйста как можно чтение текста построчно таким образом: в textBox записать либо первые три строчки, или вторые три строчки, или т.д. где строчек может быть до 300.
Класс StreamReader метод ReadLine
0
Почетный модератор
21415 / 9150 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
03.04.2012, 13:31 12
Lilek, https://www.cyberforum.ru/post1942265.html
1
96 / 96 / 3
Регистрация: 01.12.2011
Сообщений: 94
03.04.2012, 13:48 13
если правильно понял, любая строка из 300 должна зайти в текстбокс, то вот решение:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim generator As New Random
        Dim кол_строк = 300
        TextBox1.Text = построчно(generator.Next(1, кол_строк))
        TextBox2.Text = построчно(generator.Next(1, кол_строк))
        TextBox3.Text = построчно(generator.Next(1, кол_строк))
    End Sub
    Function построчно(ByVal g As Integer) As String
        Dim sr As System.IO.StreamReader = New System.IO.StreamReader(My.Application.Info.DirectoryPath & "\файл_с_строками.txt")
        Dim i As Integer, st As String
        While sr.Peek <> -1
            i = i + 1
            st = sr.ReadLine()
            If i = g Then
                Return st
                Exit While
            End If
        End While
    End Function
1
2 / 2 / 1
Регистрация: 16.08.2011
Сообщений: 76
03.04.2012, 15:51 14
или записать в трех textBox-ах по одной строчки

Добавлено через 8 минут
любые три строчки из 300

Добавлено через 1 час 52 минуты
строки должны идти по порядку: 1,2,3 или 4,5,6 или 7,8,9 и т.д.
0
96 / 96 / 3
Регистрация: 01.12.2011
Сообщений: 94
03.04.2012, 16:14 15
не понял изночально
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If IO.File.Exists(My.Application.Info.DirectoryPath & "\config.ini") = False Then
            My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\config.ini", "0", True)
        End If
        Dim c = My.Computer.FileSystem.ReadAllText(My.Application.Info.DirectoryPath & "\config.ini")
        c = CInt(c) + 1
        TextBox1.Text = построчно(c)
        c = CInt(c) + 1
        TextBox2.Text = построчно(c)
        c = CInt(c) + 1
        TextBox3.Text = построчно(c)
        My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\config.ini", c, False)
    End Sub
    Function построчно(ByVal g As Integer) As String
        Dim sr As System.IO.StreamReader = New System.IO.StreamReader(My.Application.Info.DirectoryPath & "\файл_с_строками.txt") 'файл с строками
        Dim i As Integer, st As String
        While sr.Peek <> -1
            i = i + 1
            st = sr.ReadLine()
            If i = g Then
                Return st
                Exit While
            End If
        End While
    End Function
1
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 14
03.04.2012, 19:05 16
Зачем StreamWriter?
VB.NET
1
2
dim text as string
text = My.computer.filesystem.readalltext("Имя файла")
тут мы получили весь этот файл в переменную text
теперь нужно разбить на строчки,

VB.NET
1
2
Dim text_perlines() As String
linearray = Split(text , vbcrlf)
Всё, вот мы и получили построчный текст

нужно считать коэффициенты из строк 8-..?
делаем дальше примерно следующую обработку,

VB.NET
1
2
3
4
5
6
7
8
9
dim temp as string
dim array_with_k(text_perlines.length-8) as string
 
for i = 8 to text_perlines.length step 1
temp=text_perlines(i)
    for i2 = 0 to instr(temp, "/*")-1 step 1
    array_with_k(i)=array_with_k(i)+temp(i2)
    next i2
next i

как-то так)
1
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 60
18.05.2012, 13:36 17
Здравствуйте.
у меня такая проблема, в результате кода программы формируется строка типа:
VB.NET
1
X3 = vbCrLf & Str3 & vbCrLf & Str4 & vbCrLf & Str5 & vbCrLf & Str6 & vbCrLf & Str7 & vbCrLf & Str8 & vbCrLf & Str9 & vbCrLf & Str10
в результате сохраняется txt файл с этими строками.

Но некоторые из них могут быть пустыми поэтому получается так:

VB.NET
1
2
3
4
5
6
7
8
Str3
 
 
Str6
 
 
 
Str9
Вопрос в том как сохранять файл без пустых строк( если таковые имеются). Либо как то считать сохраненный файл, убрать с него пустые строки и вновь сохранить. Прочитал весь пост, так и не могу разобраться. Помогите пожайлуста.
0
407 / 359 / 82
Регистрация: 07.10.2009
Сообщений: 558
18.05.2012, 13:51 18
Цитата Сообщение от Andrei72 Посмотреть сообщение
Вопрос в том как сохранять файл без пустых строк( если таковые имеются)
Я бы не строил строку целиком, как Вы делаете, создавал ее в цикле прибавляя новые строки с проверкой пустой строки на каждой итерации.
Кстати, это позволит заменить кучу переменных Str1 ... Str10 на один массив, с ним и работать в цикле.
По-моему, так!
0
1486 / 581 / 106
Регистрация: 26.03.2012
Сообщений: 1,028
18.05.2012, 14:46 19
VB.NET
1
2
3
4
X3 = vbCrLf & Str3 & vbCrLf & Str4 & vbCrLf & Str5 & vbCrLf & Str6 & vbCrLf & Str7 & vbCrLf & Str8 & vbCrLf & Str9 & vbCrLf & Str10
Do While InStr(X3,vbCrLf & vbCrLf) > 0
    X3 = Replace(X3, vbCrLf & vbCrLf, vbCrLf)
Loop
1
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 60
18.05.2012, 15:59 20
PAnT0P, Спасибо огромное, вы меня спасли. окозалось все так просто, даже не представлял что так мало строк кода справляются с этой задачей. Думаю пойму как это работает )
0
18.05.2012, 15:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2012, 15:59
Помогаю со студенческими работами здесь

Запись текста в ListBox построчно
Мне надо текст из переменной записать в ListBox. Не могу найти ответа в интернете. Нахожу только...

Чтение текста построчно из .txt
Есть файл .txt и вот его содержимое: http://site.ru/file1.rar Nazvanie1 http://site.ru/file2.rar...

Чтение текста из текстового файла построчно
Здравствуйте,мне нужно сначала выбрать рандомно файл ,а потом вывести первую строчку с цифрой ,а...

Запись массива в файл (построчно) и чтение (построчно)
Добрый вечер форумчане. По заданию необходимо : %Кодер 1) Записать звук в массив с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru