Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: ViSiToR
Дата сообщения: 22.10.2007 04:20
euheny
По поводу Auto3Lib.exe... вот временное решение:


Код: $sRegKey = "HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt"
$sRegValue = "Version"
$sRegType = "REG_SZ"
$sAu3SetVersion = "v3.2.4.9"

$sCurrent = RegRead($sRegKey, $sRegValue)
RegWrite($sRegKey, $sRegValue, $sRegType, $sAu3SetVersion)
RunWait("Auto3Lib.exe")
RegWrite($sRegKey, $sRegValue, $sRegType, $sCurrent)
Автор: euheny
Дата сообщения: 22.10.2007 07:55
ViSiToR

Цитата:
поэтому лучше на оф. форуме поискать отдельно выложенные библиотеки.

так и выложил бы мне их сразу (уже конечно не надо)

Цитата:
Да. Run("control.exe")

пасибки - не знал

Цитата:
Полагаю что тоже да.

пример:
devmgmt.msc и из конт.меню что-нибудь сделать

Джон чег-нить ответил ?
Автор: ViSiToR
Дата сообщения: 22.10.2007 08:14
euheny

Цитата:
так и выложил бы мне их сразу

У меня они в куче вместе со стандартными инклюдами, а выискивать времени нет


Цитата:
пример

Не уверен что понял


Цитата:
Джон чег-нить ответил ?

Очень странно, но пока нет - Видимо нужно всё же на самом форуме запостить...
Автор: max89
Дата сообщения: 22.10.2007 09:07
Подскажите, можно на произвольном примере, как мне сделать. Нужно открыть интернет-страницу, там будет предложено в поле ввести числа (графическая картинка типа рапиды), нужно распознать и ввести их. Если неудача (высвеченная дата не обнулилась), то к примеру через 3 минуты обновить страницу и проделать тоже самое пока не обнулится дата на странице.
Автор: ViSiToR
Дата сообщения: 22.10.2007 18:26
max89

Цитата:
нужно распознать и ввести их

Это не так просто, OCR штука довольно сложна для AutoIt'а, однако на оф. форуме есть несколько решении, одно из них, это использование Office 2003 (а точнее COM-обьект MODI.Document).
Автор: NIKZZZZ
Дата сообщения: 22.10.2007 19:38
max89

Цитата:
нужно распознать и ввести их.

Почитай тему.
Все остальное просто и примитивно.
Автор: euheny
Дата сообщения: 22.10.2007 20:41
ViSiToR

Цитата:
Не уверен что понял

ну к примеру выруби свой модем (отключить)
Автор: ViSiToR
Дата сообщения: 22.10.2007 22:49
euheny

Цитата:
выруби свой модем

В диалоговом варианте только нажатием клавиш (типа Send("{Down 16}"), Send("{Right}"), Send("{Down}"), Send("{Enter}") и т.д ).

А вообще такие вещи лучше делать либо через реестер, либо API-вызовами (во втором случае я не силён).
Автор: euheny
Дата сообщения: 23.10.2007 00:55
ViSiToR

Цитата:
только нажатием клавиш

так в том то и дело что у каждого по-разному

Цитата:
либо API-вызовами

а чего-нить на форуме есть по этому поводу ?

кстати по-поводу смены переменных сред есть чего ?
Автор: ViSiToR
Дата сообщения: 23.10.2007 04:13
euheny

Цитата:
а чего-нить на форуме есть по этому поводу ?

Не встречал.


Цитата:
по-поводу смены переменных сред есть чего ?


Есть...
Мне как то самому надо было, поэтому написал вот такую функцию:

(Где $KeyVal, определяется путь в реестре куда будет произведена запись, если 1, то в «Переменные среды пользователя», в противном случае в «Системные переменные»)


Код:
_SetEnvironment("NewEnv", "C:\MyPath", 1, 0)

Func _SetEnvironment($Name, $Value, $Replace=0, $KeyVal=0)
If $Name = "" Then Return SetError(1)
If $Value = "" Then Return SetError(2)
If $Replace <> 0 And $Replace <> 1 Then Return SetError(3)
Local $ReadEnv
Local $SystemRegKey = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
Local $UserRegKey = "HKEY_CURRENT_USER\Environment"

