Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > EOF в VBS


Автор: YURETS 2.6.2008, 16:54
Помогите разобраться в VB-скрипте
Почему-то не срабатывает EOF и скрипт входит в бесконечный цикл.

Код

 Set objFiles = objFolder.Files
 For Each objFile In objFiles
'-------------------------
redim Fixez(89)
for j = 1 to 89
   Fixez(j) = False
next
AllGood = True
'------------------------
     objTextFile2.WriteLine objFile.Name
     fulpt = strFilePath & objFile.Name
     Set objTextFile = objFSO.OpenTextFile(fulpt, ForReading)
         Do While Not objTextFile.EOF
                 stroka = objTextFile.ReadLine
                    for i = 1 to 85  
                        if stroka = GoodLinez(i) then
                            Fixez(i) =True
                        end if
                    Next        
         Loop
objTextFile.Close 


Автор: Akina 2.6.2008, 17:16
Цитата(YURETS @  2.6.2008,  17:54 Найти цитируемый пост)
Почему-то не срабатывает EOF и скрипт входит в бесконечный цикл

Ну наверное потому, что у File нет свойства EOF...

Автор: YURETS 2.6.2008, 21:16
А как тогда реализовать проверку, не достигнут ли конец файла ?

Автор: mihanik 2.6.2008, 21:45
Код

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile( MyFileName, ForReading )
      While Not f.AtEndOfStream
             s = f.ReadLine
             ...

      Wend

Автор: Akina 3.6.2008, 08:12
По-моему, разумнее считывать сразу весь файл и парсить его в массив.

Автор: YURETS 3.6.2008, 10:31
А как тогда считать весь файл и искать подстроку ?
f.Read   считает его в массив ?

Автор: Akina 3.6.2008, 11:58
Цитата(YURETS @  3.6.2008,  11:31 Найти цитируемый пост)
как тогда считать весь файл 

ReadFile

Цитата(YURETS @  3.6.2008,  11:31 Найти цитируемый пост)
искать подстроку 

Match

Автор: mihanik 3.6.2008, 12:22
Или
Цитата(mihanik @  2.6.2008,  21:45 Найти цитируемый пост)
s = f.ReadAll


Автор: YURETS 3.6.2008, 16:03
А каков синтаксис команды Match, можно примерчик.
Что-то в справочнике по командам VBS не нашел таковой.


Автор: Akina 3.6.2008, 16:30
Match - не команда, а объект. Читать MSDN - Platform SDK - Tools and Scripting - VBScript Reference - Match Object.
Можно также использовать объект RegExp - подробности там же.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)