Поиск строки в наборе файлов .txt (в папке) с использованием VBScript [дубликат]

Эта ошибка - это что-то еще!

Вот как я ее исправил. Я использую xcode Version 6.1.1 и использую swift. Я получал эту ошибку каждый раз, когда мое приложение пыталось выполнить segue, чтобы перейти к следующему экрану.

  1. Проверено, что кнопка была подключена к правильному действию. (Это не проблема, но все же хорошо проверить)
  2. Убедитесь, что кнопка не имеет никаких дополнительных действий или выходов, которые вы, возможно, создали по ошибке. (Это не проблема, но все еще полезно проверить)
  3. Проверьте журналы и убедитесь, что все кнопки в NEXT SCREEN имеют правильные действия, и если есть какие-либо изменения, убедитесь, что они имеют уникальный идентификатор. (Это была проблема). Один из segues не имел уникального идентификатора. Одна из кнопок имела действие и два выхода, которые я создал по ошибке. Удалите все дополнительные точки и убедитесь, что вы переходите к следующему экрану с уникальными идентификаторами.

Приветствия,

5
задан Ansgar Wiechers 26 May 2015 в 19:57
поделиться

1 ответ

Строка

Set listFile = fso.OpenTextFile(aniLines).ReadAll

не будет работать по двум причинам:

  • Set может использоваться только при назначении объектов для переменных, но ReadAll возвращает строку .
  • OpenTextFile() ожидает строку, но aniLines представляет собой массив строк.

Чтобы обработать все элементы массива, вы можете использовать что-то вроде этого:

For Each line In aniLines
  ' read dirlist.txt file
Next

Вопрос в том, как вы хотите читать файлы dirlist.txt. Вы можете сделать то же, что и с другими файлами: прочитайте весь контент файла и разделите его на массив:

listFile  = fso.OpenTextFile(line).ReadAll
listLines = Split(listFile, vbCrLf)

, а затем используйте другой цикл, подобный приведенному выше, для обработки полей массива listLines. Этот подход предпочтительнее для небольших файлов, потому что код проще.

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

Set listFile = fso.OpenTextFile(line)  ' <-- remove .ReadAll from this line!
Do Until listFile.AtEndOfStream
  fName = listFile.ReadLine
  ' do stuff with fName
Loop

Я рекомендую использовать Do Until вместо Do While Not, потому что семантика такая же, но первая ближе к естественному языку и поэтому ее легче читать.

Также достаточно было бы создать экземпляр объекта FileSystemObject один раз в начале скрипта и просто использовать этот экземпляр в остальной части скрипта. Бессмысленно повторять его снова и снова.

15
ответ дан Ansgar Wiechers 21 August 2018 в 15:27
поделиться
  • 1
    +1, хотя я бы предложил использовать ReadLine просто потому, что он имеет гораздо больше смысла, чем ReadAll & amp; Split комбо. – Daniel 31 October 2012 в 05:29
Другие вопросы по тегам:

Похожие вопросы: