Что нового

Запуск значения переменной на исполнение

Статус
Закрыто для дальнейших ответов.
V

VitAl2013

Гость
Есть ли возможность вызвать значение переменной на исполнение? Предполагается предварительная генерация айтишного скрипта.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
OffTopic:
Разъяснения нонче в дефиците? ;)
 
Автор
V

VitAl2013

Гость
Я думал понятно... Лады:
Генерируем переменную например так
Код:
$b = (значение берём из цикла)
$a = "Button"&$b&" = GUICtrlCreateButton(""Target"&$b&""", 10*"&$b&", 5*"&$b&", 20, 20)"

Потом нам надо запустить значение переменной $a на исполнение. Как и есть ли такая возможность?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
хм... какой-то извра экстравагантный способ автоматизации создания кнопок.
лучше создавать их в цикле
Код:
Opt('GUIOnEventMode', 1)

$GUI = GUICreate('Test GUI window', 500, 200)
$N = 10; Number of buttons
Local $Button[$N]
$delta = 9
For $i = 0 to $N - 1
	$Button[$i] = GUICtrlCreateButton('Button' & $i, 49 * $i + 1, 1, 48, 20)
Next
GUISetState()
GUISetOnEvent(-3, '_Exit')


While 1
	Sleep(100)
WEnd

Func _Exit()
	Exit
EndFunc
 
Автор
V

VitAl2013

Гость
Ух ты! Это в общем-то ответ на другую тему: http://autoit-script.ru/index.php/topic,477.0.html Это меня просто умозаключения на такую тропу вывели.

Сразу вопрос по ходу скрипта: что дают строки?
Код:
Opt('GUIOnEventMode', 1)
...
GUISetState()
GUISetOnEvent(-3, '_Exit')
...
Func _Exit()
    Exit
EndFunc

Они влияют как-то на такое циклическое построение интерфейса?

И переменная
Код:
$delta = 9

не вижу где используется
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
VitAl2013 сказал(а):
не вижу где используется
ну писалось на коленке, поэтому уже нигде ;)
VitAl2013 сказал(а):
Сразу вопрос по ходу скрипта: что дают строки?
Код:
Opt('GUIOnEventMode', 1); Режим прорисовки GUI. кури хелп на тему "GUI Concepts"
...
GUISetState(); Отображение окна. По умолчанию окно скрыто
GUISetOnEvent(-3, '_Exit'); Если окном получен сигнал "-3" ($GUI_EVENT_CLOSE) то вызвать функцию _Exit()

Func _Exit(); Функция которая вызывается  - Завершить скрипт
    Exit
EndFunc
 
Автор
V

VitAl2013

Гость
Затянулся хэлпом - понял что другой режим работы. А на обычном работать не будет? Я попытался и какие-то странные ошибки полезли. Также в этом (1) режиме у меня не работают радиобатоны как следует, точнее не работают вложенные функции
Код:
GUICtrlSetState($Label1, $GUI_ENABLE/DISABLE)
повешанные на радиобатоны. Это может быть следствием такого режима работы? Как поступить?

То что теперь всё работает через функции я тоже вкурил, и как расписать по эвентам тоже. Контрольные мессаджи вылетают, а элементы в интерфейсе не энэйблятся.
Всё вопрос снят - это я недоглядел что снова по привычке кейсы заполняю.
 
Автор
V

VitAl2013

Гость
Почему не работает если
Код:
For $i = 1 to $N
?

Подумав понял.
 

astati

Новичок
Сообщения
145
Репутация
4
тема не повтор. т.к. в этой теме другое назначение :smile:
есть код в ini файле.(допустим просто форма с пару кнопок - причем закодированна)
Кодом:
Код:
$sData = _Crypt_DecryptData(FileRead($sDestinationFile), $vCryptKey, $CALG_RC4)

Происходит расшифровка и копирование в переменную(без временных файлов).
Вопрос: Можно ли код из переменной($sData) запустить? Если да то плиз пример команды.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
astati
Код:
Execute
 

astati

Новичок
Сообщения
145
Репутация
4
Просто у вас же есть правильце об ответе в старых тема и т.д.
Вот и сделал нью тему.
Кастер я правильно понял?
Код:
Execute($sData)

Если да то не работает :(
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
astati, должно выглядеть не так:

Код:
Execute('$iButton = GUICtrlCreateButton("Кнопка", 20, 20, 50, 20)')


А вот так:

Код:
$iButton = Execute('GUICtrlCreateButton("Кнопка", 20, 20, 50, 20)')
 

astati

Новичок
Сообщения
145
Репутация
4
Виктор не понял вас так что ли?
Код:
$sData = Execute('_Crypt_DecryptData(FileRead($sDestinationFile), $vCryptKey, $CALG_RC4')


Креатор:
Файл который переводит и должен запустить.
Код:
#Include <Crypt.au3>
$sDestinationFile = "2w.au3"
$vCryptKey = "Моя комбинация"

;$sData = _Crypt_DecryptData(FileRead($sDestinationFile), $vCryptKey, $CALG_RC4)
$sData = Execute('_Crypt_DecryptData(FileRead($sDestinationFile), $vCryptKey, $CALG_RC4')

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

Файл код которого кодируется(только для примера) и каким он должен быть после раскодирования.
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 264, 244, 192, 124)
$Button1 = GUICtrlCreateButton("Button1", 112, 80, 75, 25)
$Input1 = GUICtrlCreateInput("Input1", 16, 16, 121, 21)
$Input2 = GUICtrlCreateInput("Input2", 16, 48, 121, 21)
$Input3 = GUICtrlCreateInput("Input3", 16, 120, 121, 21)
$Button2 = GUICtrlCreateButton("Button2", 144, 120, 43, 25)
$Button3 = GUICtrlCreateButton("Button3", 64, 152, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Не получится у Вас так запустить, такие ключевые слова как:

Код:
Global
Local
While
Wend
Case
Select
Exit
;~ и т.д.....


Не обрабатываются функцией Execute()
 

astati

Новичок
Сообщения
145
Репутация
4
Блин. тогда теряется весь смысл. :(

А кроме EXecute никак?
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Можно через AutoIt3ExecuteScript, но тогда нужно создавать временный(расшифрованный) файл и запускать его
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Viktor1703 [?]
Не получится у Вас так запустить, такие ключевые слова как
Ну к примеру Global/Local можно ещё запустить кое как:

Код:
Execute('Assign("sVar", "Data", 2)')
ConsoleWrite(Execute('$sVar') & @LF)


а вот с остальным проблема, хотя решение есть: http://autoit-script.ru/index.php/topic,4714.0.html
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Возможно, я сильно не вникал, но циклы он не способен обработать.
 
Статус
Закрыто для дальнейших ответов.
Верх