|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Пробел в имени файла на vb6.0 |
|
Разное - [решено] Пробел в имени файла на vb6.0
|
Старожил Сообщения: 329 |
|
|
Отправлено: 13:56, 01-02-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Ну, тогда как-то так:
VB6 у меня под рукой нету, на WSH выглядит так: Скрытый текст
Option Explicit Dim objFSO Dim arrContent Dim objRegExp Dim elem Dim i Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") With objFSO.OpenTextFile("C:\Мои проекты\0041\0001.txt") arrContent = Split(.ReadAll(), vbCrLf) .Close End With Set objRegExp = WScript.CreateObject("VBScript.RegExp") objRegExp.Pattern = "^(.+) (\d+) (\d+) (\d+)(?:| (.+))$" For Each elem In arrContent WScript.Echo elem If objRegExp.Test(elem) Then With objRegExp.Execute(elem).Item(0).Submatches For i = 0 To .Count - 1 WScript.Echo vbTab, i, ": [" & .Item(i) & "]" Next End With End If WScript.Echo Next Set objRegExp = Nothing Set objFSO = Nothing WScript.Quit 0 Скрытый текст
![]() Обратите внимание: поскольку Вы пишете про «андроид, юникс система» — вероятно, концы строк в файле будут в формате Unix, и тогда потребуется заменить в Split() vbCrLf на vbLf. |
Отправлено: 08:52, 09-02-2017 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Iska, классно работает, но разжуйте этот кусок
For Each elem In arrContent WScript.Echo elem 'вывод If objRegExp.Test(elem) Then With objRegExp.Execute(elem).Item(0).Submatches For i = 0 To .Count - 1 WScript.Echo vbTab, i, ": [" & .Item(i) & "]" 'вывод Next End With End If WScript.Echo 'вывод Next If objRegExp.Test(elem) Then With objRegExp.Execute(elem).Item(0).Submatches For i = 0 To .Count - 1 А VB6 портативный вот https://yadi.sk/d/5TQWB-A83DvtLx |
------- Последний раз редактировалось blackeangel, 12-02-2017 в 15:57. Причина: ми6 Отправлено: 15:52, 12-02-2017 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата blackeangel:
Цитата blackeangel:
Код — чтение из файла в словарь и пример работы со словарём
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 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата blackeangel:
For Each elem In arrContent ' Для каждого элемента из массива строк… WScript.Echo elem If objRegExp.Test(elem) Then ' Строка подходит под заданный шаблон? With objRegExp.Execute(elem).Item(0).Submatches ' Наложить шаблон на строку, взять первое из совпадений, взять для него коллекцию подгрупп For i = 0 To .Count - 1 ' Перебрать всю коллекцию подгрупп, от первого её элемента до последнего WScript.Echo vbTab, i, ": [" & .Item(i) & "]" ' Вывести очередную подгруппу Next End With End If WScript.Echo Next |
|
Отправлено: 17:50, 12-02-2017 | #14 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Iska, количество строк тоже известно оно равно кол-ву строк прочитанного файла.А вот как записать это в массив это что то не понятное. 2 раза for? 1й по количеству строк, второй по столбцам.
Что с массивом делать буду? Ой, много чего. И так крутить и сяк вертеть и накладывать на другой. Или как то по другому? |
Последний раз редактировалось blackeangel, 12-02-2017 в 21:07. Отправлено: 18:54, 12-02-2017 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата blackeangel:
Цитата blackeangel:
Цитата blackeangel:
|
|||
Отправлено: 19:38, 12-02-2017 | #16 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Так шаблон один, как вы говорите, универсальный, так и кладем его на файл, который читаем. В котором куча всего. |
||||
Отправлено: 20:17, 12-02-2017 | #17 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Например, содержимое этого файла надо загнать в массив, разбить на столбцы. Ваш шаблон подо все подойдет? Вроде да. Или ошибаюсь? Я старался предусмотреть все варианты.
А что с ним делается дальше смотрите тут https://gist.github.com/blackeangel/...239ad6898343e6 |
Последний раз редактировалось blackeangel, 03-04-2017 в 22:53. Отправлено: 20:25, 12-02-2017 | #18 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата blackeangel:
|
|
Отправлено: 20:31, 12-02-2017 | #19 |
Старожил Сообщения: 329
|
Профиль | Отправить PM | Цитировать Цитата Iska:
А словарь не катит ТК не поддерживает частичного совпадения. И самое главное - про словарь не знаю ничего, не разу им не пользовался, обходился массивами всегда. |
||
Отправлено: 20:59, 12-02-2017 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - копирование выбранного файла в определенное место и добавление к имени файла даты | x800 | Скриптовые языки администрирования Windows | 0 | 19-02-2014 20:39 | |
CMD/BAT - Использование имени файла для правки в теле файла. | xkafkax | Скриптовые языки администрирования Windows | 8 | 20-07-2013 11:06 | |
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. | OSArev | Скриптовые языки администрирования Windows | 2 | 30-01-2011 11:58 | |
Ошибка - Каракули в реестре "Синтаксическая ошибка в имени файла,имени папки или метке тома" | permas | Microsoft Windows 2000/XP | 2 | 20-02-2010 19:30 | |
Разное - [решено] Пробел в конце имени папки | DuoStorm | Microsoft Windows 2000/XP | 1 | 17-04-2008 19:18 |
|