Что нового

Сравнение даты

Nefakt

Новичок
Сообщения
74
Репутация
3
Всем привет.
Такой вопрос
Как можно сравнить дату компьютера с датой которая прописана в .ini файле
И если они совпадут вывести сообщение.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Nefakt [?]
Как можно сравнить дату компьютера с датой которая прописана в .ini файле
Код:
$sDateINI = IniRead( "filename.ini", "section", "date", "default")
$sDatePC = StringFormat('%.02d.%.02d.%.04d', @MDAY, @MON, @YEAR)
If $sDateINI == $sDatePC Then
   ConsoleWrite('>Ok!' & @CR)
EndIf
 
Автор
Nefakt

Nefakt

Новичок
Сообщения
74
Репутация
3
Спасибо помогло.


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

Немного поспешил.
В общем проблема в том что данный скрипт работает немного не так.
В ini я добавил несколько пунктов с разными датами.
Данный скрипт видит только даты которые будут а сегодняшнюю дату он не видит почему то.

Как решить?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
если несколько дат записано в одной секции, то использовать
Код:
IniReadSection

получишь массив , потом в цикле сравнивай.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Nefakt [?]
В ini я добавил несколько пунктов с разными датами.
Наличие двух одинаковых ключей в одной секции недопустимо (будет прочитан только последний первый ключ).
При наличии нескольких секций с одинаковым именем, прочитана будет лишь последняя первая секция .
 
Автор
Nefakt

Nefakt

Новичок
Сообщения
74
Репутация
3
IniReadSection я использую .
Ini такого вида
Код:
[Date]
Test = 28.09.2014
Date = 29.09.2014
Date 2 = 30.09.2014
Test1 = 29.09.2014
Буду дома выложу сам код как беру значения из ini и сравниваю его.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
$rs = IniReadSection('date.ini','date')
$nd = @MDAY & '.' & @MON & '.' & @YEAR
For $i = 1 To $rs[0][0]
	If $nd == $rs[$i][1] Then ConsoleWrite($rs[$i][0] & '=' & $rs[$i][1]&@CRLF)
Next

вид файла
Код:
[Date]
Test=28.09.2014
Date=29.09.2014
Date 2=28.09.2014
Test1=29.09.2014
 
Автор
Nefakt

Nefakt

Новичок
Сообщения
74
Репутация
3
Вот какой у меня код
Код:
$sDatePC = StringFormat('%.02d.%.02d.%.04d', @MDAY, @MON, @YEAR)
While 1
$varq = IniReadSection(@ScriptDir & '\settings.ini', 'Date')
If @error Then
    MsgBox(4096, "", "Произошла ошибка, возможно отсутствует INI-файл.")
Else
    For $i = 1 To $varq[0][0]
		$date = $varq[$i][0]
		$sDateINI =IniRead(@ScriptDir & '\settings.ini', "Date", $date, "")

		If $sDateINI == $sDatePC Then
 		MsgBox(8192+16, "",  $date)
		IniDelete ( @ScriptDir & '\settings.ini', "Date" , $date )
		EndIf
	Next
EndIf
Sleep(1000)
WEnd



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

joiner
Спасибо работает. В принципе код от Garrett похож на твой но почему то работал немного не так.
Странно...
Ну все равно спасибо всем кто помог.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Garrett [?]
будет прочитан только последний ключ [...] прочитана будет лишь последняя секция
Тесты говорят об обратном - только первый ключ и первая секция будут прочитаны.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Nefakt [?]
В принципе код от Garrett похож на твой но почему то работал немного не так.
Читайте справку!!!
Код:
$sDateINI = IniRead( "settings.ini", "Date", "Date 2", "default")
$sDatePC = StringFormat('%.02d.%.02d.%.04d', @MDAY, @MON, @YEAR)
If $sDateINI == $sDatePC Then
   ConsoleWrite('>Ok!' & @CR)
EndIf


Вами был задан вопрос:
Nefakt [?]
Как можно сравнить дату компьютера с датой которая прописана в .ini файлеИ если они совпадут вывести сообщение.

И я считаю, что дал вам исчерпывающий ответ!
Но, вместо того чтобы самообразовываться вы начинаете вести себя как первоклассник, которому предстоит постичь тайны логического мышления!

Прочтите, может поможет?!
Искусство правильно мыслить


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

InnI [?]
Тесты говорят об обратном
Да вы правы, ошибся. Первый найденный ключ или секция.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
В wikipedia тоже указано, что, согласно соглашениям, обрабатываются последние ключ и секция. Вероятно, AutoIt данных соглашений не придерживается.
 
Верх