Что нового

IniWrite не записывает все значения если работает с переменными

S

ShAG1992D

Гость
Может я чегото недочитал но если запустить например IniWrite('1.txt', 'Key1','Key2','Key3') несколько раз то в Key1 2 3 будут записываться последние значения. Так вот вопрос возможна ли запись в значениях Key1 2 3 по несколько раз т. е. такого вида:
[Key1Key1]
Key2Key2 = Key3Key3
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Re: Проблема с IniWrite

Код:
IniWrite("1.txt", "Section", "key1", "text key1")
IniWrite("1.txt", "Section", "key2", "text key2")
IniWrite("1.txt", "Section", "key3", "text key3")
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Проблема с IniWrite

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Проблема с IniWrite" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Администратор.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
ShAG1992D [?]
мне нужно чтобы прибавлялись значения к key3 которые заранее не извесны
Т.е нужно просто дописывать к значению?

Можно так:

Код:
_IniWrite(@DesktopDir & '\1.txt', 'Key1', 'Key2', 'Key3')
_IniWrite(@DesktopDir & '\1.txt', 'Key1', 'Key2', 'Key3')
_IniWrite(@DesktopDir & '\1.txt', 'Key1', 'Key2', 'Key3')

Func _IniWrite($sFile, $sSect, $sKey, $sVal)
	$sOldVal = IniRead($sFile, $sSect, $sKey, '')
	IniWrite($sFile, $sSect, $sKey, $sOldVal & $sVal)
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Или если я правильно понял, то нужно это:

Код:
_IniWrite(@DesktopDir & '\1.txt', 'Key1', 'Key2', 'Key3')
_IniWrite(@DesktopDir & '\1.txt', 'Key1', 'Key2', 'Key3')
_IniWrite(@DesktopDir & '\1.txt', 'Key1', 'Key2', 'Key3')

Func _IniWrite($sFile, $sSect, $sKey, $sVal)
	Local $sOldSect, $sOldKey, $sOldVal
	Local $aSectNames = IniReadSectionNames($sFile)
	
	For $i = 1 To UBound($aSectNames)-1
		If StringRegExp($aSectNames[$i], '(?i)^(' & $sSect & ')*$') Then
			IniRenameSection($sFile, $aSectNames[$i], $aSectNames[$i] & $sSect)
			
			$aSect = IniReadSection($sFile, $aSectNames[$i] & $sSect)
			
			For $j = 1 To UBound($aSect)-1
				If StringRegExp($aSect[$j][0], '(?i)^(' & $sKey & ')*$') Then
					IniDelete($sFile, $aSectNames[$i] & $sSect, $aSect[$j][0])
					Return IniWrite($sFile, $aSectNames[$i] & $sSect, $aSect[$j][0] & $sKey, $aSect[$j][1] & $sVal)
				EndIf
			Next
		EndIf
	Next
	
	Return IniWrite($sFile, $sSect, $sKey, $sVal)
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
ShAG1992D [?]
нужно чтобы в Key3(@SEC) добавлялись новые значения а старые не удалялись например так старые значения в виде секунд будут удалятся
Ну так первый мой пример это и делает:

Код:
For $i = 1 To 5
	_IniWrite(@DesktopDir & '\1.txt', 'Key1', 'Key2', @SEC)
	Sleep(1000)
Next

Func _IniWrite($sFile, $sSect, $sKey, $sVal)
    $sOldVal = IniRead($sFile, $sSect, $sKey, '')
    IniWrite($sFile, $sSect, $sKey, $sOldVal & $sVal)
EndFunc
 
Верх