1

В последнее время я делал много случайных сценариев, ни один из которых действительно ни для чего не полезен, но они помогают мне понимать различные вещи, и я использую их для справки довольно часто ... в любом случае, один из вариантов кнопки контура для одного из моих сценариев это всплывающий генератор msgbox, который генерирует код, который я могу просто скопировать и вставить (в скрипте много ящиков с сообщениями)
но у меня возникли проблемы с отображением переменной во входных данных '$ codebox':

$code = "MsgBox(0, $title, $message)"  
GUICtrlSetData($codebox, $code)

это отображает:

"MsgBox(0, $title, $message)"   

а не данные, хранящиеся внутри переменной.

Могу ли я содержать переменную внутри такой переменной? Я не совсем уверен, как еще так ... У кого-нибудь есть возможный обходной путь, на который я мог бы взглянуть? Я искал вокруг, но я пришел пустым.

PS: обновленный скрипт можно найти здесь

1 ответ1

2

Возможное решение:$ code = MsgBox (0, $ title, $ message)

Но это вызовет и покажет MessageBox в этой точке (не в GUICtrlSetData).

Когда вы нажимаете "ok" в MsgBox, он возвращает значение вашего действия по этой ссылке:http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm

Следовательно, $ code возвращает 1 - что указывает на то, что вы нажали OK.

РЕДАКТИРОВАТЬ: (Теперь, когда я понимаю, что ICE хотел получить) Используйте этот код:

$code = 'MsgBox(0, ' & '"' & $title & '"' & ', ' & '"' & $message & '"' & ')'

Хорошо, прежде чем вы (и другие) застрелите меня с использованием WTF и всего "и", позвольте мне объяснить:

Когда вы напечатаете $ code, он сгенерирует:

MsgBox(0, "test", "messages and messages and messages")

Этот код, как хотелось бы ICE, можно скопировать и сразу использовать в коде ICE. Отсюда и необходимость использовать одинарные кавычки (') для блокировки текста, а двойные кавычки (") как обычный текст - для генерации приведенного выше кода.

Если я не поставил комбинацию одинарных и двойных кавычек, она сгенерирует (что я выяснил после тестирования):

MsgBox(0, test, messages and messages and messages)

И этот код выше не будет работать после простого копирования и вставки в AutoIt. Вам нужно добавить эти кавычки (двойные или одинарные).

AutoIT работает с одинарными или двойными кавычками в качестве текстового маркера, поэтому выбирайте тот, который вам удобен. Если вам нужно экранировать двойную кавычку как текст, используйте одинарную кавычку в качестве текстового маркера и наоборот.

Надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .