Что нового

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

deep-north

Новичок
Сообщения
3
Репутация
0
Версия AutoIt: 3.
3.3.14
Описание:
Доброго дня!
Есть программа в которую вводятся интервалы времени, затем идет поиск по этому времени, затем идет сохранение в папку со значениями этого времени. Т.е. задаю начальное время как две переменные (например, h1=10, m1=45), затем кликаю мышкой в окошко наподобие элемента input, вставляю значение переменной "h1", кликаю в другое окно, вставляю значение переменной "m1". Затем кликаю в два таких же элемента с заданным "приращением" времени (например, h2=10, m2=50, затем 10 и 55, затем 11 и 0 и т.д. до 23:55). Кликается кнопка поиска, выпадает окно "Сохранить", нажимается "Новая папка" и в ее название вставляются значения переменных "h1.m1-h2.m2" (например, 10.45-10.50)
Собственно, вот здесь и нужен алгоритм, перебирающий все значения этих переменных (времени) и выдающий их на вход функции. Главное, чтобы этот алгоритм остановился на значении h1=23, m2=50, h2=23, m2=55.
Примечания:
Мой код (я задавал интервал по 15 минут):
Код:
Func _ClicFunc($hours1,$minutes1,$hours2,$minutes2)
	$start_hours=$hours1
	$start_minutes=$minutes1
	$stop_hours=$hours2
	$stop_minutes=$minutes2
	ConsoleWrite("start " & $start_hours & ":" & $start_minutes & "   ")
	ConsoleWrite("stop " & $stop_hours & ":" & $stop_minutes &@CRLF)
EndFunc

$time_hours=21
$time_minutes=45

for $a=$time_hours to 23
	Select
		Case $time_minutes=0

			$time_start_hours=$time_hours
			$time_start_minutes=$time_minutes

			$time_stop_hours=$time_start_hours
			$time_stop_minutes=$time_start_minutes+15
			_ClicFunc($time_start_hours,$time_start_minutes,$time_stop_hours,$time_stop_minutes)
			$time_start_minutes=$time_stop_minutes


			$time_stop_minutes=$time_start_minutes+15
			_ClicFunc($time_start_hours,$time_start_minutes,$time_stop_hours,$time_stop_minutes)
			$time_start_minutes=$time_stop_minutes

			$time_stop_minutes=$time_start_minutes+15
			_ClicFunc($time_start_hours,$time_start_minutes,$time_stop_hours,$time_stop_minutes)
			$time_start_minutes=$time_stop_minutes

			$time_stop_hours=$time_start_hours+1
			$time_stop_minutes=0
			_ClicFunc($time_start_hours,$time_start_minutes,$time_stop_hours,$time_stop_minutes)
			$time_hours=$time_stop_hours
			$time_minutes=$time_stop_minutes

		Case $time_minutes=15

			$time_start_hours=$time_hours
			$time_start_minutes=$time_minutes

			$time_stop_hours=$time_start_hours
			$time_stop_minutes=$time_start_minutes+15
			_ClicFunc($time_start_hours,$time_start_minutes,$time_stop_hours,$time_stop_minutes)
			$time_start_minutes=$time_stop_minutes

			$time_stop_minutes=$time_start_minutes+15
			_ClicFunc($time_start_hours,$time_start_minutes,$time_stop_hours,$time_stop_minutes)
			$time_start_minutes=$time_stop_minutes

			$time_stop_hours=$time_start_hours+1
			$time_stop_minutes=0
			_ClicFunc($time_start_hours,$time_start_minutes,$time_stop_hours,$time_stop_minutes)
			$time_hours=$time_stop_hours
			$time_minutes=$time_stop_minutes

		Case $time_minutes=30

			$time_start_hours=$time_hours
			$time_start_minutes=$time_minutes

			$time_stop_hours=$time_start_hours
			$time_stop_minutes=$time_start_minutes+15
			_ClicFunc($time_start_hours,$time_start_minutes,$time_stop_hours,$time_stop_minutes)
			$time_start_minutes=$time_stop_minutes

			$time_stop_hours=$time_start_hours+1
			$time_stop_minutes=0
			_ClicFunc($time_start_hours,$time_start_minutes,$time_stop_hours,$time_stop_minutes)
			$time_hours=$time_stop_hours
			$time_minutes=$time_stop_minutes

		Case $time_minutes=45

			$time_start_hours=$time_hours
			$time_start_minutes=$time_minutes
			ConsoleWrite($time_hours & @CRLF)

			$time_stop_hours=$time_hours
			$time_stop_minutes=0
			ConsoleWrite($time_hours & " " & $time_stop_hours & @CRLF)

			If $time_stop_hours=24 Then
				ConsoleWrite("Done" & @CRLF)
			Elseif $time_stop_hours<>24 Then
				_ClicFunc($time_start_hours,$time_start_minutes,$time_stop_hours,$time_stop_minutes)
				ConsoleWrite($time_hours & " " & $time_stop_hours & @CRLF)
				$time_hours=$time_stop_hours
				$time_minutes=$time_stop_minutes
				ConsoleWrite($time_hours & " " & $time_stop_hours & @CRLF)
			EndIf

	EndSelect
