Модераторы: diadiavova, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построчно считать текст из файла 
V
    Опции темы
neic
Дата 29.4.2008, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: нет
Всего: 7



Добрый день! smile 

Вот не могу сообразить как на VB.NET 2005 сделать, как здесь (VB6):

Код

...
a = FreeFile
Open App.path & "\pols.txt" For Input as a
Do While Not Eof #a

Line Input #a, g

           name = Left(g,Instr(1,g,":")-1)

           If name = text1.text then
                   msgbox("Такой пользователь уже существует",64,"Ошибка")        
                   exit sub
          end if

Loop
Close #a
...


Как я понимаю тут нужно использовать ReadAllLines, но вот как её использовать не знаю.
PM MAIL WWW ICQ Skype   Вверх
Rififi
Дата 29.4.2008, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 1
Всего: 36



пример из msdn

Код
Dim path As String
Dim returnValue As String()

returnValue = File.ReadAllLines(path)

PM MAIL   Вверх
neic
Дата 29.4.2008, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: нет
Всего: 7



А как получить, например значение первой строчки?

Из всего, что можно выбрать SetValue подходит лучше всего.

Но как её юзать? Попробовал не получается =(



Это сообщение отредактировал(а) neic - 29.4.2008, 21:32
PM MAIL WWW ICQ Skype   Вверх
Dennnis
Дата 29.4.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 23.3.2008

Репутация: нет
Всего: 4



Цитата(neic @  29.4.2008,  21:26 Найти цитируемый пост)
А как получить, например значение первой строчки?

Код

Dim reader As StreamReader = new StreamReader("filename")
...
'Что либо делаешь с reader'ом, например читаешь построчно
...
reader.BaseStream.Seek(0, System.IO.SeekOrigin.Begin)  'Устанавливаешь на начало
Dim firstLine As String = reader.ReadLine() 'Читаешь первую строку



Это сообщение отредактировал(а) Dennnis - 29.4.2008, 21:45
--------------------
Get Rich or Die Tryin'
PM   Вверх
neic
Дата 29.4.2008, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: нет
Всего: 7



Dennnis
А на VB.NET'e можно пример привести, а то буквально сегодня пересел.

Добавлено через 8 минут и 4 секунды
Dennnis
Спасибо!

И можно ещё вопрос.

Как реализовать Left в VB.NET?
PM MAIL WWW ICQ Skype   Вверх
Dennnis
Дата 29.4.2008, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 23.3.2008

Репутация: нет
Всего: 4



А что такое Left?
--------------------
Get Rich or Die Tryin'
PM   Вверх
neic
Дата 29.4.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: нет
Всего: 7



Ну например у нас есть:
Код

Dim g as string
Dim k as integer
g = "12412131414:56"

k = Instr(1,g,":")

g = Left(g,k)


Т.е. на выходе должно получиться  g = "12412131414"
PM MAIL WWW ICQ Skype   Вверх
Dennnis
Дата 29.4.2008, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 23.3.2008

Репутация: нет
Всего: 4



Код

Dim g as string
Dim k as integer
g = "12412131414:56"
k = g.IndexOf(":", 0);
g = g.Substring(0, k);

Более подробно описание методов строки можешь посмотреть в Object Browser'е
--------------------
Get Rich or Die Tryin'
PM   Вверх
neic
Дата 29.4.2008, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: нет
Всего: 7



Dennnis
И ещё 2 вопроса:
1) Dim reader As IO.StreamReader = New IO.StreamReader("C:\12.txt")

Компилятор ругается на эту строчку, когда файла не существует... Поставил перед этой строчкой On Error Resume Next, не помогло....как выйти из этой ситуации?

2) Есть файл "C:\12.txt", после проверки обнаружили что вводимого элемента нет. Как добавить элемент в конец файла.

Например ввели "2", программа открыла, прочитала данные, оказалось, что "2" есть в файле.
Вводим "3", программа открыла, прочитала данные, оказалось, что "3" нет в файле.

Как вот эту "3" добавить в конец файла?
PM MAIL WWW ICQ Skype   Вверх
Dennnis
Дата 29.4.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 23.3.2008

Репутация: нет
Всего: 4



Цитата(neic @  29.4.2008,  22:29 Найти цитируемый пост)
1) Dim reader As IO.StreamReader = New IO.StreamReader("C:\12.txt")

Код

Dim stream As Stream = File.Open("C:\12.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)
Dim reader As StreamReader = new StreamReader(stream)'Поток для чтения
dim writer as StreamWriter = new StreamWriter(stream)


Цитата(neic @  29.4.2008,  22:29 Найти цитируемый пост)
2) Есть файл "C:\12.txt", после проверки обнаружили что вводимого элемента нет. Как добавить элемент в конец файла.


Примерно так, могут быть ошибки, прям здесь писал smile 

Код

