Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
4 / 4 / 0
Регистрация: 30.04.2015
Сообщений: 44

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

09.03.2017, 12:26. Показов 3332. Ответов 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
11275 / 4761 / 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
11275 / 4761 / 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
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 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
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru