Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
6 / 6 / 4
Регистрация: 07.07.2011
Сообщений: 117

Не работает StreamReader.ReadLine

20.12.2011, 22:08. Показов 3137. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, господа программисты!
Описываю задачу: требуется найти определённую строку в текстовом файле.
Выбранный файл существует, но на проверку
Visual Basic
1
2
3
4
If varString Is Nothing Then
Text1.Text = Text1.Text & "Error: Text not found." & vbCrLf
Exit Sub
End If
сразу пишет ошибку в текстбоксе и делает End Sub.
Где ошибка? Помогите, пожалуйста.
P.s.
Visual Basic
1
2
varString = ReadLine(StreamReader)
StreamRaader = My.Computer.FileSystem.OpenTextFileReader(OpenFileDialog1.FileName)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.12.2011, 22:08
Ответы с готовыми решениями:

StreamReader.ReadLine - читает через строку
Добрый день! Задача: выделить из SMD файла часть, в которой описывается связь суставов (nodes). Написан следующий класс: class...

Как перекодировать строку StreamReader.ReadLine() в Юникод?
Всем привет. Значит такая проблема. Есть текстовый файл в кодировке ANSI 1251 , открывая его и выводя текст в поле вывода из русских букв ...

После чтения StreamReader'ом, его методом ReadLine, вернуться к предыдущей строке
Кто-нибудь в курсе, реально ли после прочтения строки, вернуться на прошлую позицию. Вот смотрите пример: static void Main(string...

10
Эксперт Hardware
 Аватар для Linoge
3205 / 1915 / 324
Регистрация: 25.10.2011
Сообщений: 5,564
20.12.2011, 23:34
Могу предложить так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim fso, fs1, f1
'открытие файла для чтения в потоке
Set fso = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set fs1 = fso.GetFile("base.txt")
'проверка наличия файла
If Not fs1 = Empty Then
    Set f1 = fs1.OpenAsTextStream(1)
    'чтение всего файла построчно
    Do While Not f1.AtEndOfStream
        st = f1.ReadLine
    Loop
End If
End Sub
1
6 / 6 / 4
Регистрация: 07.07.2011
Сообщений: 117
21.12.2011, 19:38  [ТС]
Спасибо, теперь вопрос следующий:
Почему на код
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
26
27
28
29
30
31
32
33
34
Imports System.IO
Public Class compilefrom
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Const cfg As String = "[cfg]"
        Dim fso, fs1, fs
        Dim st As String
        Dim varString As String
        Dim sct As Integer = 1
        Dim blFlag As Boolean = False
        OpenFileDialog1.ShowDialog()
        fso = CreateObject("Scripting.FileSystemObject")
        On Error Resume Next
        fs1 = fso.GetFile(OpenFileDialog1.FileName)
        If fs1 IsNot Nothing = True Then
            fs = fs1.OpenAsTextStream(1)
            If sct = 1 Then
                Text1.Text = Text1.Text & "Trying to find cfg section..." & vbCrLf
                Do Until fs.AtEndOfStream
                    st = fs.ReadLine
                    Text1.Text = Text1.Text & st & vbCrLf
                    If st Is cfg = True Then
                        Text1.Text = Text1.Text & "Trying to find cfg section..." & vbCrLf
                        blFlag = True
                        Exit Do
                    End If
                Loop
                If blFlag = False Then
                    Text1.Text = Text1.Text & "Error: Hasn't found cfg section" & vbCrLf
                End If
                blFlag = False
            End If
        End If
    End Sub
End Class
Выдаёт в текстбоксе Text1
Code
1
2
3
4
5
Trying to find cfg section...
[cfg]
 
[/cfg]
Error: Hasn't found cfg section
Заранее спасибо.
0
Эксперт Hardware
 Аватар для Linoge
3205 / 1915 / 324
Регистрация: 25.10.2011
Сообщений: 5,564
21.12.2011, 21:53
Во первых раздел не тот, сюда надо было.
А по существу не понял вопроса, что с кодом не так?
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
22.12.2011, 06:24
Первый код похож на VB6 (Text1.Text, хотя может контроллы переименованы)
Второй - VB .NET
Так что пусть ТС определяется с разделом
0
6 / 6 / 4
Регистрация: 07.07.2011
Сообщений: 117
23.12.2011, 19:38  [ТС]
Пардон, действительно не туда, но раз уж начал... Если есть способ переместить тему, прошу это сделать. Стоит у меня vb 2010 express; Раньше программировал в vb6, теперь пытаюсь переключиться, контроллеры переименованы именно поэтому.
Теперь по существу: он у меня начинает цикл, т.к. вводится первая строка в Text1, дальше выводит все строки и ни одна не совпадает с cfg, но по идее должна, т.к. первая строка там есть, и она совпадает. Но он пишет обратное. Почему?

Добавлено через 23 часа 34 минуты
прошли сутки... неужели сия задача века так и останется нерешенной?
0
1 / 1 / 0
Регистрация: 23.09.2011
Сообщений: 24
26.12.2011, 14:44
Могу предложить вот такой вариант поиска, но это vb.net

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim x As Integer = 1
        If InStr(x, LCase(RichTextBox1.Text), LCase(Trim(TextBox1.Text))) <> 0 Then
            RichTextBox1.Focus()
            RichTextBox1.SelectionStart = InStr(x, LCase(RichTextBox1.Text), LCase(Trim(TextBox1.Text))) - 1
            RichTextBox1.SelectionLength = Len(Trim(TextBox1.Text))
            RichTextBox1.ScrollToCaret()
            x = RichTextBox1.SelectionStart + Len(Trim(TextBox1.Text))
        Else
            MsgBox("Поиск завершен")
            x = 1
        End If
 
    End Sub
0
 Аватар для eJ_Studio
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
26.12.2011, 17:50
akula1, л
это больше похоже на вб6
0
1 / 1 / 0
Регистрация: 23.09.2011
Сообщений: 24
26.12.2011, 17:58
eJ_Studio, Незнаю, но в vb.net работает без проблем, не проверял на vb 6
0
6 / 6 / 4
Регистрация: 07.07.2011
Сообщений: 117
26.12.2011, 21:03  [ТС]
Спасибо, конечно, но потрудитесь, пожалуйста, объяснить, что происходит, а то мы, деревенские, не понимаем...
0
1 / 1 / 0
Регистрация: 23.09.2011
Сообщений: 24
26.12.2011, 21:58
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim x As Integer = 1
        If InStr(x, LCase(RichTextBox1.Text), LCase(Trim(TextBox1.Text))) <> 0 Then      "InStr это установка указателя на первый символ, LCase преобразовывает к нижнему регистру, Trim обрезает пробелы вокруг слова или строки которую ищем, <> 0 это значит что если строка не пуста то можно продолжить
            RichTextBox1.Focus() ' устанавливаем указатель
            RichTextBox1.SelectionStart = InStr(x, LCase(RichTextBox1.Text), LCase(Trim(TextBox1.Text))- 1      "SelectionStart получаем выбранный текст, преобразуем к одному регистру, обрезаем пробелы 
            RichTextBox1.SelectionLength = Len(Trim(TextBox1.Text)) " сравниваем количество символов в искомом и найденном тексте
            RichTextBox1.ScrollToCaret() " прокручиваем ползунок до найденного слова
            x = RichTextBox1.SelectionStart + Len(Trim(TextBox1.Text)) "присваиваем переменной x найденный результат
        Else
            MsgBox("Поиск завершен")
            x = 1
        End If
 
    End Sub
Добавлено через 15 минут
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim x As Integer = 1
        If InStr(x, LCase(RichTextBox1.Text), LCase(Trim(TextBox1.Text))) <> 0 Then "InStr установка указателя на первый символ, LCase преобразование шрифта к нижнему регистру, короче что бы буквы маленькие были, Trim обрезает пробелы
            RichTextBox1.Focus() " устанавливаем указатель для скролинга
            RichTextBox1.SelectionStart = InStr(x, LCase(RichTextBox1.Text), LCase(Trim(TextBox1.Text))) - 1 " SelectionStart начало выделение найденного текста
            RichTextBox1.SelectionLength = Len(Trim(TextBox1.Text)) ".SelectionLength конец выделения найденного текста            
RichTextBox1.ScrollToCaret()" прокручиваем полосу скролинг до выделенного текста
            x = RichTextBox1.SelectionStart + Len(Trim(TextBox1.Text))" Присваиваем к началу выделения оставшееся количество символов, затем присваиваем к x
        Else
            MsgBox("Поиск завершен")
            x = 1
        End If
 
    End Sub
Добавлено через 2 минуты
Думал что не отправилось, вот и написал два раза, глюки((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.12.2011, 21:58
Помогаю со студенческими работами здесь

При streamreader.ReadLine() выскакивает ошибка object reference not set to an instance of object
Здраствуйте, у меня вдруг появилась такая проблема, что при streamreader.ReadLine() выскакивает ошибка object reference not set to an...

Какая разница между Console.ReadLine() и Сonsole.In.ReadLine()?
какая разница между Console.ReadLine() и Сonsole.In.ReadLine() ?

Не работает StreamReader/StreamWriter с NetworkStream
Всем привет! У меня есть такая проблема. Есть программа-клиент: using System; using System.Collections.Generic; using...

Почему reader.readline() не корректно работает?
Добрый вечер. Есть код который в цикле считывает информацию из объекта reader: while True: line = await...

Как работает Console.ReadLine() (и не только он)?
Не могу понять как это работает. Как он возвращает значение только после того, как что-то ввели. Как можно реализовать подобное?


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru