4 / 4 / 0
Регистрация: 30.04.2015
Сообщений: 44

Использовать текст как исполняемый код (не EbExecuteLine)

09.03.2017, 12:26. Показов 3213. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Поделитесь, может у кого-нибудь есть решение, как написать строку (например: "Text1.Visible=false: MsgBox Text1.Text") и выполнить её, как строку кода? Оговорюсь сразу, EbExecuteLine не подходит! Написал кучу кода с её использованием, а после компиляции программа начинает вываливаться, хотя в режиме разработки всё работает, и эта проблема не только у меня, а повсеместная. Был у меня примерчик - убей, не могу отыскать! В гуглях, практически ничего нет или везде пример с EbExecuteLine. Выручайте!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2017, 12:26
Ответы с готовыми решениями:

Как получить исходный код *.exe или отредактировать его исполняемый код?
Собственно возможно ли декомпилить его так, чтобы можно было потом обратно скомпилировать? Или хотя-бы отредактировать код, только не...

Как передать функции в качестве параметра исполняемый код
Собственно сабж. int main() { z1 = x*x*x+2*x+2; func(z1); } int func()

Записывать текст в исполняемый файл
В программе есть текстовая форма (Memo1 ) нужно чтобы после выключении программы все изменения текста записывались в exe-файл (т.е. не...

33
 Аватар для Sur_L
103 / 63 / 10
Регистрация: 13.02.2017
Сообщений: 178
10.03.2017, 17:10
Студворк — интернет-сервис помощи студентам
SPARKCom, что конкретно в строковой переменной сидит, что запускать?
0
4 / 4 / 0
Регистрация: 30.04.2015
Сообщений: 44
10.03.2017, 17:28  [ТС]
Извините втупил, всё работает...
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim Perem As String
 
Private Sub Command1_Click()
 
    Dim SC
    Set SC = CreateObject("MSScriptControl.ScriptControl")
    SC.Language = "VBScript"
    
     Dim sStr As String
     sStr = "Perem=""Есть такая возможность..."": msgbox Perem"
    
    SC.ExecuteStatement sStr
    
End Sub
Добавлено через 1 минуту
Я имел ввиду без использования контролов

Добавлено через 6 минут
Всем спасибо! Громадный респект за помощь!!!
Если есть еще интересные решения на скрипте в этом направлении выкладывайте, интересующихся много.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
10.03.2017, 17:32
Цитата Сообщение от SPARKCom Посмотреть сообщение
Я имел ввиду без использования контролов
Ну так если в строке нет контролов, то их и не нужно добавлять.

Еще можно выполнять не только одну строчку кода, а целый блок, например, процедуру.
0
4 / 4 / 0
Регистрация: 30.04.2015
Сообщений: 44
10.03.2017, 19:28  [ТС]
Прям здОрово! Я как-то раньше в сторону скрипта и не глядел, а зря. Возможностей - уйма!
Например - нужно отобразить некую форму(напр. календарь, окно с опциями и т.п.) на теле той формы, с которой был вызов "Form.show". Выход - либо писать функцию для каждой вызывающей формы с указанием нужных контролов, либо куча кода с поиском хэндлов формы, поиск всех контролов на ней и прочих api-функций, что бы правильно позиционировать его к контролу на вызывающей форме, либо можно обойтись маленькой функцией с динамическим скриптом! Круто!

Добавлено через 1 час 16 минут
SoftIce - Отдельное спасибо!
0
4 / 4 / 0
Регистрация: 30.04.2015
Сообщений: 44
16.03.2017, 13:00  [ТС]
Чёт ничего не пойму! Не получается присвоить значение переменной...

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
    Dim SC
    
    Dim Perem as String
 
    Set SC = CreateObject("MSScriptControl.ScriptControl")
    SC.Language = "VBScript"
    
     Dim sStr As String
     sStr = "Perem=""NewPerem"": msgbox Perem"
    
    SC.ExecuteStatement sStr 'в msgbox отображается
    
    MsgBox Perem 'а тут переменная уже пустая(?)
Что я не так делаю?

Добавлено через 2 минуты
Видимо переменную в скрипте нужно объявлять... А как быть с глобальными?

Добавлено через 4 минуты
SoftIce, поделись опытом...
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
16.03.2017, 13:49
Может прощще было бы выложить, какой-нить мануал по скрипту, все это конечно интересно
но как говориться, я б хотел посмотреть всех девочек ))

Добавлено через 4 минуты
SPARKCom, ищи тебе же надо, всю документацию по скриптам, выложи здесь, стань героем ))
а по синтаксису старцы форума тебе расскажут что к чему
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
16.03.2017, 13:50
Цитата Сообщение от SPARKCom Посмотреть сообщение
А как быть с глобальными?
Переменная и должна быть глобальной
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Public Perem As String
Private Sub Command1_Click()
    Dim SC
    Set SC = CreateObject("MSScriptControl.ScriptControl")
    SC.Language = "VBScript"
    Dim sStr As String
    SC.AddObject "Form1", Form1, True
    sStr = "Form1.Perem=""NewPerem"": msgbox Perem" '
    SC.ExecuteStatement sStr  
    MsgBox Perem
