Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выполнение кода Delphi, приведенного в качестве аргумента


Morrah ©   (2007-10-31 09:49:00) 

Подскажите, есть ли в Delphi команда, позволяющая выполнить кусок кода, написанный на том же ObjectPascal, но приведенный в виде строки?
Примерно что-нибудь вроде
Execute('MyObject.Myproperty'+'.MyProperty.MyMethod;')
Заранее спасиббо.


Alkid   (2007-10-31 13:29:00) [1]

Автор, кури про COM, OLE и IDispatch. Про последнее особенно.

Почти все вызовы OLE-объектов производятся через IDispatch, в котором указание, что вызывать, как и параметры вызова, передаётся как раз в виде аргумента. Кроме того, IDispatch позволяет перечислять доступные для вызова/обращения методы/пропертя объекта.


Morrah   (2007-10-31 12:22:00) [2]

Добраться до справочника, скажем, через типы (есть такой метод "ПривеситЗначение" у типа "ОписаниеТипов") тоже не получается, ибо метод гл. контекста 1С "Тип", возвращающий значение типа "Тип" по его строковому описанию и потребный для создания "Описания типов", в режиме OLE недоступен.


Morrah   (2007-10-31 12:18:00) [3]


> Автор, лучше изложи предметную проблему.

Излагаю.
В программе имеется переменная v1C типа OleVariant, инициализированное OLE-приложение 1C:Предприятие 8.0
Требуется получить объект типа, скажем, СправочникМенеджер.ИмяСправочника, где ИмяСправочника Name типа String перебирается в цикле.

v1C.Catalogs.Name
v1C.Catalogs[Name]
-естественно, не работает.


Alkid   (2007-10-31 11:21:00) [4]


> Проще. Pascal-script  :)

Сказать по правде, не слышал о таком :)


> Ещё проще: dcc32.exe :)

Для этого надо на компе иметь его :) Либо тащить с собой.


Skyle   (2007-10-31 11:15:00) [5]


> Ega23 ©   (31.10.07 11:01) [7]
> > Навскидку: lua, JavaScript, VBS, Lisp.
> Проще. Pascal-script  :)

Ещё проще: dcc32.exe :)


Ega23   (2007-10-31 11:01:00) [6]


> Навскидку: lua, JavaScript, VBS, Lisp.


Проще. Pascal-script  :)


Alkid   (2007-10-31 11:00:00) [7]

Собственно говоря, готовых решений, позволяющих исполнять динамически сгенерироанный Delphi-код я не знаю, но есть целая куча различных скриптовых движков, позволяющих встраивать в программы интерпретаторы разных языков. Навскидку: lua, JavaScript, VBS, Lisp.

С другой стороны, если автор задаёт такой вопрос, значит он новичок и не пишет какой-то большой программы, где применение такой тяжёлой артиллерии оправдано. Вывод - он пытается найти решение для задачи, для которых есть норальные не-скриптовые решения, просто он о них не знает.

Автор, лучше изложи предметную проблему.


Riply   (2007-10-31 10:19:00) [8]

> [4] Ega23 ©   (31.10.07 10:15)
> Можно всё. Вопрос во времени реализации.

Ну не так уж и долго :)


Ega23   (2007-10-31 10:15:00) [9]


> Подскажите, есть ли в Delphi команда, позволяющая выполнить
> кусок кода, написанный на том же ObjectPascal, но приведенный
> в виде строки?


Можно всё. Вопрос во времени реализации.


MBo   (2007-10-31 10:04:00) [10]

цель какая?


BATTLE_MAX   (2007-10-31 09:59:00) [11]

Нет сынок, это фантастика...


Рамиль   (2007-10-31 09:57:00) [12]

Нет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо