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-файла в массив, а потом его перезаписать с нуля - тогда позиции будут жесткими, иначе все будет плавать.
попожжа наваяю, может быть