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

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

Аватара для madmasles

Ветеран


Сообщения: 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