- Сообщения
- 5,379
- Репутация
- 2,724
Большинство программ, когда они запускаются на компьютере в первый раз, создают в реестре свои разделы с умолчальными (стартовыми) настройками, а если параметры в реестре уже присутствуют, то считывают их значения. Это довольно грамотный подход, но для каждого параметра придется использовать пару функций: RegRead() и RegWrite(), с проверкой @error флага. А если таких параметров ...дцать?
:blink:
Я написал простую функцию, которая работает аналогично RegRead(), но если в реестре по указанному пути указанного параметра не существует, то он создается, и с дефолтным значением - $sDefault. Это же значение будет возвращено функцией. Таким образом вышеупомянутые действия сводятся к вызову всего лишь одной функции _RegRead().
Пример:
:blink:
Я написал простую функцию, которая работает аналогично RegRead(), но если в реестре по указанному пути указанного параметра не существует, то он создается, и с дефолтным значением - $sDefault. Это же значение будет возвращено функцией. Таким образом вышеупомянутые действия сводятся к вызову всего лишь одной функции _RegRead().
Код:
Func _RegRead($sKey, $sValue, $sType, $sDefault)
Local $Val = RegRead($sKey, $sValue)
If @error Then
RegWrite($sKey, $sValue, $sType, $sDefault)
Return $sDefault
EndIf
Switch $sType
Case 'REG_SZ', 'REG_MULTI_SZ', 'REG_EXPAND_SZ'
If Not IsString($Val) Then
Return SetError(1, 0, $sDefault)
EndIf
Case 'REG_BINARY'
If Not IsBinary($Val) Then
Return SetError(1, 0, $sDefault)
EndIf
Case 'REG_DWORD'
If Not IsInt($Val) Then
Return SetError(1, 0, $sDefault)
EndIf
Case Else
Return SetError(1, 0, $sDefault)
EndSwitch
Return $Val
EndFunc ;==>_RegRead
Пример:
Код:
$Val = _RegRead('HKCU\Software\MyProg', 'Test', 'REG_DWORD', 4)
ConsoleWrite($Val & @CR)
RegWrite('HKCU\Software\MyProg', 'Test', 'REG_DWORD', 2)
$Val = _RegRead('HKCU\Software\MyProg', 'Test', 'REG_DWORD', 4)
ConsoleWrite($Val & @CR)