Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 712

/ вопрос открыт /

Здравствуйте!
Появился такой вопрос:
Есть программа состоящая из мини подпрограмм, и есть функция добавления новых, но хотелось бы сделать чтобы в окне добавления новой программы можно было в Memo ввести необходимый програмный код для работы "Оболочки" с новой подпрограммой(различные функции например, нада проверить ее в неком списке и т.д). Суть проблемы чтобы после нажатия кнопки "Ок" введенный в мемо текст сохранялся в определенном месте в UNIT'е основной программы и был доступен после ее закрытия. (Прошу так же разобрать возможность работы с .ехе файлом скомпилированой программы).

TeM Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: TeM (статус: Посетитель)
Вопрос отправлен: 21 июня 2008, 13:31
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 21; последнее сообщение — 26 июня 2008, 23:35; участников в обсуждении: 4.

Страницы: [1] [2] [Следующая »]

Вадим К

Вадим К (статус: Академик), 21 июня 2008, 17:02 [#1]:

А можно попроще сформулировать? общая идею вроде прослеживается, но никак не могу связать воедино. Вы что, хотите на лету самомодифицировать программу?
Галочка "подтверждения прочтения" - вселенское зло.
TeM

TeM (статус: Посетитель), 22 июня 2008, 14:09 [#2]:

Есть программа которая вызывает из списка другие программы(т.е это окно приветствия , а за ним окно выбора программ ). Так вот в окне выбора программ есть функция "добавить новое приложение в список выбора", после добавления в окне выбора появляется новая строка после нажатия на котору открывается добавленное приложение. -эт все есть и работает, но у "встроенных" програм есть некие функции связи с окном приветствия и выбора программ(впринципе это разные программы поэтому они обмениваются информацией через ини файл), а у новых добавляемых программ нет такой возможности, поэтому я хотел бы дать возможность дописать в обработчик события "OnClick" некого обьекта, необходимый ,для корректной работы нового приложения, часть кода. Т.е. он должен вносится в мемо и сохранятся в unite окна выбора приложений, на будущее.
Вадим К

Вадим К (статус: Академик), 23 июня 2008, 09:16 [#3]:

Половину ответа я понял. До тех пор, пока это относилось к старым программам. А вот отностительно новой функциональности, начиная со слов "возможность дописать в обработчик события "OnClick" некого обьекта" какой то не связанный между собой текст
Галочка "подтверждения прочтения" - вселенское зло.
TeM

TeM (статус: Посетитель), 23 июня 2008, 13:42 [#4]:

хм. Допустим есть программа которая проверяет ини файл на наличие некого значения(к примеру а=1, если а=1 то приложение запустится, если нет -то закроется). мы добавляем эту программу в список окна выбора программ(т.е это новая пограмма) и мне нада чтобы пользователь ,который производит добавление новой программы, мог в мемо дописать код чтобы при клике на название программы помимо ее открытия он еще дописывал в ини файл значению "а",единицу(а=1).

Вся суть проблеммы - я не знаю как вносить изменения в Unitы чтобы они сохронялсь после закрытия программы.
Dron

Dron (статус: Студент), 23 июня 2008, 14:50 [#5]:

Какая-то очень навороченная у вас задачка. Мне кажется, нужно пересмотреть весь этот механизм и придумать что-то проще.
Если вы хотите изменять код программы, то нужно взять с собой её исходники, Delphi-компилятор (dcc.exe) и все сторонние юниты, которые в ней используются (например, сторонние компоненты). Дальше нужно запустить компилятор, натравив его на эти исходники. Тогда программа перекомпилируется и вы получите обновлённый экзешник. С юнитами в этом случае можно работать как с обычными текстовыми файлами, но, естественно, в коде не должно быть ошибок.
А теперь подумайте - нужно ли вам всё это? Наверняка можно найти альтернативный вариант.
С уважением.
TeM

TeM (статус: Посетитель), 24 июня 2008, 13:32 [#6]:

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

Dron (статус: Студент), 24 июня 2008, 13:37 [#7]:

Не уверен на 100%, но по-моему в Delphi это невозможно. Такое можно сделать в скриптовых языках программирования (PHP, JavaScript и т.п.)
С уважением.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 24 июня 2008, 16:38 [#8]:

Не только в скриптовых, но и, например, в FoxPro можно это сделать.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 24 июня 2008, 16:47 [#9]:

<<мне нада чтобы пользователь ,который производит добавление новой программы, мог в мемо дописать код чтобы при клике на название программы помимо ее открытия он еще дописывал в ини файл значению "а",единицу(а=1).>>
А не проще, сразу при добавлении новой программы дописывать в ini соответствующую строчку?
TeM

TeM (статус: Посетитель), 24 июня 2008, 17:02 [#10]:

то не то, если например его программа реагирует не на "а" как все мои а на "Б" (все условно и для примера)
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 24 июня 2008, 18:29 [#11]:

т.е. строчка в ini добавляется не для обработки программой-оболочкой, а программой, которая из нее запускается?
TeM

TeM (статус: Посетитель), 24 июня 2008, 18:39 [#12]:

строчка в ini связывает программу в которую добавляется и саму добавляемую программу. у меня(вс е так же пример) при открытии программы строка в ини присваивает "а" значение 1(а=1), но возможно что будут добавлять другую программу которой (пример очень груб покрайней мере) для открытия нада присвоить "В" единичу(в=1) и нада прописать чтобы при открытии добавленной программы окно выбора дописывало в ини в=1. где то так.
з.Ы учитывая что я не знаю какиме параметры могут понадобится в новых программах я хотел чтобы при добавлении можно было вписать часть кода необходимого для корректной работы добавляемой программы.
TeM

TeM (статус: Посетитель), 25 июня 2008, 12:27 [#13]:

Т.е нету команды конвертации(типа stringtostr) из string в формат командной строки?
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 25 июня 2008, 17:33 [#14]:

такой команды нет. Перевод строк в команды выполняется на этапе компиляции программы. Только трансляторы и скриптовые языки позволяют легко модифицировать программы на этапе выполнения
Dron

Dron (статус: Студент), 25 июня 2008, 18:20 [#15]:

Отсюда выход один: если без модификаций никак не обойтись, пишите свой транслятор с ограниченным набором команд.
С уважением.
Вадим К

Вадим К (статус: Академик), 25 июня 2008, 20:56 [#16]:

В библиотеке JVCL есть транслятор для языка паскаль. Достаточно гибкий и расширяемый. И что важно - вполне хорошо работающий. Понимает обычный синтаксис делфи.
к TeM :
Что понимается под "формат командной строки"?
Галочка "подтверждения прочтения" - вселенское зло.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 25 июня 2008, 22:15 [#17]:

to Вадим К: где можно скачать JVCL и бесплатная ли это библиотека?
Вадим К

Вадим К (статус: Академик), 25 июня 2008, 23:44 [#18]:

а набрать в гугле? и уже в первой строке увидели ссылку на оффсайт. http://homepages.codegear.com/jedi/jvcl/.
Естественно, всё бесплатно, только при скачке дистрибутива на вредничайте и качайте полный вариант (потом всё равно прийдётся "докачивать остатки" - выйдет гораздо больше). Файл имеет имя JVCL332CompleteJCL1100-Build2646.7z. Внутри есть инсталлятор, который всё установит и настроит. Правда их на самом деле там два - один это JCL (библиотека классов и хедеров) и собственно сам JVCL
Галочка "подтверждения прочтения" - вселенское зло.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 26 июня 2008, 05:44 [#19]:

Спасибо, кстати, там есть более свежая версия
TeM

TeM (статус: Посетитель), 26 июня 2008, 14:48 [#20]:

Я имл ввиду чтобы программа читала sring строки(mb srings) как часть свого кода.

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:29
Выполнено за 0.02 сек.