Что нового

Помогите со скриптом проверки NET

balltun

Новичок
Сообщения
8
Репутация
0
OffTopic:
я в этом деле новичок, сильно не ругать :smile:

Код:
#requireadmin
#notrayicon
Func dotnetfx40 ()

Local $sSubKey_NET_Framework_v4 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
Local $a = 0
If RegRead($sSubKey_NET_Framework_v4, "Install") = 1 and _  
   RegRead($sSubKey_NET_Framework_v4, "Version") = "4.0.30319.0" Then
$a = 1
Else
 	If FileExists(@ScriptDir & '\SystemComponets\dotnetfx40_full_x86_x64.exe') Then
		RunWait(@ScriptDir & '\SystemComponets\dotnetfx40_x86_x64.exe /quiet /norestart')	
		$a = 1
	Else
		$a = 0
	EndIf
 EndIf
 EndFunc
 
 dotnetfx40()
 
 If $a = 1 then
	MsgBox(0,'NET установлен','Установлено')
	endif
 If $a = 0 then
	MsgBox(0,'NET не установлен','ошибка. Не найден файл')
	endif

помогите исправить. нужно вытащить значение $a изфункции и использовать его в последних строчках скрипта.
 
Автор
B

balltun

Новичок
Сообщения
8
Репутация
0
InnI, если я правильно понял local действует внутри функции и удаляется после её завершения, а global остаётся?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
balltun
Верно понимаете. Но глобальные переменные лучше объявлять вне функций.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Но, по-моему, правильнее поступить следующим образом
Код:
Return $a ; <- здесь
 EndFunc
 
$a = dotnetfx40() ; <- и здесь
 
Автор
B

balltun

Новичок
Сообщения
8
Репутация
0
C2H5OH, вернуть $a,
и $a вне функции присвоить значение самой функции? :smile:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Да, balltun :smile:
Дело в том что внутри функции это локальная переменная $a.
А в основном скрипте это совсем другая переменная, хотя и с таким же именем.

Чтобы не путаться, можно вне функции использовать другое имя переменной.
Код:
$b = dotnetfx40() ; <- $b
 
 If $b = 1 then ; <- $b
    MsgBox(0,'NET установлен','Установлено')
    endif
 If $b = 0 then ; <- $b
    MsgBox(0,'NET не установлен','ошибка. Не найден файл')
    endif
 
Верх