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

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

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
Цитата:
А жаль - Я как раз написал собственный редактор реестра
любую рекурсию можно так или иначе заменить на циклы... вот вариант решения задачи для списка каталогов без использования рекурсии:
Код: Выделить весь код
#include <File.au3>
#include <Array.au3>

Global $DirArray[1]
_ArrayAddFileListSubDir($DirArray, "c:\windows")
_ArrayDisplay($DirArray,'')

Func _ArrayAddFileListSubDir (ByRef $aGDir, $sPath = @ScriptDir)
    Local $i = UBound($aGDir), $aLDir = _FileListToArray($sPath, "*", 2)
    _ArrayAddFileList($aGDir, $sPath)
    While $i < UBound($aGDir)
        _ArrayAddFileList($aGDir, $aGDir[$i])
        $i+=1
    WEnd
EndFunc

Func _ArrayAddFileList(ByRef $aGDir, $sPath)
    Local $i, $aLDir = _FileListToArray($sPath, "*", 2)
    If UBound($aGDir, 0)=1 And UBound($aLDir, 0)=1 Then
        For $i = 1 To $aLDir[0]
            _ArrayAdd($aGDir, $sPath & '\' & $aLDir[$i])
        Next
    EndIf
EndFunc
Цитата:
как это одной строчкой сделать?
арифметический вариант _IIF() :
Код: Выделить весь код
$res = ($Value<$Nmber)*$Value + Not($Value<$Nmber)*$Nmber
Цитата:
мне больше для расширения своего круга знании
в такой формулировке одними битовыми операциями все равно не обойтись, поэтому получится еще длиннее... вот если бы $value с каждым шагом изменялось на 1, то отфиксировать переход "границы" можно контролем одного бита... или можно "обрезать" часть старших разрядов... ну и т.д.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:34, 19-10-2007 | #616