Next


Еще один вариант:

Код:
While $time_hours<=23
	While $time_minutes<=45
		$time_start_hours=$time_hours
		$time_start_minutes=$time_minutes
		$time_stop_hours=$time_start_hours
		$time_stop_minutes=$time_start_minutes+15
		_ClicFunc($time_start_hours,$time_start_minutes,$time_stop_hours,$time_stop_minutes)
		$time_minutes=$time_minutes+15
	WEnd
	$time_hours=$time_hours+1
WEnd
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Т.е, вы хотите код, который к определенному времени прибавлял N минут?
Вот к примеру к дате и времени добавим 15 минут.
Код:
#include <Date.au3>
$sNewDate = _DateAdd('n', 15, '2016/06/26 10:00:00')
MsgBox(0, "", "+15 минут " & $sNewDate)
 
Автор
D

deep-north

Новичок
Сообщения
3
Репутация
0
inververs сказал(а):
Т.е, вы хотите код, который к определенному времени прибавлял N минут?
Вот к примеру к дате и времени добавим 15 минут.
Код:
#include <Date.au3>
$sNewDate = _DateAdd('n', 15, '2016/06/26 10:00:00')
MsgBox(0, "", "+15 минут " & $sNewDate)

Нет, к сожалению, использовать функции времени не получается. Нужны именно значения часов и минут. В одном цикле 4 значения. Т.е. я задаю начальное время - две переменных, к ним в комплект добавляются еще две со значениями на "15 минут" больше, но это не часы и минуты, а безразмерные единицы, подчиняющиеся закону прибавления часов и минут. Мне в программу нужно вводить значения переменных вроде 01, 02,... 11,... 23 и 00, 15, 30, 45. Эти данные потом еще раз используются.
Я уже три или четыре цикла написал, которые это могут сделать, но наткнулся на проблему, что "второе" время получается 24:00, а его нельзя использовать.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Может я конечно не очень понимаю задачу, но если это выглядит как время и работает как время - то это время и работать с ним нужно через функции времени и даты. А если дата не нужна - то не использовать ее, из результата только брать часы и минуты. Так проще всего.
 

StarEdik

Новичок
Сообщения
365
Репутация
4
deep-north
затем идет поиск по этому времени
Где идет поиск?
Если в файле то пожалуйста фрагмент этого файла.
Посмотрите здесь, ответ от Alofa
http://autoit-script.ru/index.php?topic=22311.0

и такой простой пример.
Код:
#include <Date.au3>

$h1='10'
$m1='14'
$h1m1 = $h1 & ':' & $m1
$interval ='15'

$dSeqodmya = _NowCalcDate()& " " & $h1m1
$polnoch =  _NowCalcDate()& " " & '23:59'

While $dSeqodmya <= $polnoch
$dSeqodmya = _DateAdd( 'n',$interval, $dSeqodmya)
ConsoleWrite(StringRight($dSeqodmya, 6) & @CRLF)
WEnd
 
Автор
D

deep-north

Новичок
Сообщения
3
Репутация
0
Спасибо за помощь!

Вот код, что мне был нужен.
Пример от StarEdik направил мои мысли в нужное русло.

[hide]
Код:
#include <Date.au3>

$h1='10'
$m1='15'
$h1m1 = $h1 & ':' & $m1
$interval ='5'

$dSeqodnya = _NowCalcDate()& " " & $h1m1
$polnoch =  _NowCalcDate()& " " & '23:50'

While $dSeqodnya <= $polnoch
	$start=$dSeqodnya
	$dSeqodnya = _DateAdd( 'n',$interval, $dSeqodnya)
	$h1=StringMid($start, 12, 2)
	$m1=StringRight($start, 2)
	$h2=StringMid($dSeqodnya, 12, 2)
	$m2=StringMid($dSeqodnya, 15, 2)
	ConsoleWrite("Start: " & $h1 & ":" & $m1 & "   " & "Stop: " & $h2 & ":" & $m2 & @CRLF)
WEnd

[/hide]
 
Верх