Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
ВнизСуществует ли какая-нить функция подстановки....? Найти похожие ветки
← →
Хамло (2002-10-18 09:18) [0]которая позволяла бы интерпретировать символьную переменную как отображаемый ею объект программы.
Конкретнее: мне нужно чтобы при вводе юзером в компонент Edit формулы (содержащей стандартные математические ф-ции паскаля, есессно), эта самая формула вставлялась в программу непосредственно как паскалевский код....Хотелось бы увидеть пример, если можно:)). Заранее благодарен.
← →
Anatoly Podgoretsky (2002-10-18 09:25) [1]Да конечно это TEdit, соблюдай только правила Паскаля
← →
han_malign (2002-10-18 09:46) [2]> непосредственно как паскалевский код
1. Вопросом на вопрос(хоть и неприлично): чем компилятор отличается от интерпретатора.
2. Паскалевский код можно вставить только в паскалевский код(.pas,.dpr,.inc), но не в программу.
3. Вариант, в принципе есть - делаешь шаблон DLL с шаблоном функции, из Edit-а прописываешь в шаблон, компилишь с помощью dcc32 (ShellExecute), подгружаешь DLL (LoadLibrary,GetProcAddress)- и у тебя в контексте процесса есть рабочий код функции (только нужно определить стандартный вход-выход функции, либо генерить DLL целиком(авто-написатель программ, на что же мы кушать будем)).
4. А вообще для рассчета выражений в RxLib 2.75 есть специальный компонент.
5. Есть готовые компоненты для поддержки скриптов.
← →
Digitman (2002-10-18 10:18) [3]Можно попробовать использовать компонент Innerfuse Pascal Script.
см. http://www.carlo-kok.com/downloads/ifps3/ifps3__1_02.zip
там же исходники и там же - демо-проекты с примерами использования
← →
Хамло (2002-10-18 11:23) [4]to han_malign
Задача в следующем: написать программу, которая по каким-то входным данным будет рассчитывать по определенным формулам результат... И нужно предусмотреть возможность замены формул юзером в готовой программе не переписывая сам проект.
← →
han_malign (2002-10-18 12:49) [5]4. RxLib - только символические значения в строке фармулы заменяешь входными значениями.(долго конечно считать будет, но...).
3. Если набор входных значений фиксирован, то оптимизировать самому придется, переводить в префиксную форму и etc.,etc.,etc...., фактически компилировать.
dll_templ.beg:
Lybrary Func;
uses Math;
function _func(x1,x2,...: extended): extended;
begin Result:=
dll_templ.end:
; end;
exports
_func;
begin
end.
dll_templ.beg + "формула"+ dll_templ.end > dll_templ.dpr
hProc:=ShellExecute(Handle,"open","dcc32.exe","dll_templ.dpr","",SW_SHOWMINNOACTIVE);
WaitForSingeObject(hProc,INFINITE); ну короче про то как выполнить что то много веток было
hLib:=LoadLibrary(dll_templ.dll);
pFunc:=GetProcAddress(hLib,"_func")"
........
y:=_func(x1,x1,...)
........
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c