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

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

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

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

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

Всё! Всем откликнувшимся спасибо! Больше не пристаю.
0
2 / 2 / 0
Регистрация: 30.04.2015
Сообщений: 44
09.01.2023, 18:15  [ТС]
Через лет несколько опять "уперся" в какую то негораздину! Ребят, кто может подскажет: есть запущенные несколько форм с контролами, я могу получить все их строковые названия. Но вот, к примеру: как закрыть форму, название которой я получил? В скрипте нужно явно объявлять имя объекта, к примеру формы #SC.AddObject "Form1", Form1, True#
А вот чисто динамически выполнить строку бы с данными, которые "ты только что узнал"...
В этой "EbExecuteLine" это делается легко, но проблему я описывал в начале.
0
Модератор
10053 / 3898 / 884
Регистрация: 22.02.2013
Сообщений: 5,851
Записей в блоге: 79
10.01.2023, 11:21
Коллекция Forms содержит список всех открытых форм.
0
2 / 2 / 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
Модератор
10053 / 3898 / 884
Регистрация: 22.02.2013
Сообщений: 5,851
Записей в блоге: 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
2 / 2 / 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
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 28.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 28.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru