FSO и считывание линии

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

FSO и считывание линии

Сообщение Dzhon » 16.10.2004 (Сб) 9:47

Доброго времени суток!
Поможите разобраться в чем причина:

Код: Выделить всё
Set TStrim = fso.OpenTextFile(PathFile, ForReading)
Do While TStrim.AtEndOfStream = False
DoEvents

TStrim.ReadLine
Здесь идет разбор линии(НО ПОЧЕМУ СО ВТОРОЙ ЛИНИИ В ФАЙЛЕ ) :shock:
Loop

Конечно если добавить в начало файла vbKeyReturn то считывается нормально

Код: Выделить всё
Set TStrim = fso.OpenTextFile(PathFile, ForReading)
Me.RichTextBox1.Text = TStrim.ReadAll <- А вот так нормально считывается без всяких добавлений

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.10.2004 (Сб) 10:51

А если открыть, потом разобрать, а потом readline? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 16.10.2004 (Сб) 20:31

Может я это через ж... делаю? :roll:
Мне нужно разобрать файл(прилагается) и поместить данные в MSHFGrid
Поможите советом аль кодом плз.! :)

Код: Выделить всё
Option Explicit
Dim PathFile As String
Dim fso As New FileSystemObject 'объект FSO
Dim TStrim As TextStream 'поток
Dim FLine As String 'текущая линия
Dim Tsim As String 'текуший символ
Dim TString As Variant 'разобранная часть строки
Dim RGrd, CGrd As Integer 'для определения ячейки

Private Sub cmdOpenFiles_Click()
PathFile = ""
Me.CommonDialog1.Filter = "Text Files (*.txt)|*.txt|DuaL-Up(*.dml)|*.dml|"
Me.CommonDialog1.ShowOpen
PathFile = Me.CommonDialog1.FileName
InputGrid
End Sub

Private Sub InputGrid()

Set TStrim = fso.OpenTextFile(PathFile, ForReading)
RGrd = 1
CGrd = 0
Do While TStrim.AtEndOfStream = False 'Разбор потока по строкам
DoEvents
[b]TStrim.ReadLine[/b]
Понимаю что проблема из-за этих операторов а в чем именно не пойму

    [b]Do While TStrim.AtEndOfLine = False [/b]'Разбор строки
   
    DoEvents
    Tsim = TStrim.Read(1)
   
        If Tsim <> "|" Then
            TString = TString & Tsim
        Else
            Me.mshfgReestr.TextMatrix(RGrd, CGrd) = TString
            CGrd = CGrd + 1
            TString = ""
        End If
    Loop 'Коней разбора строки
   
Me.mshfgReestr.TextMatrix(RGrd, CGrd) = TString
TString = ""
Tsim = ""
RGrd = RGrd + 1
Me.mshfgReestr.Rows = Me.mshfgReestr.Rows + 1
CGrd = 0
Loop 'Конец цикла разбора потока
End Sub
Вложения
Connections.rar
(3.2 Кб) Скачиваний: 19

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.10.2004 (Сб) 20:37

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 16.10.2004 (Сб) 21:00

Да, видел, а в чем преимущество?
И хотелось понять в чем у меня ошибка и почему первая строка оказывается пропущенной?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.10.2004 (Сб) 21:10

А фиг его знает, никогда из FSO по воробьям не стрелял :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ta_gena
Бывалый
Бывалый
 
Сообщения: 264
Зарегистрирован: 30.10.2002 (Ср) 12:18
Откуда: Russia

Сообщение ta_gena » 17.10.2004 (Вс) 2:22

Код: Выделить всё
Dim sLine as String
Set TStrim = fso.OpenTextFile(PathFile, ForReading)

Do While TStrim.AtEndOfStream = False 'Разбор потока по строкам
    DoEvents
    sLine = TStrim.ReadLine()
    sLine = VBA.Replace( sLine, "|", vbTab)
    Me.mshfgReestr.AddItem  sLine
Loop 'Коней разбора строки

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 17.10.2004 (Вс) 7:02

GSerg писал(а):
Код: Выделить всё
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Огромнейшее спасибо ta_gena, я совсем выпустил из виду AddItem :!:


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

    TopList