Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать



Цитата blackeangel:
А VB6 портативный вот https://yadi.sk/d/5TQWB-A83DvtLx »
Я, пожалуй, воздержусь от такого.

Цитата blackeangel:
И как выводить все это не на экран, а в массив? »
А зачем Вам массив? Что Вы с ним делать будете? Ладно, число токенов известно заранее — пять, но число строк-то неизвестно. И делать каждый раз Redim Preserve?! Или сначала посчитать строки, а затем определять размер массива?! Ни то, ни другое не есть хорошо и правильно. Здесь я бы использовал словарь, содержащий в качестве ключа — саму строку, а в качестве значения — коллекцию SubMatches из токенов.

Код — чтение из файла в словарь и пример работы со словарём
Код: Выделить весь код
Option Explicit

Sub Main()
    Dim objFSO As New FileSystemObject
    Dim arrContent() As String
    Dim objRegExp As New RegExp
    Dim objTokens As New Dictionary
    
    Dim elem As Variant
    Dim i As Integer
    
    Dim strKey As Variant
    Dim strToken As Variant
    
    
    With objFSO.OpenTextFile("C:\Temp\0002\0001.txt")
        arrContent = Split(.ReadAll(), vbCrLf)
        .Close
    End With
    
    objRegExp.Pattern = "^(.+) (\d+) (\d+) (\d+)(?:| (.+))$"
    
    For Each elem In arrContent
        If objRegExp.Test(elem) Then
            With objRegExp.Execute(elem).Item(0)
                objTokens.Add elem, .Submatches
            End With
        End If
    Next elem
    
    For Each strKey In objTokens
        Debug.Print strKey
        
        For Each strToken In objTokens.Item(strKey)
            Debug.Print vbTab, i, ": [" & strToken & "]"
        Next strToken
    Next strKey
    
    Set objRegExp = Nothing
    Set objFSO = Nothing
End Sub
Картинка с демонстрацией результата работы кода

Сам проект в архиве: SampleProject.7z.

Отправлено: 17:42, 12-02-2017 | #13