Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Текстовый файл / 8 сообщений из 8, страница 1 из 1
17.05.2004, 16:50
    #32520830
KV
KV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текстовый файл
Файл такого типа:
((123456=
456987
789256
321856
9856325
/
((639185=
789797
465464
45646
13213

каким циклом пройтись от ((123456= до ((639185=
на VB или VBA
...
Рейтинг: 0 / 0
17.05.2004, 17:19
    #32520899
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текстовый файл
Любым.
Важно правило остановки цикла.
Признак остановки - две открывающих скобки.
Их можно найти несколькими способами:
InStr(), Mid(), Left(), Like...
...
Рейтинг: 0 / 0
19.05.2004, 11:29
    #32523508
KV
KV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текстовый файл
Вот такой файл:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
(( 17121386 =
 1 ) 26820 , 2464 , 2464 , 1684 , 1684 , 0 , 27600 , 18574 , 6254 , 1684 , 27600 , 18574 =
 2 ) 5916 , 2464 , 2464 , 1684 , 1684 , 0 , 6696 , 2578 , 1346 , 1684 , 6696 , 2578 =
 5 ) 1875 , 0 , 0 , 0 , 0 , 0 , 1875 , 1114 , 188 , 0 , 1875 , 1114 =
 7 ) 2106 , 492 , 492 , 89 , 89 , 0 , 2509 , 632 , 627 , 89 , 2509 , 632 =
 13 ) 260 , 1 , 1 , 1 , 1 , 0 , 260 , 180 , 26 , 1 , 260 , 180 =
/
(( 17450993 =
 1 ) 37 , 0 , 0 , 20 , 20 , 0 , 17 , 0 , 2 , 16 , 17 , 0 =
 2 ) 37 , 0 , 0 , 20 , 20 , 0 , 17 , 0 , 2 , 16 , 17 , 0 =
 7 ) 20 , 0 , 0 , 20 , 20 , 0 , 0 , 0 , 0 , 16 , 0 , 0 =
 13 ) 17 , 0 , 0 , 0 , 0 , 0 , 17 , 0 , 2 , 0 , 17 , 0 =
 31 ) 2000 =
/
(( 20757449 =
 1 ) 17577 , 5 , 5 , 5 , 0 , 0 , 17577 , 13378 , 254 , 0 , 17577 , 13378 =
 2 ) 17577 , 5 , 5 , 5 , 0 , 0 , 17577 , 13378 , 254 , 0 , 17577 , 13378 =
 3 ) 16314 , 0 , 0 , 0 , 0 , 0 , 16314 , 12839 , 196 , 0 , 16314 , 12839 =
 7 ) 1239 , 0 , 0 , 0 , 0 , 0 , 1239 , 520 , 56 , 0 , 1239 , 520 =
 16 ) 24 , 5 , 5 , 5 , 0 , 0 , 24 , 19 , 2 , 0 , 24 , 19 =
 26 ) 5 =
 31 ) 1997 =
/
(( 11370616 =
 1 ) 4532 , 11 , 11 , 140 , 140 , 0 , 4403 , 2968 , 28 , 140 , 4403 , 2968 =
 2 ) 4532 , 11 , 11 , 140 , 140 , 0 , 4403 , 2968 , 28 , 140 , 4403 , 2968 =
 3 ) 4246 , 0 , 0 , 0 , 0 , 0 , 4246 , 2908 , 25 , 0 , 4246 , 2908 =
 5 ) 48 , 0 , 0 , 0 , 0 , 0 , 48 , 21 , 1 , 0 , 48 , 21 =
 7 ) 238 , 11 , 11 , 140 , 140 , 0 , 109 , 39 , 2 , 140 , 109 , 39 =
 8 ) 49 , 0 , 0 , 27 , 27 , 0 , 22 , 4 , 0 , 27 , 22 , 4 =
 9 ) 186 , 11 , 11 , 113 , 113 , 0 , 84 , 33 , 2 , 113 , 84 , 33 =
 12 ) 3 , 0 , 0 , 0 , 0 , 0 , 3 , 2 , 0 , 0 , 3 , 2 =
 26 ) 11 =
