Что нового

Распознание строки #Proverka = число

Alexander

Новичок
Сообщения
105
Репутация
2
Как распознать строку такого плана:
#Proverka [после него может быть пробел(ы), а может и сразу = (никаких других символов)] = [после = может быть сразу число, а могут быть пробел(ы), а потом число (никаких других символов)]
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Скорее Вы имели ввиду $Proverka а не #Proverka и в каком смысле распознавать?
 
Автор
A

Alexander

Новичок
Сообщения
105
Репутация
2
Viktor1703
1. Разницы нет. Просто заданная последовательность символов. А вообще именно так: #Proverka
2.

Код:
If StringRegExp() = 1 Then ...
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Так?

Код:
$Proverka = "Hello"

If $Proverka = "Hello" Then
    MsgBox(0, "", "Ok")
EndIf
 
Автор
A

Alexander

Новичок
Сообщения
105
Репутация
2
Viktor1703
Вообще не из той оперы)
Нужно знать, есть ли в текстовом файле строка такого плана:
#Proverka = 123
Или так:
#Proverka= 123
Или так:
#Proverka=123
Или так:
#Proverka = 123
и тд.

Но не так:
#ProverkaKbn = 123
И не так:
#Proverka = sdkghdkg

То есть такого плана: #Proverka [или пробел(ы), или ничего] = [пробелы, а потом число или сразу число]
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Или

Код:
$Proverka = "1234;730;482;0001"

$String = StringSplit($Proverka, ";")
For $i = 0 To $String[0]
	If $String[$i] = 730 Then
		MsgBox(0, "", "Ok = " & $String[$i])
	EndIf
Next
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,714
Код:
If StringLeft(StringStripWS($sStr, 1), 9) = '#Proverka' Then
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
#Proverka = 123
Или так:
#Proverka= 123
Или так:
#Proverka=123
Или так:
#Proverka = 123
Но не так:
#ProverkaKbn = 123
И не так:
#Proverka = sdkghdkg

Я так понял #Proverka это переменная в которой хранятся данные, если да, то она в AutoIt'e обозночается так $Proverka, и без разницы,
узнать можно хоть

Код:
MsgBox(0, "",  $Proverka)


хоть

Код:
ConsoleWrite($Proverka & @CRLF)


хоть

Код:
If $Proverka = 6 Then
    ;Ваше действие
EndIf
 
Автор
A

Alexander

Новичок
Сообщения
105
Репутация
2
Viktor1703
Вы не правильно понимаете. #Proverka - это слово в каком-то текстовом файле.
Yashied
Код:
$kolstr = _FileCountLines(@ScriptDir & '\test.txt')
For $i = 1 to $kolstr 
If StringRegExp(StringStripWS(FileReadLine(@ScriptDir & '\test.txt', $i), 8), '#Proverka=[\d]*') = 1 Then MsgBox(0, '', 'OK!')
Next


Мне нужно, чтоб после = были число...
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
То есть например в текстовом файле 1.txt написано так #Proverka = 108

То данные можно вытащить так ...

Код:
$hFile = FileOpen(@ScriptDir & "\1.txt")
$hRead = FileRead($hFile)
$String = StringSplit($hRead, "=")
MsgBox(0, "", StringStripWS($String[1], 8))
MsgBox(0, "", StringStripWS($String[2], 8))


Или так...

Код:
$hFile = FileOpen(@ScriptDir & "\1.txt")
$hRead = FileRead($hFile)
$String = StringSplit($hRead, "=")
For $i = 1 To $String[0]
    MsgBox(0, "", StringStripWS($String[$i], 8))
Next
 
Автор
A

Alexander

Новичок
Сообщения
105
Репутация
2
Viktor1703
Спасибо! Переделал для себя.

Код:
#include <file.au3>
$kolstr = _FileCountLines(@ScriptDir & '\1.txt')
For $i = 1 to $kolstr 
$hRead = FileReadLine(@ScriptDir & "\1.txt", $i)
$String = StringSplit(StringStripWS($hRead, 8), "=")
If $String[1] = '#Proverka' And IsNumber($String[2]) Then MsgBox(0, '', 'OK!')
Next
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Ну вот и хорошо :smile: , просто на будующее, нужно как то конкретнее и доходчего объяснять, что именно нужно сделать, просто у меня на это план, было 5 разных вариантов, и думай какой подбирать... :smile:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
$chislo = IniRead ( "prot.loc", "section", "#Proverka", "NotFound" )
If IsNumber($chislo) Then MsgBox(0, '', 'OK!')


Но есть одно НО : в начале файла prot.loc должна присутствовать строка "[section]" ;)
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
C2H5OH, не обязательно, данные можно вытащить и без "[section]" , я даже когда то UDF делал на подобии Ini только без "[section]", да и ни я один.....
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Viktor1703, а пример можно?
У меня не получилось без "[section]". Я смог ужаться только до пустой секции "[]". но вообще без секции у меня не получилось.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Пример конечно можно, но сейчас скорее всего не получится, так как найти её не могу, думаю завтра смогу простой пример написать и скинуть Вам в личку, весь принцып работы состоит в сравнивании строки или числа до = и если находит такую строку или число то забираем данные которые после =, ни чего сложного нет, если потребуется, то завтра, а точнее уже сегодня покажу Вам пример :smile:


Добавлено: [time]1324683074[/time]
Вот простенький пример:

Код:
WriteFile("Test.txt", "AutoIt", "3.3.6.1")
MsgBox(0, "", ReadFile("Test.txt", "AutoIt"))

Func WriteFile($iFile, $iKey, $iValue)
	FileWriteLine($iFile, $iKey & "=" & $iValue)
EndFunc	

Func ReadFile($iFile, $iKey)
    $hFile = FileOpen($iFile)
    $hRead = FileRead($hFile)
	$hLine = StringSplit($hRead, @CRLF, 1)
	For $i = 0 To $hLine[0]
		If StringInStr($hLine[$i], $iKey) = 1 Then
			Return StringTrimLeft($hLine[$i], StringLen($iKey) + 1)
		EndIf
	Next
EndFunc
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Вариант с Рег.Выр. :
Код:
#Include<Array.au3>
$sText = "#Proverka = 123"  & @CRLF & _ 
"Или так:"  & @CRLF & _ 
"#Proverka= 123"  & @CRLF & _ 
"Или так:"  & @CRLF & _ 
"#Proverka=123"  & @CRLF & _ 
"Или так:"  & @CRLF & _ 
"#Proverka    = 123"  & @CRLF & _ 
"Но не так:"  & @CRLF & _ 
"#ProverkaKbn    = 123"  & @CRLF & _ 
"И не так:"  & @CRLF & _ 
"#Proverka    = sdkghdkg"

$sPatern = "(#Proverka\s*=\s*\d+)(?:\r|$)"
$aResult = StringRegExp( $sText, $sPatern, 3 )
_ArrayDisplay($aResult, ' Test Result ')
 
Верх