Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: StreamReader yнепавильно считывает поток. Почему? Добавлено: 24.09.06 09:19  

Автор вопроса:  dr.Faust
Вот такой код считывает поток в массив:

        Dim sr As System.IO.StreamReader = New System.IO.StreamReader("C:\p") ' файл с таблицей
        Dim fl As New System.IO.FileInfo("C:\p")
        Dim len, i As Int64
        len = fl.Length()
        ReDim p(len - 1)
        For i = 0 To len - 1
            p(i) = sr.Read
            If i / 10000 = Int(i / 10000) Then
                ProgressBar1.Value = i
            End If
        Next

С адреса 740A50 ридер возвращает -1 (на самом деле там 12h).
В чем собственно дело?

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 24.09.06 14:32
Может правильней будет использовать BinaryReader?
Или даже FileStream.

Кстати, по одному байту читать - это будет жутко медленно.

Ответить

Номер ответа: 2
Автор ответа:
 dr.Faust



Вопросов: 6
Ответов: 26
 Профиль | | #2 Добавлено: 25.09.06 11:21
Вообще время позволяет.
А как быстро?
И всеже почему перестает читать?

Ответить

Номер ответа: 3
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #3
Добавлено: 26.09.06 02:57
С адреса 740A50 ридер возвращает -1 (на самом деле там 12h).


Так файл текстовый?
("C:\p";)

Непонятно.
StreamReader работает с текстовыми файлами.
-1 - значит что файл закончился.
А это скорее всего из -за того, что до этого ( 740A50 ) он наткнулся на нуль символ.

Ответить

Номер ответа: 4
Автор ответа:
 dr.Faust



Вопросов: 6
Ответов: 26
 Профиль | | #4 Добавлено: 26.09.06 09:29
Я знаю, когда ридер возвращает -1, вопрос почему он это делает?
Он же должен читать массив побайтно (или всетаки посимвольно - тогда понятно все)?
А как побайтно прочитать?
Файл - байтовый массив.

Ответить

Номер ответа: 5
Автор ответа:
 dr.Faust



Вопросов: 6
Ответов: 26
 Профиль | | #5 Добавлено: 26.09.06 10:18
Правильней действительно BinaryReader.
Плохо жить без MSDN'а :(
Спасибо.
И еще вопрос:
Что быстрее:
If val1 / d = Int(val1 / d) Then

или
If val1 Mod d = 0 Then

Ответить

Номер ответа: 6
Автор ответа:
 Viper



ICQ: 249094859 

Вопросов: 0
Ответов: 310
 Профиль | | #6 Добавлено: 26.09.06 10:43
А проверить то не судьба?

Естественно второй вариант будет в разы быстрее. Почему, догадайся сам.

Ответить

Номер ответа: 7
Автор ответа:
 dr.Faust



Вопросов: 6
Ответов: 26
 Профиль | | #7 Добавлено: 27.09.06 12:03
Спасибо, я так и думал.

Еще один детский вопрос:
Что лучше, импортировать класс или каждый раз ссылатся на него?
В чем собственно разница?

Ответить

Номер ответа: 8
Автор ответа:
 Viper



ICQ: 249094859 

Вопросов: 0
Ответов: 310
 Профиль | | #8 Добавлено: 28.09.06 10:55
Что лучше, импортировать класс или каждый раз ссылатся на него?


а что есть импортировать класс в твоем понимании?

Ответить

Номер ответа: 9
Автор ответа:
 dr.Faust



Вопросов: 6
Ответов: 26
 Профиль | | #9 Добавлено: 30.09.06 09:22
Признаться, с трудом представляю, что это.
Вопрос сводиться к бональному:
Чем отличается

Imports System.io
...
Dim fsr As FileStream = New FileStream(TextBox_путь.Text, IO.FileMode.Open)
        Dim br As BinaryReader = New BinaryReader(fsr)

и

Dim fsr As System.IO.FileStream = New System.IO.FileStream(TextBox_путь.Text, IO.FileMode.Open) ' поток как файл
        Dim br As System.IO.BinaryReader = New System.IO.BinaryReader(fsr)

Ответить

Номер ответа: 10
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #10
Добавлено: 01.10.06 15:52
отличия только в записи - препроцессор приведёт это к одному виду.

Ответить

Номер ответа: 11
Автор ответа:
 dr.Faust



Вопросов: 6
Ответов: 26
 Профиль | | #11 Добавлено: 02.10.06 08:54
Спасибо.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам