Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизМакроподстановка кода(!) в Delphi? Найти похожие ветки
← →
Серж (2004-04-02 11:55) [0]Есть некий расчет с постоянно изменяющимися параметрами. В упрощенном виде например такой: X=C*M/1000*.005. Все переменные компилятору известны. Как дать юзерам изменять алгоритм расчета?
Например положить этот шаблон в editbox так, чтоб прога делала эти нехитрые вычисления. Писать анализатор текста довольно муторно - во многих языках есть подстановки исполняемого кода. Кто нибудь знает как с этим в Delphi?
← →
Digitman © (2004-04-02 12:11) [1]
> Кто нибудь знает как с этим в Delphi?
никак.
← →
panov © (2004-04-02 12:13) [2]> Макроподстановка кода(!) в Delphi? [D6, WinXP]
Использовать WSH - Windows Script Host
← →
Серж (2004-04-02 13:10) [3]этого я и боялся... :-)
← →
TUser © (2004-04-02 13:16) [4]Прикрути к проге парсер мат. выражений. То, что юзер вводит - переводи в обр. польскую запись и используй для расчетов..
← →
Думкин © (2004-04-02 13:59) [5]Для локального использования такого, я проводил вычисления в динамически подключаемой библиотеке, код которой мог менять в окне программы. Потом компилировал и считал, потом менял и опять компилировал и т.д. Для компиляции таскал несколько файлов от дельфи.
Для серьезного же - как сказано выше.
← →
Серж (2004-04-02 14:03) [6]Хм... Ху из парсер мат. выражений с польской записью? Скажите плиз где копать - ссылочку хоть или обьясните немного...
← →
TUser © (2004-04-02 14:17) [7]Если у тебя есть выражение
a*(b+c)+d/2,
то обр. польская запись - это
bc+a*d2/+
Считается дяльше по-порядку
Заносим в стек b, потом - с
Видим + - значить складываем 2 последних элемента стека, записываем в предпоследний, последний удаляем
Заносим а
Видим * - умножаем
Заносим d
Заносим 2
Делим
Стек имеет вид (b+c)*a, d/2
Видим + - складываем
Для перевода записиси в обр. польскую надо совершить обход дерева - короче, бери книгу Дейкстры и вперед.
← →
Серж (2004-04-02 14:22) [8]ок, прояснилось спасибо
А компонентики перевода бывают? ;-)
← →
Anatoly Podgoretsky © (2004-04-02 14:24) [9]Зачем, чем плох WSH?
Очень мощный инструмент
← →
AlexNx (2004-04-02 14:33) [10]а еще проще скачать JVCL и там есть отличнейший компонент
JvInterpreterProgram
← →
Серж (2004-04-02 14:39) [11]а вот это уже интересно...
← →
panov © (2004-04-02 14:44) [12]Пример использования WSH.
(c) Adder 2004г.
unit ufRunScript;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
sc: Variant;
begin
try
SC:=CreateOLEObject("ScriptControl");
SC.Language:="VBScript";
SC.Timeout:=-1;
SC.AllowUI:=True;
Label1.Caption:=SC.Eval(Edit1.Text);
finally
SC:=Unassigned;
end;
end;
end.
← →
AlexNx (2004-04-02 14:49) [13]>panov
все это классно. но это только для простых вычислений, где не надо использовать данные из компонентов программы.
← →
panov © (2004-04-02 14:51) [14]>AlexNx (02.04.04 14:49) [13]
Можешь любые данные, из любого места, любым способом, хоть...
← →
Fay © (2004-04-02 14:54) [15]Попробуй FastScript
← →
panov © (2004-04-02 14:54) [16]>AlexNx (02.04.04 14:49) [13]
Еще посмотри на методsc.AddCode
позволит выполнить целый скрипт.
Причем не только VB, но и JavaScript, например...
и здесь -
http://www.compress.ru/Temp/1773/index.htm
← →
panov © (2004-04-02 14:55) [17]А в самом VB можешь в скрипте вообще свою программу написать, сохранить в файл и выполнять по мере необходимости...
← →
panov © (2004-04-02 14:56) [18]а вот и ссылка на книгу-)
http://www.delphimaster.ru/books/978594723648/
← →
Anatoly Podgoretsky © (2004-04-02 15:01) [19]WSH очень мощный инструмент и не привязан к языку, можешь писать например на Перле или свой написать.
← →
Algol (2004-04-02 15:02) [20]
> panov
Скрипт это конечно хорошо, но если через формулу нужно прогнать большой массив дынных, то тормоза будут немерянные ИМХО.
← →
panov © (2004-04-02 15:18) [21]>Algol (02.04.04 15:02) [20]
Это уже не по теме.
Тут выбирать надо...
Если нужно динамическое изменение скриптов - пожалте к WSH.
Если нужно обрабатывать большие массивы данных - причем здесь WSH?
WSH - инструментр-интерпретатор для выполнения скриптов, для удобства, а не для скорости исполнения.
← →
AlexNx (2004-04-02 17:19) [22]>panov
я вот, что имеол ввиду. Скажем есть TTable с данными и нам эти данные нужно изменять по определенной формуле... или обрабатывать данное табло скриптом... то MSH здесь не пляшет...
← →
panov © (2004-04-02 17:26) [23]>AlexNx (02.04.04 17:19) [22]
Почему не пляшет? Запросто.
Конечно, если обрабатывать миллионы записей на клиенте, то это будет не быстро, но для обработки десятков тысяч вполне подойдет.
Ноне надо забывать, что тут есть еще и варианты с обработкой на сервере БД.
Теоретически можно обрабатывать на сервере Oracle - он поддерживает технологию COM и OLE.
← →
AlexNx (2004-04-02 17:31) [24]Тогда как же мне в MSH доступиться до уже созданного, заполненного TTable и бегать по нему
Может я чего не понимаю...
← →
panov © (2004-04-02 17:57) [25]>AlexNx (02.04.04 17:31) [24
Все же рекомендую почитать статью - чрезвычайно полезная-)
http://www.compress.ru/Temp/1773/index.htm
← →
WebErr © (2004-04-02 18:05) [26]А зачем использовать готовые скрипты (да ещё и скрипты!), когда можно несложный алгоритм перевода (1 курс!!!) сотворить вручную, заодно и не дать своим обленившимся от Делфи мозгам окончательно заплыть жиром!!! :))))
← →
WebErr © (2004-04-02 18:06) [27]
> panov ©
Хотя и статьи, и книга внушают опасение, что я всё-таки чему-то научусь! :) Они и вправду полезные, но на них не у всех есть время! :))))
← →
panov © (2004-04-02 18:13) [28]>WebErr © (02.04.04 18:05) [26]
Да вопрос не в том, чтоб готовые использовать, а чтобы научиться использовать-)
>WebErr © (02.04.04 18:06) [27]
Хотя и статьи, и книга внушают опасение, что я всё-таки чему-то научусь! :) Они и вправду полезные, но на них не у всех есть время! :))))
Ну время можно найти...
хм... некоторые с умными книгами ходят сами знаете куда - там, где посидеть можно...
← →
Algol (2004-04-02 18:16) [29]Можно еще формировать динамически исходник , затем в ран-тайме компилить оффлайн компилятором (dcc32) в dll-ку, потом динамически ее подключить...
Конечно немного муторно, но зато производительность будет очень высокая.
← →
WebErr © (2004-04-02 18:16) [30]Удалено модератором
Примечание: offtopic
← →
panov © (2004-04-02 18:21) [31]Удалено модератором
Примечание: offtopic
← →
WebErr © (2004-04-02 18:23) [32]Удалено модератором
Примечание: offtopic
← →
Anatoly Podgoretsky © (2004-04-02 18:49) [33]Удалено модератором
Примечание: offtopic
← →
WebErr © (2004-04-02 18:56) [34]Удалено модератором
← →
panov © (2004-04-02 18:59) [35]Удалено модератором
← →
WebErr © (2004-04-02 19:01) [36]Удалено модератором
← →
panov © (2004-04-02 19:02) [37]Удалено модератором
← →
Anatoly Podgoretsky © (2004-04-02 19:02) [38]Удалено модератором
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.041 c