Поиск значение в файле

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
nypreH
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 08.04.2010 (Чт) 11:18

Поиск значение в файле

Сообщение nypreH » 08.04.2010 (Чт) 11:27

Всем доброго дня!

Задача следующая:

Есть файл, кусок такой:

Код: Выделить всё

DESCRIPTION                    COUNTER
------------------------------+-------
NUM_RESET                            0
NUM_RESET_CIRCUIT                    0
NUM_SSP_BSSAP                        0
NUM_SIGN_POINT_PROHIB                0
NUM_CALLS_REL_BS                     0
NUM_RECEIVED_OVERLOAD                0
NUM_SEND_OVERLOAD                    0
NUM_RECEIVED_GCP                     0
NUM_RECEIVED_CIP                     0
NUM_RECEIVED_CLASSM_UPD         127001
NUM_TOTAL_START_IMEI_CHECK           0
NUM_IMEI_CHECK_WHITE                 0



Есть значение в строке, например - NUM_RECEIVED_CLASSM_UPD 127001
Номер строки всегда одинаковый, но это не имеет значение, можно перейти к нужной строке, использовав что-то вроде:

Код: Выделить всё

Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Pattern = "NUM_RECEIVED_CLASSM_UPD"



Задача - нужно скопировать (присвоить некоторой переменной это значение) для дальнейшей обработки значение 127001 (это значение постоянно меняется). Длина этого значения тоже может изменяться, т.е. может быть больше или меньше 6и символов. С обоих сторон - пробелы, может поможет.
Так вот я не совсем понимаю, как можно присвоить это значение некоторой переменной?

Буду очень признателен за помощь,
Заранее благодарю,
С уважением,
Роман

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Поиск значение в файле

Сообщение Денис » 08.04.2010 (Чт) 11:56

Вот переделанный стандартный пример. (Код исправил).

Код: Выделить всё
Sub Main()

Dim TextLine As String
Dim LineArr() As String
Dim strName As String
Dim strValue As String

Open "d:\Temp\Sample.txt" For Input As #1 ' Open file.
Do While Not EOF(1)                             ' Loop until end of file.
    Line Input #1, TextLine                     ' Read line into variable.
    Debug.Print TextLine                        ' Print to Debug window.
    LineArr = Split(TextLine, " ")
    strName = LineArr(LBound(LineArr))
    strValue = LineArr(UBound(LineArr) - 1)
    If strName = "NUM_RECEIVED_CLASSM_UPD" Then
        MsgBox strName & " = " & strValue
    End If
Loop
Close #1                                        ' Close file.

End Sub


И, раз уж у нас цикл пробегает по всему файлу, давайте загрузим все константы разом:

Код: Выделить всё
Option Explicit

Dim NUM_RESET As Long
Dim NUM_RESET_CIRCUIT As Long
Dim NUM_SSP_BSSAP As Long
Dim NUM_SIGN_POINT_PROHIB As Long
Dim NUM_CALLS_REL_BS As Long
Dim NUM_RECEIVED_OVERLOAD As Long
Dim NUM_SEND_OVERLOAD As Long
Dim NUM_RECEIVED_GCP As Long
Dim NUM_RECEIVED_CIP As Long
Dim NUM_RECEIVED_CLASSM_UPD As Long
Dim NUM_TOTAL_START_IMEI_CHECK As Long
Dim NUM_IMEI_CHECK_WHITE As Long

Sub LoadConstants()

Dim TextLine As String
Dim LineArr() As String
Dim strName As String
Dim strValue As String

Open "d:\Temp\Sample.txt" For Input As #1       ' Open file.
Do While Not EOF(1)                             ' Loop until end of file.
   
    Line Input #1, TextLine                     ' Read line into variable.
    'Debug.Print TextLine                        ' Print to Debug window.
   
    LineArr = Split(TextLine, " ")
    strName = LineArr(LBound(LineArr))
    strValue = LineArr(UBound(LineArr) - 1)
   
    Select Case strName
        Case "NUM_RESET":                   NUM_RESET = Val(strValue)
        Case "NUM_RESET_CIRCUIT":           NUM_RESET_CIRCUIT = Val(strValue)
        Case "NUM_SSP_BSSAP":               NUM_SSP_BSSAP = Val(strValue)
        Case "NUM_SIGN_POINT_PROHIB":       NUM_SIGN_POINT_PROHIB = Val(strValue)
        Case "NUM_CALLS_REL_BS":            NUM_CALLS_REL_BS = Val(strValue)
        Case "NUM_RECEIVED_OVERLOAD":       NUM_RECEIVED_OVERLOAD = Val(strValue)
        Case "NUM_SEND_OVERLOAD":           NUM_SEND_OVERLOAD = Val(strValue)
        Case "NUM_RECEIVED_GCP":            NUM_RECEIVED_GCP = Val(strValue)
        Case "NUM_RECEIVED_CIP":            NUM_RECEIVED_CIP = Val(strValue)
        Case "NUM_RECEIVED_CLASSM_UPD":     NUM_RECEIVED_CLASSM_UPD = Val(strValue)
        Case "NUM_TOTAL_START_IMEI_CHECK":  NUM_TOTAL_START_IMEI_CHECK = Val(strValue)
        Case "NUM_IMEI_CHECK_WHITE":        NUM_IMEI_CHECK_WHITE = Val(strValue)
    End Select
   
   
Loop
Close #1                                        ' Close file.
   
MsgBox "NUM_RECEIVED_CLASSM_UPD = " & NUM_RECEIVED_CLASSM_UPD

End Sub
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

nypreH
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 08.04.2010 (Чт) 11:18

Re: Поиск значение в файле

Сообщение nypreH » 08.04.2010 (Чт) 16:28

Добрый день,

Выглядит как будто то, что мне нужно, но при запуске, выдает ошибку

Line 3
Char 19
Error Expected end of statement
Code 800A0401

Не подскажете, в чем может быть проблема?

Спасибо,
Роман

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Поиск значение в файле

Сообщение Хакер » 08.04.2010 (Чт) 16:32

Не подскажете, в чем может быть проблема?

Проблема в том, что ты — провокатор. Используешь VBS, а вопрос пишешь в разделе о VB6. А сам, так, если посмотреть, и разницы между этими вещами не чуешь.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 65

    TopList