Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Правильная запись в ini файл и работа с группой переменных (http://forum.oszone.net/showthread.php?t=269648)

eus_deus 10-10-2013 00:16 2231700

Правильная запись в ini файл и работа с группой переменных
 
Всем привет! Вопрос - имем функцию записи в файл ини параметров с полей ввода
Код:

Func _FileTheme()
$FileINI =@ScrptDir&'\Setting.ini'
$key1=guictrlread($vInput1)
$key2=guictrlread($vInput2)
$key3=guictrlread($vInput3)
$key4=guictrlread($vInput4)
$key5=guictrlread($vInput5)
$key6=guictrlread($vInput6)
$key7=guictrlread($vInput7)
$sData ="BkColor="&$key1 & @LF & "IconBkColor="& $key2 &@LF &"IconBkGrdColor="& $key3&@LF& "SelectBkColor="&$key4&@LF&"SelectRectColor="&$key5&@LF&"TextColor="&$key6&@LF &"SelectTextColor="&$key7
IniWriteSection($FileINI,"TEST",$sData)
EndFunc

Как уточнить скрипту, что если поле пустое, то и сам параметр не записывать? И вообще - как упрощать однотипные переменные и делать с ними действия все вместе? Например, все очистить

Creat0R 10-10-2013 00:32 2231708

Код:

Func _FileTheme()
    $FileINI = @ScriptDir & '\Setting.ini'

    $key1 = GUICtrlRead($vInput1)
    $key2 = GUICtrlRead($vInput2)
    $key3 = GUICtrlRead($vInput3)
    $key4 = GUICtrlRead($vInput4)
    $key5 = GUICtrlRead($vInput5)
    $key6 = GUICtrlRead($vInput6)
    $key7 = GUICtrlRead($vInput7)

    $aKeys = StringSplit('BkColor|IconBkColor|IconBkGrdColor|SelectBkColor|SelectRectColor|TextColor|SelectTextColor', '|')
    $sData = ''

    For $i = 1 To $aKeys[0]
        $sVal = Eval('key' & $i)

        If $sVal <> '' Then
            $sData &= $aKeys[$i] & '=' & $sVal & @LF
        EndIf
    Next

    IniWriteSection($FileINI, "TEST", $sData)
EndFunc

Цитата:

Цитата eus_deus
как упрощать однотипные переменные и делать с ними действия все вместе? Например, все очистить »

Использовать массив, ну или через Eval/Assign (хотя для разборчивости и оптимизации массивы предпочтительнее).

Впрочем для примера в первом сообщении, я бы сделал так:

Код:

Func _FileTheme()
    $FileINI = @ScriptDir & '\Setting.ini'

    $aKeys = StringSplit('BkColor|IconBkColor|IconBkGrdColor|SelectBkColor|SelectRectColor|TextColor|SelectTextColor', '|')
    $sData = ''

    For $i = 1 To $aKeys[0]
        $sVal = GUICtrlRead(Eval('vInput' & $i))

        If $sVal <> '' Then
            $sData &= $aKeys[$i] & '=' & $sVal & @LF
        EndIf
    Next

    IniWriteSection($FileINI, "TEST", $sData)
EndFunc


AZJIO 10-10-2013 13:58 2231972

Код:

Func _FileTheme()
    $FileINI = @ScriptDir & '\Setting.ini'
    Local $sData
    $key1
= GUICtrlRead($vInput1)
    If $key1 Then $sData &= "BkColor=" & $key1 & @LF
    $key2 = GUICtrlRead($vInput2)
    If $key2 Then $sData &= "IconBkColor=" & $key2 & @LF
    $key3 = GUICtrlRead($vInput3)
    If $key3 Then $sData &= "IconBkGrdColor=" & $key3 & @LF
    $key4 = GUICtrlRead($vInput4)
    If $key4 Then $sData &= "SelectBkColor=" & $key4 & @LF
    $key5 = GUICtrlRead($vInput5)
    If $key5 Then $sData &= "SelectRectColor=" & $key5 & @LF
    $key6 = GUICtrlRead($vInput6)
    If $key6 Then $sData &= "TextColor=" & $key6 & @LF
    $key7 = GUICtrlRead($vInput7)
    If $key7 Then $sData &= "SelectTextColor=" & $key7 & @LF
    $sData = StringTrimLeft($sData, 1)
    IniWriteSection($FileINI, "TEST", $sData)
EndFunc  ;==>_FileTheme


eus_deus 11-10-2013 16:53 2232745

спасибо всем, ход мысли понял


Время: 22:34.

Время: 22:34.
© OSzone.net 2001-