Ветеран
Сообщения: 812
Благодарности: 353
|
Профиль
|
Отправить PM
| Цитировать
twister777,
Поправил:
читать дальше »
Код: 
Opt('MustDeclareVars', 1)
Global $sLocalNew = 'Aerosoft\Ibiza X Ground' ;новый Local
Global $sTitleNew = 'Island of Ibiza' ;новый Title
Global $sFile = @ScriptDir & '\Scenery.CFG';поменяйте на нужный Вам полный путь к файлу
Global $sRes
$sRes = _AddNewSection($sLocalNew, $sTitleNew, $sFile)
If @error Then
MsgBox(16, 'Error', 'Error')
Else
MsgBox(64, 'OK', 'Add new section: [Area.' & @extended & ']' & @CRLF & _
'with new Layer: ' & $sRes)
EndIf
Func _AddNewSection($sLocal, $sTitle, $sFileCFG)
Local $hFile, $aSectionNames, $iTempSectionNumber, $iTempLayerNumber, $iNumberSectionMax = 0, _
$iNumberLayerMax = 0
Local $sNewSection = 'Area.'
Local $sComment = @CRLF & ';Next section add ' & @MDAY & '.' & @MON & '.' & @YEAR & ' ' & _
@HOUR & ':' & @MIN
Local $aNewData[5][2] = [['Title', $sTitle],['Local', $sLocal],['Layer'], _
['Active', 'TRUE'],['Required', 'FALSE']]
If Not FileExists($sFileCFG) Then Return SetError(1)
If Not $sTitle Or Not $sLocal Then Return SetError(1)
$hFile = FileOpen($sFileCFG, 1)
If $hFile = -1 Then Return SetError(1)
If FileWrite($hFile, $sComment) = 0 Then Return SetError(1)
FileClose($hFile)
$aSectionNames = IniReadSectionNames($sFileCFG)
If @error Then Return SetError(1)
For $i = 1 To $aSectionNames[0]
$iTempSectionNumber = Number(StringRegExpReplace($aSectionNames[$i], '[^0-9]', ''))
If $iTempSectionNumber > $iNumberSectionMax Then
$iNumberSectionMax = $iTempSectionNumber
EndIf
$iTempLayerNumber = Number(IniRead($sFileCFG, $aSectionNames[$i], $aNewData[2][0], 0))
If $iTempLayerNumber > $iNumberLayerMax Then
$iNumberLayerMax = $iTempLayerNumber
EndIf
Next
$iNumberLayerMax = $iNumberLayerMax + 1
$iNumberSectionMax = StringFormat('%03d', $iNumberSectionMax + 1)
$sNewSection = $sNewSection & $iNumberSectionMax
$aNewData[2][1] = $iNumberLayerMax
If Not IniWriteSection($sFileCFG, $sNewSection, $aNewData, 0) Then Return SetError(1)
Return SetError(0, $iNumberSectionMax, $iNumberLayerMax)
EndFunc ;==>_AddNewSection
Есть нюанс. Если нет ни одной секции [Area.***], то будет добавлена секция [Area.001] и значение Layer=1. Можно это значение изменить. Можно, наверное, еще задать какие-то условия на проверку валидности Title и Local.
|
Последний раз редактировалось madmasles, 06-12-2010 в 10:02.
Отправлено: 22:33, 03-12-2010
| #12
|