PDA

Показать полную графическую версию : [решено] Правильная запись в ini файл и работа с группой переменных


eus_deus
10-10-2013, 00:16
Всем привет! Вопрос - имем функцию записи в файл ини параметров с полей ввода
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
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _FileTheme()
$FileINI = @ScriptDir (http://autoit-script.ru/autoit3_docs/macros.htm#@scriptdir) & '\Setting.ini'

$key1 = GUICtrlRead (http://autoit-script.ru/autoit3_docs/functions/GUICtrlRead.htm)($vInput1)
$key2 = GUICtrlRead (http://autoit-script.ru/autoit3_docs/functions/GUICtrlRead.htm)($vInput2)
$key3 = GUICtrlRead (http://autoit-script.ru/autoit3_docs/functions/GUICtrlRead.htm)($vInput3)
$key4 = GUICtrlRead (http://autoit-script.ru/autoit3_docs/functions/GUICtrlRead.htm)($vInput4)
$key5 = GUICtrlRead (http://autoit-script.ru/autoit3_docs/functions/GUICtrlRead.htm)($vInput5)
$key6 = GUICtrlRead (http://autoit-script.ru/autoit3_docs/functions/GUICtrlRead.htm)($vInput6)
$key7 = GUICtrlRead (http://autoit-script.ru/autoit3_docs/functions/GUICtrlRead.htm)($vInput7)

$aKeys = StringSplit (http://autoit-script.ru/autoit3_docs/functions/StringSplit.htm)('BkColor|IconBkColor|IconBkGrdColor|SelectBkColor|SelectRectColor|TextColor|SelectT extColor', '|')
$sData = ''

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aKeys[0]
$sVal = Eval (http://autoit-script.ru/autoit3_docs/functions/Eval.htm)('key' & $i)

If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $sVal <> '' Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$sData &= $aKeys[$i] & '=' & $sVal & @LF (http://autoit-script.ru/autoit3_docs/macros.htm#@lf)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

IniWriteSection (http://autoit-script.ru/autoit3_docs/functions/IniWriteSection.htm)($FileINI, "TEST", $sData)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)

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

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

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _FileTheme()
$FileINI = @ScriptDir (http://autoit-script.ru/autoit3_docs/macros.htm#@scriptdir) & '\Setting.ini'

$aKeys = StringSplit (http://autoit-script.ru/autoit3_docs/functions/StringSplit.htm)('BkColor|IconBkColor|IconBkGrdColor|SelectBkColor|SelectRectColor|TextColor|SelectT extColor', '|')
$sData = ''

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $aKeys[0]
$sVal = GUICtrlRead (http://autoit-script.ru/autoit3_docs/functions/GUICtrlRead.htm)(Eval (http://autoit-script.ru/autoit3_docs/functions/Eval.htm)('vInput' & $i))

If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $sVal <> '' Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$sData &= $aKeys[$i] & '=' & $sVal & @LF (http://autoit-script.ru/autoit3_docs/macros.htm#@lf)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

IniWriteSection (http://autoit-script.ru/autoit3_docs/functions/IniWriteSection.htm)($FileINI, "TEST", $sData)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)

AZJIO
10-10-2013, 13:58
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
спасибо всем, ход мысли понял




© OSzone.net 2001-2012