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, то отфиксировать переход "границы" можно контролем одного бита... или можно "обрезать" часть старших разрядов... ну и т.д.