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

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

Макроподстановка


Саша ©   (2004-11-24 16:29:00) 

Здравствуйте.
Мне хотелось бы записать в строковую переменную некоторый кусок кода, а потом выполнить его. Как это можно сделать?


Alexander Panov   (2004-11-24 20:52:00) [1]

да, забыл копирайт...
(c) Adder


Alexander Panov   (2004-11-24 20:48:00) [2]

Например, используем JScript:

uses
 OleCtrls, MSScriptControl_TLB, StdCtrls,ActiveX;

var
 ScriptControl1:TScriptControl;

procedure TForm1.Button4Click(Sender: TObject);
var s,ss:string;
begin
 ScriptControl1:= TScriptControl.Create(nil);
 ScriptControl1.Language:='JScript';

 Label1.Caption:='WSH ver. ';
 s:=ScriptControl1.Eval('ScriptEngineMajorVersion()');
 ss:=ScriptControl1.Eval('ScriptEngineMinorVersion()');
 Label1.Caption:=Label1.Caption+ s+'.'+ss;
 ScriptControl1.Free;
end;


programania   (2004-11-24 20:33:00) [3]

>Юрий Зотов
Для транслятора Delphi нужно 2400k или даже меньше,
страшно это или нет не знаю

>Саша
>...некоторый кусок кода...
если этот кусок код, а не исходный текст,
то его можно записать по адресу процедуры move(... после
VirtualProtect(@procedura,4069,PAGE_READWRITE,OldProt);
и выполнить эту процедуру.


panov   (2004-11-24 18:54:00) [4]

>Ega23 ©   (24.11.04 18:29) [6]

В NT 4 не входит, насколько мне известно. По крайней мере WSH 2.0

Это да, но можно установить отдельно.


Юрий Зотов   (2004-11-24 18:50:00) [5]

> programania ©   (24.11.04 18:42) [7]

Правда, придется распространять вместе с программой и компилятор, и файлы VCL... но это ведь не страшно, верно?


programania   (2004-11-24 18:42:00) [6]

Запиши в текстовый файл, например R.dpr, строку, например:
'program R;uses dialogs;begin showMessage('Выполняюсь!')end.'
выполни в свернутом виде
"c:\Program Files\Borland\Delphi5\Bin\DCC32.exe" R.dpr
выполни
R.exe


Ega23   (2004-11-24 18:29:00) [7]

Alexander Panov ©   (24.11.04 18:24) [5]

В NT 4 не входит, насколько мне известно. По крайней мере WSH 2.0


Alexander Panov   (2004-11-24 18:24:00) [8]

Yanis ©   (24.11.04 18:19) [4]
Можно и так, но WSH входит в Windows как компонент...


Yanis   (2004-11-24 18:19:00) [9]

Оооооо. Круто.

Тогда FastScript. http://www.fast-report.com/ru/products/products.php?BID=5

За качество отвечаю.

p.s. Правда компонентики платные. Но дмаю ~500 рубликов не проблема.


Alexander Panov   (2004-11-24 18:10:00) [10]

Саша   (24.11.04 16:29)
Мне хотелось бы записать в строковую переменную некоторый кусок кода, а потом выполнить его. Как это можно сделать?


Поищи примеры с использованием WSH - Windows Script Host


Digitman   (2004-11-24 16:33:00) [11]


> Как это можно сделать?


для сей цели имея либо готовый интерпретатор либо имея в строке маш.код, готовый к непоср.исполнению


clickmaker   (2004-11-24 16:32:00) [12]

Искать скриптовые компоненты. Например, на torry.ru


Наверх

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