![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выполнение кода 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]Нет.