/
(( 11624531 =
 1 ) 129252 , 133 , 133 , 156 , 156 , 0 , 129229 , 12644 , 1042 , 156 , 129229 , 12644 =
 2 ) 129252 , 133 , 133 , 156 , 156 , 0 , 129229 , 12644 , 1042 , 156 , 129229 , 12644 =
 3 ) 27919 , 0 , 0 , 0 , 0 , 0 , 27919 , 7752 , 432 , 0 , 27919 , 7752 =
 5 ) 29185 , 0 , 0 , 0 , 0 , 0 , 29185 , 0 , 78 , 0 , 29185 , 0 =
 7 ) 15362 , 105 , 105 , 108 , 108 , 0 , 15359 , 3292 , 275 , 108 , 15359 , 329 

Обрабатываю примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub TestFile()
Dim s As String
Dim sZN As String
Dim sOKPO As String
Open "E:\MyFile.mkt" For Input As # 1 
Do While Not EOF( 1 )
    Line Input # 1 , s
    If Left(s,  1 ) = "(" Then
     s = Mid(s,  3 )
     s = Replace(s, "=", "#")
     sOKPO = s
    ElseIf Left(s,  1 ) <> "(" And _
     Left(s,  1 ) <> "/" Then
     s = Replace(s, "=", "")
     s = Replace(s, ",", "#")
     s = Mid$(s, InStr(s, ")") +  1 )
     sZN = s
    Debug.Print sOKPO + sZN
    End If
Loop
Close # 1 
End Sub

Проблема в том, что начинает он почему-то не с первой записи вхождения sOKPO, а где-то уже посередине файла. В чем может быть причина? Как передвинуть курсор на 1-ю строку?
...
Рейтинг: 0 / 0
19.05.2004, 12:16
    #32523640
KV
KV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текстовый файл
Когда через F8 шаг за шагом все правильно получается и в окне Locals правильные значения, а когда процедуру целиком запускаю то не то получается...
...
Рейтинг: 0 / 0
19.05.2004, 13:08
    #32523802
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текстовый файл
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub NextTestFile()
Dim s As String
Dim sZN As String
Dim sOKPO As String
Open "E:\MyFile.mkt" For Input As # 1 
Do While Not EOF( 1 )                         'промобработка фрагментов опущена!!!
    Line Input #1, s
    Select Case Left(s, 2)
        Case "(("
            If Len(sOKPO) > 0 Then          'в начале - пусто
                Debug.Print sOKPO & sZN     'готовый результат
                sZN = ""                    'очистить правую часть результата
            End If                          'для накопления на следующей итерации.
            sOKPO = s                       'обнаружено начало фрагмента.
        Case Else
            sZN = sZN & s                   'накопление правой части результата
    End Select
Loop
    Debug.Print sOKPO + sZN                 'вывод последнего
Close # 1                                     '(или единственного) результата.
End Sub
...
Рейтинг: 0 / 0
19.05.2004, 13:11
    #32523813
KV
KV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текстовый файл
А вот такой еще вопрос, как полученные данные сразу записать в новый файл?
Спасибо.
...
Рейтинг: 0 / 0
19.05.2004, 16:43
    #32524415
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текстовый файл
как полученные данные сразу записать в новый файл?
Я спросил у F1 ;-), и мне сказали:
Код: plaintext
1.
Data read with Line Input # is usually written from a file with Print #.
Data written with Print # is usually read from a file with Line Input # or Input.
И место печати напрашивается само собой: там, где в примере стоит Debug.Print
...
Рейтинг: 0 / 0
20.05.2004, 12:42
    #32525805
KV
KV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Текстовый файл
Спасибо!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Текстовый файл / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]