Local $RegKey = $SystemRegKey
If $KeyVal = 1 Then $RegKey = $UserRegKey

If $Replace = 1 Then
RegWrite($RegKey, $Name, "REG_SZ", $Value)
ElseIf RegRead($RegKey, $Name) = "" Then
RegWrite($RegKey, $Name, "REG_SZ", $Value)
EndIf
EnvUpdate()
EndFunc
Автор: Maza Faka
Дата сообщения: 23.10.2007 07:16
ViSiToR
А зачем здесь
Цитата:
Func _SetEnvironment($Name, $Value, $Replace=0, $KeyVal=0)

присваивать переменной $Replace нулевое значение, ведь всё равно значение будет таким, каким передаётся в функцию?

P.S. Эту функцию ты наверное давно писал?
Автор: ViSiToR
Дата сообщения: 23.10.2007 07:28
Maza Faka

Цитата:
всё равно значение будет таким, каким передаётся в функцию?

Это называется присвоение параметру атрибута “по умолчанию” (a.k.a Default) - Если просто вызвать функцию так:


Код: _SetEnvironment("NewEnv", "C:\")
Автор: euheny
Дата сообщения: 23.10.2007 07:36
ViSiToR

Цитата:
В диалоговом варианте только нажатием клавиш

хорошо
а если я двигаюсь таким образом по пунктам - я могу знать по каким именно ?


ещё интересует сравнение снимков реестра и дисков - есть чего такого ?
Автор: ViSiToR
Дата сообщения: 23.10.2007 09:00
euheny

Цитата:
я могу знать по каким именно ?

Получить текст?

Я пытался адаптировать UDF из стандартной библиотеки GuiTreeView (_GUICtrlTreeViewGetText()), но не хочет она возвращать текст ...


Код:
$GetText = TreeViewGetSelectedText("[CLASS:MMCMainFrame]", "SysTreeView321")
ConsoleWrite($GetText)

Func TreeViewGetSelectedText($Title, $TV_Class="SysTreeView321")
Local $hWnd = WinGetHandle($Title)
Local $s_Text = ""
Local $h_Item = ControlGetHandle($Title, "", $TV_Class)
If $h_Item = "" Then Return SetError(1, 1, "")

Local $st_Text = DllStructCreate("char[4096]"); create a text 'area' for receiving the text
If @error Then Return SetError(@error, 0, "")

Local $st_TVITEM = DllStructCreate("uint;uint;uint;uint;ptr;int;int;int;int;uint;int")
If @error Then Return SetError(@error, @error, "")

DllStructSetData($st_TVITEM, 1, 0x0001) ;$TVIF_TEXT
DllStructSetData($st_TVITEM, 2, $h_Item)
DllStructSetData($st_TVITEM, 5, DllStructGetPtr($st_Text))
DllStructSetData($st_TVITEM, 6, DllStructGetSize($st_Text))

Local Const $TVM_GETITEM = 0xFFFF0001+12 ;$TVI_FIRST + 12
Local $iPtr = DllStructGetPtr($st_TVITEM)
Local $iRet = DllCall("user32.dll", "long", "SendMessage", "hwnd", $hWnd, "int", $TVM_GETITEM, "int", 0, "ptr", $iPtr)
If $iRet[0] Then $s_Text = DllStructGetData($st_Text, 1)

Return $s_Text
EndFunc
Автор: euheny
Дата сообщения: 23.10.2007 20:05
ViSiToR
с TreeView буду разбираться ...


Цитата:
В смысле снимков? структура каталогов (путей)?

в самом простом варианте разбор логов regshot- а, но может на AutoIt есть комплексный вариант ?


А чего редактор забросил ? Занялся чем-то более интересным ?
Автор: ViSiToR
Дата сообщения: 24.10.2007 03:39
euheny

Цитата:
может на AutoIt есть комплексный вариант ?

Я не вкурсе
Я кстати написал скрпитик для чтения всего реестра (что то типа аналога RegEdit ), работает до ужаса медленно (правда на лету показывает уже считанные элементы), видимо нужен другой подход, если есть интерес могу выложить этот недо-скрипт .


Цитата:
чего редактор забросил ? Занялся чем-то более интересным ?

Угу, а точнее более полезным, чем изобретение велосипеда
Автор: euheny
Дата сообщения: 24.10.2007 07:04
ViSiToR

Цитата:
Я кстати написал скрпитик для чтения всего реестра

а это как - сохранить весь реестр ?

Цитата:
изобретение велосипеда

это ты про существующие скрипты или существующие проги ?
Автор: NIKZZZZ
Дата сообщения: 24.10.2007 11:11
ViSiToR

Цитата:
Я кстати написал скриgтик для чтения всего реестра

Я писал подобную штуку для сохранения и сравнения снимков реестра, работает достаточно быстро, правда немного медленнее, чем reg.exe .

Автор: euheny
Дата сообщения: 25.10.2007 00:50
NIKZZZZ
а почему ссылку не дал - прога платная ?



меня тут интересует способ получения лога работы скрипта типа
команда - результат
есть такое ?
Автор: NIKZZZZ
Дата сообщения: 25.10.2007 10:33
euheny

Цитата:
а почему ссылку не дал - прога платная ?

На что?

Автор: euheny
Дата сообщения: 25.10.2007 19:57
NIKZZZZ

Цитата:
На что?


Цитата:
штуку для сохранения и сравнения снимков реестра


Автор: ViSiToR
Дата сообщения: 26.10.2007 01:17
NIKZZZZ

Цитата:
писал подобную штуку для сохранения и сравнения снимков реестра, работает достаточно быстро

Я так понял используется экспорт реестра (regedit /e /a) и обработка полученного текста? или всё же через RegEnum?
Если не трудно, кинь сюда (или в ПМ) скриптик

Добавлено:
euheny

Цитата:
интересует способ получения лога работы скрипта типа
команда - результат
есть такое ?

Только вручную писать лог (проверяя действие и результат).
Автор: NIKZZZZ
Дата сообщения: 26.10.2007 11:44
euheny
У меня нет готовой утилиты.
ViSiToR

Цитата:
Если не трудно, кинь сюда

Могу только тестовый кусочек.
[more=Демо]Global $f0, $f[2], $key[2], $value[2], $TempLine[2]
$text = ''
$f0 = FileOpen('Result.txt', 2)
Export('', 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion')
FileClose($f0)
MsgBox(0, 'Pass', $text)
$f[0] = FileOpen('Result.txt', 0)
$f[1] = FileOpen('Result2.txt', 0)
Compare()
FileClose($f[0])
FileClose($f[1])


Func Export($key0, $key1)
Local $i, $Temp, $Temp1
FileWriteLine($f0, '[' & StringLen($key0) & ']' & $key1)
; $text &= '[' & StringLen($key0) & ']' & $key & @CRLF
$i = 0
While 1
$i += 1
$Temp = RegEnumVal($key0 & $key1, $i)
If @error Then ExitLoop
$Temp1 = RegRead($key0 & $key1, $Temp)
FileWriteLine($f0, '"' & $Temp & '"=' & @extended & $Temp1)
WEnd
$i = 0
While 1
$i += 1
$Temp = RegEnumKey($key0 & $key1, $i)
If @error Then ExitLoop
Export($key0 & $key1 & '\', $Temp)
WEnd
Return
EndFunc ;==>Export

Func Read($n)
Local $Temp
$value[$n] = ''
While StringLeft($TempLine[$n], 1) <> '['
$TempLine[$n] = FileReadLine($f[$n])
If @error Then
$key[$n] = 'z'
Return
EndIf
WEnd
;MsgBox(0,$Temp,
$key[$n] = StringLeft($key[$n] & '\', Number(StringTrimLeft($TempLine[$n], 1))) & StringRightStr($TempLine[$n], ']')
$TempLine[$n] = FileReadLine($f[$n])
If @error Then Return
While $TempLine[$n] = '' Or StringLeft($TempLine[$n], 1) <> '['
If $TempLine[$n] <> '' Then $value[$n] &= $TempLine[$n] & @CRLF
$TempLine[$n] = FileReadLine($f[$n])
If @error Then Return
WEnd
; MsgBox(0, '*', $key[$n] & @CRLF & $value[$n])
Return
EndFunc ;==>Read

Func Compare()
Local $str1, $str2
$TempLine[0] = ''
$TempLine[1] = ''
Read(0)
Read(1)
While ($key[0] & $key[1]) <> 'zz'
; MsgBox(0,"**",$key[0] & @CRLF&$key[1])
Select
Case StringCompare($key[0], $key[1]) = 0
Read(0)
Read(1)
Case StringCompare($key[0], $key[1]) < 0
MsgBox(0, 'NewKey', $key[0] & @CRLF & $value[0])
Read(0)
; MsgBox(0,'',$str1 & @CRLF & $str2)
Case StringCompare($key[0], $key[1]) > 0
; MsgBox(0,'',$str1 & @CRLF & $str2)
MsgBox(0, 'DelKey', $key[1])
Read(1)
EndSelect
WEnd
EndFunc ;==>Compare

Func StringLeftStr($str, $sstr, $Flag = 1)
If StringInStr($str, $sstr, 0, $Flag) Then
Return StringLeft($str, StringInStr($str, $sstr, 0, $Flag) - 1)
EndIf
Return $str
EndFunc ;==>StringLeftStr

Func StringRightStr($str, $sstr, $Flag = 1)
If StringInStr($str, $sstr, 0, $Flag) Then
Return StringMid($str, StringInStr($str, $sstr, 0, $Flag) + StringLen($sstr))
EndIf
Return ''
EndFunc ;==>StringRightStr
[/more]
Автор: ViSiToR
Дата сообщения: 26.10.2007 22:05
NIKZZZZ

Цитата:
Могу только тестовый кусочек.

Ок, спасибо.
Но я не думаю что с таким методом будет быстро работать (я про создание TreeView по структуре RegEdit'а), наверное нужно экспортировать весь реестр одним махом в файл, а потом обработать файл, у меня есть скрипт vbs с подобным решением, там правда для поиска по реесру, но принцип считывания реестра именно такой, и работает быстро .
Автор: ViSiToR
Дата сообщения: 27.10.2007 00:19
В общем вот моя версия на аналог к RegEdit:


Код: #include <GuiConstants.au3>
#include <GuiTreeView.au3>
#include <GuiListView.au3>
Opt("GuiOnEventMode", 1)

Global $My_Computer_TVID
Global $HKRoot_ID_Arr[5], $TreeViewItemsArr[1]
Global $HKRoot_Names_Arr[5] = ["HKCR", "HKCU", "HKLM", "HKU", "HKCC"]

$Gui = GUICreate("RegEdit Ex", 600, 400)
GUISetOnEvent(-3, "MainEvents")

$TreeView = GUICtrlCreateTreeView(20, 30, 250, 320, _
BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), _
$WS_EX_CLIENTEDGE+$WS_EX_STATICEDGE)

$ListView = GUICtrlCreateListView("Name|Type|Value", 280, 30, 300, 320, $LVS_NOSORTHEADER)

$RegPath_Input = GUICtrlCreateInput("", 20, 370, 560, 20, $ES_READONLY)
GUICtrlSetBkColor(-1, 0xFFFFFF)

GUISetState()

InitializeRegistry()

While 1
Sleep(100)
WEnd

Func
MainEvents()
Switch @GUI_CtrlId
Case -3
Exit
EndSwitch
EndFunc

Func
TreeViewEvents()
Local $SelTree = _GUICtrlTreeViewGetTree($TreeView, "\")
Local $KeyName = StringTrimLeft($SelTree, StringInStr($SelTree, "\"))

GUICtrlSetData($RegPath_Input, $KeyName)
_GUICtrlListViewDeleteAllItems($ListView)

If @GUI_CtrlId = $My_Computer_TVID Then Return

Local
$DefaultItemStr = "(Default)|REG_SZ|(No Value)"
Local $Instance = 0, $Value, $LV_Data = ""
While 1
$Instance += 1
$Value = RegEnumVal($KeyName, $Instance)
If @error Then
If
$LV_Data = "" Then $LV_Data = $DefaultItemStr & @LF
ExitLoop
EndIf

$ItemValue = $Value
If $Value = "" Then $ItemValue = "(Default)"
$LV_Data &= $ItemValue & "|" & GetExtendedType(@extended) & "|" & RegRead($KeyName, $Value) & @LF
WEnd

If
$LV_Data <> "" Then
If Not
StringInStr($LV_Data, "(Default)|") Then $LV_Data = $DefaultItemStr & @LF & $LV_Data
$LV_DataArr
= StringSplit($LV_Data, @LF)
For $i = 1 To $LV_DataArr[0]
If $LV_DataArr[$i] <> "" Then GUICtrlCreateListViewItem($LV_DataArr[$i], $ListView)
Next
GUICtrlSendMsg($ListView, $LVM_SETCOLUMNWIDTH, 0, -1)
GUICtrlSendMsg($ListView, $LVM_SETCOLUMNWIDTH, 1, -1)
GUICtrlSendMsg($ListView, $LVM_SETCOLUMNWIDTH, 2, -1)
Local $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($ListView)]
_GUICtrlListViewSort($ListView, $B_DESCENDING, 0)
EndIf

EndFunc

Func
GetExtendedType($Extended)
Local $RegTypeArr[6] = [5, "REG_SZ", "REG_MULTI_SZ", "REG_EXPAND_SZ", "REG_DWORD", "REG_BINARY"]
For $i = 1 To 5
If $Extended = $i Then Return $RegTypeArr[$i]
Next
EndFunc

Func
InitializeRegistry()
$My_Computer_TVID = GUICtrlCreateTreeViewItem("My Computer", $TreeView)
GUICtrlSetOnEvent($My_Computer_TVID, "TreeViewEvents")
GUICtrlSetColor($My_Computer_TVID, 0x0000C0)
GUICtrlSetImage($My_Computer_TVID, "shell32.dll", 15)

Local $WaitID_Arr[5]
For $i = 0 To 4
$HKRoot_ID_Arr[$i] = GUICtrlCreateTreeViewItem($HKRoot_Names_Arr[$i], $My_Computer_TVID)
GUICtrlSetOnEvent($HKRoot_ID_Arr[$i], "TreeViewEvents")
GUICtrlSetImage($HKRoot_ID_Arr[$i], "shell32.dll", 5, 2)
GUICtrlSetImage($HKRoot_ID_Arr[$i], "shell32.dll", 4, 4)
GUICtrlSetState($HKRoot_ID_Arr[$i], $GUI_DEFBUTTON)

$WaitID_Arr[$i] = GUICtrlCreateTreeViewItem("Please wait...", $HKRoot_ID_Arr[$i])
GUICtrlSetImage($WaitID_Arr[$i], "shell32.dll", 0)
Next

GUICtrlSetState($My_Computer_TVID, $GUI_EXPAND+$GUI_DEFBUTTON)

For $i = 0 To 4
BuildRegTree($HKRoot_Names_Arr[$i], $HKRoot_ID_Arr[$i])
GUICtrlDelete($WaitID_Arr[$i])
Next
EndFunc

Func
BuildRegTree($sPath, $TreeViewID)
Local $KeysListArr[1], $SubKeysListArr, $Instance = 0, $Enum, $CurrentKeyPath
Local $Ubound

While 1
Sleep(1)
$Instance += 1
$Enum = RegEnumKey($sPath, $Instance)
If @error Then ExitLoop

$CurrentKeyPath = $sPath & "\" & $Enum

$Ubound
= UBound($TreeViewItemsArr)
ReDim $TreeViewItemsArr[$Ubound+1]
$TreeViewItemsArr[$UBound] = GUICtrlCreateTreeViewItem($Enum, $TreeViewID)
GUICtrlSetOnEvent($TreeViewItemsArr[$UBound], "TreeViewEvents")
GUICtrlSetImage($TreeViewItemsArr[$UBound], "shell32.dll", 5, 2)
GUICtrlSetImage($TreeViewItemsArr[$UBound], "shell32.dll", 4, 4)

RegEnumKey($sPath, $Instance)
If Not @error Then BuildRegTree($CurrentKeyPath, $TreeViewItemsArr[$UBound])
WEnd
EndFunc
Автор: euheny
Дата сообщения: 27.10.2007 00:28
Да, теперь я представляю как происходит подобная обработка
Однако известно что некоторые платные проги ищут куда быстрее чем regedit - в чём причина ?

А есть вобще ещё функции для работы с реестром ?

Так же в реестре есть параметры безопасности - что с ними делать ?

Посмотрел я AL3 - так этож просто супер - неужели этот проект приостановлен ? Ему есть замена ?

Там кстати есть функции для работы с файлами - возможно это даже то что я спрашивал (поэтому может и молчит Джон). Но вот описаний никаких не нашёл

Скрипт для смены разрешения не работает в некоторых случая совсем - может есть ещё какие варианты ?
Автор: NIKZZZZ
Дата сообщения: 27.10.2007 10:10
ViSiToR

Цитата:
В общем вот моя версия на аналог к RegEdit

Да, скоростенка не слишком высокая.
Слишком много лишнего выполняется. Зачем просматривать все дерево, если нужна только одна ветка ?

Цитата:
весь реестр одним махом в файл

Опять-же очень долгий подготовительный этап. Файлик занимать будет мегов под 20, если с ним работать как с ini файлов, очень медленный доступ.
Есть возможность не в файл, а в переменную и с помощью StringRegExpert вытаскивать из него нужную инфу - пробовал такой метод, работает достаточно быстро даже при таких об'емах, но опять-же время подготовки ...

К стати, по поводу "деревянных" задач, они очень просто решаются с помощью рекурсии.
А вот обойтись без нее...
Пример:
FileFindNextFile() - написать ее аналог для поиска так-же и по подкаталогам.
Я писал подобную штуку, но чисто специализированную. Интересно было-бы посмотреть общее решение.




Автор: ViSiToR
Дата сообщения: 27.10.2007 10:50
NIKZZZZ

Цитата:
Зачем просматривать все дерево, если нужна только одна ветка ?

Как одна? нужен весь реестр


Цитата:
они очень просто решаются с помощью рекурсии

У меня в примере чистая рекурсия


Цитата:
А вот обойтись без нее...

Циклами (© amel27)


Цитата:
написать ее аналог для поиска так-же и по подкаталогам

У меня есть готовая функция для чтения подкаталогов в массив (правда используется рекурсия)...


Код: #include <Array.au3>

;Папка аутоита
$AutoItPath = StringRegExpReplace(@AutoItExe, '\\[^\\]+$', '')

$DirsArray = DirListToArray($AutoItPath)
_ArrayDisplay($DirsArray)

Func DirListToArray($sPath, $sRootPath=1)
$sPath = StringRegExpReplace($sPath, '\\+$', '')
Local $aRetArray[1], $aSubDirsArr, $sFindNextFile, $sCurrentPath

Local $sFindFirstFile = FileFindFirstFile($sPath & "\*.*")
If @error = 1 Then Return SetError(1, 0, -1)

If $sRootPath = 1 Then
ReDim
$aRetArray[2]
$aRetArray[1] = $sPath
EndIf

While
1
$sFindNextFile = FileFindNextFile($sFindFirstFile)
If @error = 1 Then ExitLoop

$sCurrentPath = $sPath & "\" & $sFindNextFile

If StringInStr(FileGetAttrib($sCurrentPath), "D") Then
$aRetArray[0] += 1
ReDim $aRetArray[$aRetArray[0]+1]
$aRetArray[$aRetArray[0]] = $sCurrentPath

$aSubDirsArr
= DirListToArray($sCurrentPath, 0)

If IsArray($aSubDirsArr) Then
For
$i = 1 To $aSubDirsArr[0]
$aRetArray[0] += 1
ReDim $aRetArray[$aRetArray[0]+1]
$aRetArray[$aRetArray[0]] = $aSubDirsArr[$i]
Next
EndIf
EndIf
WEnd

FileClose($sFindFirstFile)

Return $aRetArray
EndFunc
Автор: NIKZZZZ
Дата сообщения: 27.10.2007 11:07
ViSiToR

Цитата:
У меня есть готовая функция для чтения подкаталогов в массив

Так то понятно, ты ее уже как-то приводил.
Задача в другом - функция должна возвращать одно значение, первое найденное (или последующее, при следующем вызове, не просматривая все)
В рекурсивном случае проверку на то, что найдено необходимое нужно производить в самой рекурсивной функции, в нерекурсивном - функция вызывается до тех пор, пока не получен нужный результат.



Автор: euheny
Дата сообщения: 27.10.2007 20:28
ViSiToR

Цитата:
В общем вот моя версия на аналог к RegEdit:


А у меня не работает - пишет "Please wait..." и всё

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192

Предыдущая тема: Quintura Search


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.