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

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

09.01.2010, 14:20. Показов 29615. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.01.2010, 14:20
Ответы с готовыми решениями:

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

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

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

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

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

Читать построчно можно с помощью циклов. Например нам нужно считать третью строку, ставим в цикле условие, увеличиваем переменную счётчик на единицу с каждым проходом цикла. Вот пример
Code Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
 Аватар для NuEssence
1 / 1 / 0
Регистрация: 09.01.2010
Сообщений: 13
10.01.2010, 23:37  [ТС]
спасибо огромное, сам бы не догадался

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

теперь мне требуется запись в файл аналогичным методом
я добавил новый текстбокс на форму и новую кнопку, в нужную мне строку (допустим, ту же 3ю) мне нужно сделать запись, или перезаписать ее, как это можно реализовать?
0
 Аватар для Abu
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
12.01.2010, 23:59
Вообще там есть какие-то классы 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
 Аватар для NuEssence
1 / 1 / 0
Регистрация: 09.01.2010
Сообщений: 13
13.01.2010, 00:16  [ТС]
Abu, спасибо, пока остановлюсь на этом
0
 Аватар для NuEssence
1 / 1 / 0
Регистрация: 09.01.2010
Сообщений: 13
24.01.2010, 23:30  [ТС]
продолжая тему о работе с текстом...
прошу помочь в написании программы, все-таки с текстом у меня очень плохо получается работать

дан текстовый файл, весь скидывать не буду, он только началом отличается
Code Скопировано
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
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
Я точно не знаю, что тебе надо но попробуй следующий код (создается массив из двадцати элементов)

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
Скажите, пожалуйста как можно чтение текста построчно таким образом: в textBox записать либо первые три строчки, или вторые три строчки, или т.д. где строчек может быть до 300.
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
03.04.2012, 13:30
Цитата Сообщение от Lilek Посмотреть сообщение
Скажите, пожалуйста как можно чтение текста построчно таким образом: в textBox записать либо первые три строчки, или вторые три строчки, или т.д. где строчек может быть до 300.
Класс StreamReader метод ReadLine
0
Почетный модератор
 Аватар для Памирыч
23246 / 9158 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
03.04.2012, 13:31
Lilek, https://www.cyberforum.ru/post1942265.html
1
97 / 97 / 3
Регистрация: 01.12.2011
Сообщений: 94
03.04.2012, 13:48
если правильно понял, любая строка из 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
или записать в трех textBox-ах по одной строчки

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

Добавлено через 1 час 52 минуты
строки должны идти по порядку: 1,2,3 или 4,5,6 или 7,8,9 и т.д.
0
97 / 97 / 3
Регистрация: 01.12.2011
Сообщений: 94
03.04.2012, 16:14
не понял изночально
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
Зачем 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
 Аватар для Andrei72
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 60
18.05.2012, 13:36
Здравствуйте.
у меня такая проблема, в результате кода программы формируется строка типа:
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
 Аватар для Pooh
407 / 359 / 82
Регистрация: 07.10.2009
Сообщений: 558
18.05.2012, 13:51
Цитата Сообщение от Andrei72 Посмотреть сообщение
Вопрос в том как сохранять файл без пустых строк( если таковые имеются)
Я бы не строил строку целиком, как Вы делаете, создавал ее в цикле прибавляя новые строки с проверкой пустой строки на каждой итерации.
Кстати, это позволит заменить кучу переменных Str1 ... Str10 на один массив, с ним и работать в цикле.
По-моему, так!
0
 Аватар для PAnT0P
1491 / 586 / 106
Регистрация: 26.03.2012
Сообщений: 1,039
18.05.2012, 14:46
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
 Аватар для Andrei72
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 60
18.05.2012, 15:59
PAnT0P, Спасибо огромное, вы меня спасли. окозалось все так просто, даже не представлял что так мало строк кода справляются с этой задачей. Думаю пойму как это работает )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.05.2012, 15:59
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер