Что нового

Как прочитать всю строку содержащую фрагмент

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Есть файл. В нем строка вида: POINTID=614987.199
Она начинается одинаково:
POINTID=
А заканчивается цифрами.
Как в означенном файле найти эту строку и перечитать ее целиком?
Если точнее, мне надо вывести цифры после "="
 
A

Alofa

Гость
- Какие знаки идут сразу после цифр?
- Среди цифр какие знаки еще могут быть?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Вот как-то так...
Код:
#include <File.au3>
#include <Array.au3>

;$sText = FileRead("log.txt")
$sText = "POINTID=614987.199" & @CRLF & "abuyz hfpyfz" & @CRLF & "POINTID=12345.67"
MsgBox(0,"", $sText)
$pattern = '(?ms)POINTID\=(.*?)$'
$aRes = StringRegExp($sText, $pattern,3)
_ArrayDisplay($aRes)
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Alofa сказал(а):
- Какие знаки идут сразу после цифр?
- Среди цифр какие знаки еще могут быть?

после "=" идут цифры и точка. т.е. формат: 614014.12
кол-во цифр и положение точки - строго фиксированно.
но сами цифры могут быть разные


Добавлено:
Сообщение автоматически объединено:

C2H5OH сказал(а):
Вот как-то так...
Код:
#include <File.au3>
#include <Array.au3>

;$sText = FileRead("log.txt")
$sText = "POINTID=614987.199" & @CRLF & "abuyz hfpyfz" & @CRLF & "POINTID=12345.67"
MsgBox(0,"", $sText)
$pattern = '(?ms)POINTID\=(.*?)$'
$aRes = StringRegExp($sText, $pattern,3)
_ArrayDisplay($aRes)

так не пойдет, ибо после "=" цифры могут быть иные
 

ildar

Осваивающий
Сообщения
252
Репутация
30
OffTopic:
так не пойдет, ибо после "=" цифры могут быть иные

Тут трудно гадать
Дай для примера хотя бы одну строку, в которой содержится нужная информация.
И что нужно получить из этой строки.
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
ildar сказал(а):
OffTopic:
так не пойдет, ибо после "=" цифры могут быть иные

Тут трудно гадать
Дай для примера хотя бы одну строку, в которой содержится нужная информация.
И что нужно получить из этой строки.

Строка:
POINTID=614987.19
или
POINTID=614014.21

Мне из нее надо:
614987.19
или
614014.21


Добавлено:
Сообщение автоматически объединено:

Alofa сказал(а):
ildar сказал(а):
... Дай для примера хотя бы одну строку
Так тоже не пойдет - нужен нмогострочный пример, в идеале весь файл.

[INIT]
DB_ALIAS=Postdb
DB_USER_NAME=SYSDBA
[SETUP]
; Уровень логирования (Brief, Short, Detailed, Verbose)
LOG_DETAILING=Verbose
; Режим записи в лог-файл (Cached, ForcedWrite);
LOG_WRITEMODE=ForcedWrite
;Пароль для сертификата
CERT_PASSWORD=
;Локальная папка где расположены файлы сертификатов
CERT_PATH=c:\cert_ops\
;ID точки приема
POINTID=614987.19
;Время ожидания до следующей операции
 

ildar

Осваивающий
Сообщения
252
Репутация
30
Код от C2H5OH с данным текстом работает. Что не так?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
ВиталийВВ сказал(а):
так не пойдет, ибо после "=" цифры могут быть иные

OffTopic:
Бухал вчера? ;)


Код:
#include <File.au3>
#include <Array.au3>

;$sText = FileRead("log.txt")
$sText = "[INIT]"&@CRLF& _
"DB_ALIAS=Postdb"&@CRLF& _
"DB_USER_NAME=SYSDBA"&@CRLF& _
"[SETUP]"&@CRLF& _
"; Уровень логирования (Brief, Short, Detailed, Verbose)"&@CRLF& _
"LOG_DETAILING=Verbose"&@CRLF& _
"; Режим записи в лог-файл (Cached, ForcedWrite);"&@CRLF& _
"LOG_WRITEMODE=ForcedWrite"&@CRLF& _
";Пароль для сертификата"&@CRLF& _
"CERT_PASSWORD="&@CRLF& _
";Локальная папка где расположены файлы сертификатов"&@CRLF& _
"CERT_PATH=c:\cert_ops\ "&@CRLF& _
";ID точки приема"&@CRLF& _
"POINTID=614987.19"&@CRLF& _
";Время ожидания до следующей операции"
$pattern = '(?ms)POINTID\=(.*?)$'
$aRes = StringRegExp($sText, $pattern,3)
_ArrayDisplay($aRes)
 

ildar

Осваивающий
Сообщения
252
Репутация
30
Код выводит любые цифры после POINTID=
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
ildar сказал(а):
Код выводит любые цифры после POINTID=

Извините - невнимательно поглядел.
Да оно выводится как надо в массив.
А можно чуть допилить, чтоб в переменную бы выводилось?

Уже разобрался :smile:
Спасибо :smile:
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
ВиталийВВ
Так это же INI-файл... или нет?
Код:
$ID = IniRead("name.ini", "setup", "pointid", "")
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
InnI сказал(а):
ВиталийВВ
Так это же INI-файл... или нет?
Код:
$ID = IniRead("name.ini", "setup", "pointid", "")
да, точно это INI файл. в нем задаются настройки на разные машины.


Добавлено:
Сообщение автоматически объединено:

ВиталийВВ сказал(а):
InnI сказал(а):
ВиталийВВ
Так это же INI-файл... или нет?
Код:
$ID = IniRead("name.ini", "setup", "pointid", "")
да, точно это INI файл. в нем задаются настройки на разные машины.

Вы натолкнули меня на мысль. Да, возможно так сделать проще будет.
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
InnI сказал(а):
ВиталийВВ
Для работы с этими файлами есть специальные функции: Описание функций раздела "ini"

Уже нашел. Это супер!!!!!!!
Но написание программы - горело сильно, поэтому пошел по чуть менее изящному пути. Более корявым способом делаю, но времени править уже нету :-(
В любом случае - спасибо, ибо на будущее крайне пригодиться!


Добавлено:
Сообщение автоматически объединено:

не утерпел, попробовал по новой.
Это великолепно!!!!!!!!
код получается короче, понятнее. и вообще!!!!!!!!! :IL_AutoIt_1: :IL_AutoIt_1: :IL_AutoIt_1:
я в полном восторге!
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
OffTopic:
Как приятно, когда люди находят для себя что-то новое, что приводит их в восторг.
Наверно, это и есть смысл существования форума.
 

ildar

Осваивающий
Сообщения
252
Репутация
30
OffTopic:
Да, действительно. Но правильно сформулированный вопрос, ускорил бы решение проблемы
 
Верх