Что нового

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

Alexander

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

Viktor1703

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

Alexander

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

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

Viktor1703

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

Код:
$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
Репутация
410
Или

Код:
$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 712
Код:
If StringLeft(StringStripWS($sStr, 1), 9) = '#Proverka' Then
 

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
#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
Репутация
410
То есть например в текстовом файле 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
Репутация
410
Ну вот и хорошо :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
Репутация
410
C2H5OH, не обязательно, данные можно вытащить и без "[section]" , я даже когда то UDF делал на подобии Ini только без "[section]", да и ни я один.....
 

C2H5OH

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

Viktor1703

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


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

Вот простенький пример:

Код:
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 ')
 
Верх