Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для XXXler

Ветеран


Сообщения: 1073
Благодарности: 194

Профиль | Отправить PM | Цитировать


Creat0R, все отловил ситуацию:
при таком заполнении:

Код: Выделить весь код
Func IniWriteVP($File,$Sect,$Param,$Val,$Pos=0)
	Local $ValArr,$i
	If $Pos<>0 Then IniDelete($File,$Sect,$Param)
	$ValArr=IniReadSection($File,$Sect)
	If @error Or $Pos=0 Or $ValArr[0][0]<$Pos Then
		IniWrite($File,$Sect,$Param,$Val)
		SetError(@error)
	Else
		For $i=1 To $ValArr[0][0]
			IniDelete($File,$Sect,$ValArr[$i][0])
		Next
		For $i=1 To $ValArr[0][0]
			If $Pos=$i Then	IniWrite($File,$Sect,$Param,$Val)
			IniWrite($File,$Sect,$ValArr[$i][0],$ValArr[$i][1])
		Next
	EndIf
EndFunc

For $i=1 To 3
	For $y=1 to 10
		IniWriteVP(@ScriptDir&"\Test.ini","Test"&$i,"Par"&$y,"Фигня")
	Next
Next

IniWriteVP(@ScriptDir&"\Test.ini","Test1","Par100","пятое значение",5)
IniWriteVP(@ScriptDir&"\Test.ini","Test3","Par3","третье значение",3)
IniWriteVP(@ScriptDir&"\Test.ini","Test3","Par1","седьмое значение",7)
при присвоении Par1 седьмой позиции Par3 становится вторым, т.к. Par1 переходит в 7 строку:

Код: Выделить весь код
[Test1]
Par1=Фигня
Par2=Фигня
Par3=Фигня
Par4=Фигня
Par100=пятое значение
Par5=Фигня
Par6=Фигня
Par7=Фигня
Par8=Фигня
Par9=Фигня
Par10=Фигня
[Test2]
Par1=Фигня
Par2=Фигня
Par3=Фигня
Par4=Фигня
Par5=Фигня
Par6=Фигня
Par7=Фигня
Par8=Фигня
Par9=Фигня
Par10=Фигня
[Test3]
Par2=Фигня
Par3=третье значение
Par4=Фигня
Par5=Фигня
Par6=Фигня
Par7=Фигня
Par1=седьмое значение
Par8=Фигня
Par9=Фигня
Par10=Фигня
тут наверное прийдется, предварительно загнать все изменения ini-файла в массив, а потом его перезаписать с нуля - тогда позиции будут жесткими, иначе все будет плавать.

попожжа наваяю, может быть

Отправлено: 15:18, 20-07-2006 | #229