Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.25;
Скачать: CL | DM;

Вниз

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

 
Morrah   (2007-10-31 09:49) [0]

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


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

Нет.


 
BATTLE_MAX ©   (2007-10-31 09:59) [2]

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


 
MBo ©   (2007-10-31 10:04) [3]

цель какая?


 
Ega23 ©   (2007-10-31 10:15) [4]


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


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


 
Riply ©   (2007-10-31 10:19) [5]

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

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


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

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

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

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


 
Ega23 ©   (2007-10-31 11:01) [7]


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


Проще. Pascal-script  :)


 
Skyle ©   (2007-10-31 11:15) [8]


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

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


 
Alkid ©   (2007-10-31 11:21) [9]


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

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


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

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


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


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

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

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


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

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


 
Alkid ©   (2007-10-31 13:29) [12]

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

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



Страницы: 1 вся ветка

Текущий архив: 2007.11.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
1-1188801005
KOSS
2007-09-03 10:30
2007.11.25
CorelDraw


15-1192832884
AntiUser
2007-10-20 02:28
2007.11.25
Обнаружен код для атаки через Microsoft Agent


15-1192960107
homm
2007-10-21 13:48
2007.11.25
Вопрос по асемблеру.


15-1192999930
SerJaNT
2007-10-22 00:52
2007.11.25
ACDSee 3.0


2-1193658179
Sonia
2007-10-29 14:42
2007.11.25
dxDBGrid и OnMouseMove