'Или открывает или создает для чтения и записи
Dim stream As Stream = File.Open("C:\12.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)
Dim reader As StreamReader = new StreamReader(stream)'Поток для чтения
dim writer as StreamWriter = new StreamWriter(stream)'Поток для записи

Dim str As string = "2"'Искомая строка
dim line as String
Dim exists As boolean = false
line = reader.ReadLine() 'Читаем строку
do while line <> Nothing 'если не конец файла
  line = reader.ReadLine() 'Читаем следующую строку
  if line = str then 'Нашли
    exists = true
    Exit Do
  end if
loop
'Нету
if exists = false then
writer.WriteLine(str)
end if




Это сообщение отредактировал(а) Dennnis - 29.4.2008, 23:09
--------------------
Get Rich or Die Tryin'
PM   Вверх
neic
Дата 30.4.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 839
Регистрация: 28.1.2007

Репутация: нет
Всего: 7



Ошибок нет, но почему-то не записывает =(.

Я сделал проще...просто при чтении файла сделал переменную, которая сохраняет все записи.
Ну, а потом переписывает файл таким способом
Код

...
'sh - переменная, которая хранит все записи файла
write.Write(sh & vbCrLf & TextBox1.Text)
...


Вот полный код:
Код

...
Dim g, sh As String

        If TextBox1.Text <> "" Then
            Dim stream As IO.Stream = IO.File.Open("C:\12.txt", IO.FileMode.OpenOrCreate, IO.FileAccess.ReadWrite)
            Dim reader As IO.StreamReader = New IO.StreamReader(stream)

            If reader.BaseStream.Length > 0 Then

                reader.BaseStream.Seek(0, System.IO.SeekOrigin.Begin)  'Устанавливаешь на начало

                While Not reader.EndOfStream

                    g = reader.ReadLine

                    If sh = "" Then
                        sh = g
                    Else
                        sh = sh & vbCrLf & g
                    End If

                    If g = TextBox1.Text Then
                        MsgBox("Такой учтасник уже есть =)", MsgBoxStyle.OkOnly, "Опа!")
                        Exit Sub
                    End If

                End While

            End If
            reader.Close()

            Dim write As IO.StreamWriter = New IO.StreamWriter("C:\12.txt")
            write.Write(sh & vbCrLf & TextBox1.Text)
            write.Close()
        End If
...

PM MAIL WWW ICQ Skype   Вверх
transparent
Дата 12.5.2011, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.5.2011

Репутация: нет
Всего: нет



во ты намудрил, вот смотри несколько (4) вариантов для твоих дел насколько я понял..
Не пойму зачем reader.Basestream.seek трогать, это ж для бинарных данных...


Код

        For Each s As String In IO.File.ReadAllLines("C:\12.txt", System.Text.Encoding.Default)
        If s = TextBox1.Text Then
        MsgBox("NO&&&")
        Exit Sub
        End If
        Next
        IO.File.AppendAllText("C:\12.txt", vbNewLine & TextBox1.Text)





'Dim s() As String = IO.File.ReadAllLines("C:\12.txt", System.Text.Encoding.Default)
        'For i As Integer = 0 To s.Length - 1
        ' If s(i).Equals(TextBox1.Text) Then
        'MsgBox("NO&")
        'Exit Sub
        'End If
        'Next
        'IO.File.WriteAllText("C:\12.txt", String.Concat(String.Join(vbCrLf, s), vbNewLine, TextBox1.Text))





        'Dim SR As New IO.StreamReader("C:\12.txt") '= fIO.OpenText
        'Do Until SR.EndOfStream 'While Not SR.EndOfStream
        'If String.Equals(TextBox1.Text, SR.ReadLine) Then
        ' MsgBox("NO&")
        ' SR.Close()
        ''Exit Sub
        'End If
        ''Loop
        'SR.Close()
        'Dim s As String = IO.File.ReadAllText("C:\12.txt", System.Text.Encoding.Default)
        '''''IO.File.WriteAllText("C:\12.txt", String.Concat(s, Environment.NewLine, TextBox1.Text), System.Text.Encoding.Default)
        'My.Computer.FileSystem.WriteAllText("C:\12.txt", String.Concat(s, Environment.NewLine, TextBox1.Text), False, System.Text.Encoding.Default)






        'Dim s As String = IO.File.ReadAllText("C:\12.txt", System.Text.Encoding.Default)
        'Dim s_() As String = s.Split(Environment.NewLine)
        'For i As Integer = 0 To s_.Length - 1
        'If TextBox1.Text.Equals(s_(i).Trim) Then
        'MsgBox("X")
        'Exit Sub
        'End If
        'Next
        'Using SW As New IO.StreamWriter("C:\12.txt", True, System.Text.Encoding.Default)
        'SW.WriteLine(TextBox1.Text)              'SW.WriteLine(s & chr(10) + chr(13) & TextBox1.Text) если вот тут - false, System.Text.Encoding.Default)
        'SW.Dispose() : SW.Close()
        'End Using

PM MAIL   Вверх
diadiavova
Дата 13.5.2011, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



transparent, ты вообще на дату последнего сообщения смотрел? smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
transparent
Дата 13.5.2011, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.5.2011

Репутация: нет
Всего: нет



неа, шерстил форум, вот и решил отозваться smile Сейчас он наверно уже на этом уровне ассемблер лабает)
PM MAIL   Вверх
krewin
Дата 14.5.2011, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 27.8.2009

Репутация: 1
Всего: 1



Я пишу для transparent, вот реальный способ номер два. Учись студент !


Код

Dim wen As String = ""
 
fnd = FreeFile()
FileOpen(fnd, "c:\db.dat", OpenMode.Random, , OpenShare.Shared, 300)
FilePut(fnd, CStr(Now), 4)'записать в строку
FileGet(fnd, wen, 4)'прочитать
FileClose(fnd)
msgbox (wen)

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.2025 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.