End Sub
Добавлено через 1 минуту
Цитата Сообщение от fever brain Посмотреть сообщение
всю документацию по скриптам, выложи здесь, стань героем
Это ж надо найти, потом читать
0
16.03.2017, 13:55

Не по теме:

Ну хоть почитает ))

0
4 / 4 / 0
Регистрация: 30.04.2015
Сообщений: 44
17.03.2017, 11:52  [ТС]
Цитата Сообщение от fever brain Посмотреть сообщение
ищи тебе же надо, всю документацию по скриптам
Добрый ты...
Форумы видимо для это существуют, что бы какой нибудь невбубенный Йода (ой пардон, старец форума) какого нибудь Неуча в Гугль отправлял искать или книги почитать. И от этого "стал героем"...
Можешь и хочешь помочь - помоги, твоя помощь по-любому не только мне пригодится и поможет время сэкономить, а нет, так не лей тут желчь. Сам же, тоже когда нибудь по форумам что-нибудь искал и кто-то тебе помогал?

Спасибо SoftIce, получается, SC.AddObject - обязательно.

Всё! Всем откликнувшимся спасибо! Больше не пристаю.
0
4 / 4 / 0
Регистрация: 30.04.2015
Сообщений: 44
09.01.2023, 18:15  [ТС]
Через лет несколько опять "уперся" в какую то негораздину! Ребят, кто может подскажет: есть запущенные несколько форм с контролами, я могу получить все их строковые названия. Но вот, к примеру: как закрыть форму, название которой я получил? В скрипте нужно явно объявлять имя объекта, к примеру формы #SC.AddObject "Form1", Form1, True#
А вот чисто динамически выполнить строку бы с данными, которые "ты только что узнал"...
В этой "EbExecuteLine" это делается легко, но проблему я описывал в начале.
0
Модератор
10063 / 3908 / 885
Регистрация: 22.02.2013
Сообщений: 5,857
Записей в блоге: 79
10.01.2023, 11:21
Коллекция Forms содержит список всех открытых форм.
0
4 / 4 / 0
Регистрация: 30.04.2015
Сообщений: 44
10.01.2023, 14:52  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Коллекция Forms содержит список всех открытых форм
Можно чуть поразвёрнутей?
Приходится явно объявлять Form1
Вот код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Command1_Click()
    Dim sSt As String
 
    Dim SC
    Set SC = CreateObject("MSScriptControl.ScriptControl")
    SC.Language = "VBScript"
    Dim sStr As String
    SC.AddObject "Form1", Form1, True
    sStr = "Form1.Caption = ""$$$"""
    SC.ExecuteStatement sStr
End Sub
К примеру, нужно сделать сделать свой InputBox или Календарь или ещё что нибудь типа того. Вызываешь Это с любой формы, вводишь значения и возвращаешь их на форму которая Это вызвала. Я думаю динамично "выполнить" текст - это хорошая идея... Буду очень признателен.
0
Модератор
10063 / 3908 / 885
Регистрация: 22.02.2013
Сообщений: 5,857
Записей в блоге: 79
10.01.2023, 14:55
Лучший ответ Сообщение было отмечено SPARKCom как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Command1_Click()
    Dim sSt As String
    Dim SC
    
    Set SC = CreateObject("MSScriptControl.ScriptControl")
    SC.Language = "VBScript"
    Dim sStr As String
    Dim frm As Form
    
    For Each frm In Forms
        SC.AddObject frm.Name, frm, True
    Next
    
    sStr = "Form1.Caption = ""$$$"""
    SC.ExecuteStatement sStr
    
End Sub
0
4 / 4 / 0
Регистрация: 30.04.2015
Сообщений: 44
10.01.2023, 15:07  [ТС]
Пока я тут размышлял, уже ответ готов! Спасибо The trick!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.01.2023, 15:07

Во всплывающей подсказке код читается как обычный текст. Как сделать чтобы код считывался ?
Есть у меня на сайте всплывающая подсказка, реализована на чистом CSS с помощью библиотеки (код библиотеки в спойлере) /*БИБЛИОТЕКА ДЛЯ...

Перевести текстовый бинарный код в исполняемый
Как с помощью JS можно перевести текстовый бинарный код 3c 68 74 6d 6c 20 78 6d 6c 6e 73 3a 6f 3d 22 75 в исполняемый бинарный код и...

Как использовать текст из GUICtrlCreateInput
Всем привет. Как использовать текст из GUICtrlCreateInput? То-есть пользователь вводит текст и после нажатия на кнопку (принять в работу)...

Как использовать текст который в скобках
Здравствуйте! Подскажите пожалуйста как из строки текста использовать только тот текст что в скобках. К примеру если ввести в edit...

Текст в ячейке использовать как число
Помогите чайнику) Можно ли сделать так, чтобы ячейке с текстом присвоить число и потом когда производить счет эксель воспринимал эту ячейку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru