импорт из txt. затык с запятой

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

anton10k
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 03.02.2009 (Вт) 8:48

импорт из txt. затык с запятой

Сообщение anton10k » 03.02.2009 (Вт) 9:09

если в тексте есть запятая, то прога колом. подскажите что не так

собщение об ошибке: Index and length must refer to a location within the string.

вот кусок проги:
Код: Выделить всё
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim outstr$
        Dim str$
        Dim ser$
        FileOpen(1, "c:\uchet_oborudovania.txt", OpenMode.Input)
        Do Until EOF(1)
            Input(1, str)
            ser = str.Substring(0, 9)

            If ser = ComboBox5.Text Then
                outstr = outstr & str.Substring(10, 10) & vbCrLf & str.Substring(20) & vbCrLf & vbCrLf & vbCrLf
            End If

        Loop
        FileClose(1)
        RichTextBox2.Text = outstr
    End Sub
[Viper] :: Используй тэг CODE!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: импорт из txt. затык с запятой

Сообщение Viper » 03.02.2009 (Вт) 11:42

Используй в .NET методы .NET, а не оставленные для совместимости методы из VB6. Это, во-первых. Во-вторых, описание ошибки указывает на попытку выделения подстроки с использованием либо некорректного индекса, либо некорректной длины подстроки. Думай в эту сторону. Например, убедись в том, что Input считала именно то, что нужно.
З.Ы. Подсказка: подумай, в качестве чего воспринимает Input запятую.
Весь мир матрица, а мы в нем потоки байтов!

anton10k
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 03.02.2009 (Вт) 8:48

Re: импорт из txt. затык с запятой

Сообщение anton10k » 03.02.2009 (Вт) 12:06

если я правильно понимаю, получается что символ запятой опознается как конец строки, а после запятой другая строка.

и как это обходить?
все остальные символы проходят, только запятая все портит :evil: , а она нужна в тексте

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: импорт из txt. затык с запятой

Сообщение Viper » 03.02.2009 (Вт) 12:29

Никак не обходить. Читать первое предложение моего ответа.
Весь мир матрица, а мы в нем потоки байтов!

anton10k
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 03.02.2009 (Вт) 8:48

Re: импорт из txt. затык с запятой

Сообщение anton10k » 03.02.2009 (Вт) 12:48

Viper писал(а):Никак не обходить. Читать первое предложение моего ответа.


ну если взять inputstring - считывает все как надо, но там нужно знать длинну строки
если указать значение больше чем строка то сразу ошибка

или вообще по другому нужно?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: импорт из txt. затык с запятой

Сообщение Viper » 03.02.2009 (Вт) 14:03

anton10k писал(а):или вообще по другому нужно?
Зацени, например, метод File.ReadAllLines, который одним приемом читает все строки из файла. Есть и еще множество способов прочитать содержимое файла построчно.
Весь мир матрица, а мы в нем потоки байтов!

anton10k
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 03.02.2009 (Вт) 8:48

Re: импорт из txt. затык с запятой

Сообщение anton10k » 03.02.2009 (Вт) 14:27

Спасибо!!!

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: импорт из txt. затык с запятой

Сообщение Williams » 04.02.2009 (Ср) 17:09

Можно, кстати, отключить нэймспэйс VisualBasic в свойствах проекта. Получим привычный синтаксис + свободную конвертируемость.
И вы думаете, что вас оставят в живых после прочтения этого поста?

SystemError
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 05.03.2008 (Ср) 17:30

Re: импорт из txt. затык с запятой

Сообщение SystemError » 13.02.2009 (Пт) 12:31

Viper прав. Используй методы .Net
такие как например StreamReader
Код: Выделить всё
Using sr As StreamReader = New StreamReader(mFilename)
Dim line As String
Do
line = sr.ReadLine
Loop Until line Is Nothing
End Using

При таком чтении можно всё прочитать, в том числе и юникод

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: импорт из txt. затык с запятой

Сообщение MIT » 13.02.2009 (Пт) 13:48

System.IO.File.ReadAllText рулит

не всегда, к сожалению... Речь о БОЛЬШИХ файлах.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 100

    TopList