![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение алгоритма расчета [D7, WinXP]
sergstud © (2006-05-31 10:49:00)Надо сделать так, чтобы конечный пользователь мог изменять в
программе алгоритмы вычислений (напр. было x=z+y, а надо
x=2*z-y или что-нибудь подобное, но заранее разработчику
неизвестное)?
Помогите, кто знает.
Заранее благодарен.
TUser (2006-05-31 12:22:00) [1]http://algolist.manual.ru/syntax/revpn.php
http://algolist.manual.ru/syntax/index.php
Леприкон (2006-05-31 11:38:00) [2]Как вариант - использовать MSScriptControl.
ниже пример использования, для обработки файлов
в переменную strFileName передается имя файла. Так же можно поступить и с X, Y, Z. Не пример для подражания, но пример для раздумий
function TFrmMain.ApplayVBScript(FileName : string; Code : WideString) : boolean;
{обработка файла кодом VBScript}
var iScript : Variant;
strCode : string;
begin
Result := false;
try
//инициализация скриптконтрол
iScript := CreateOleObject('MSScriptControl.ScriptControl');
iScript.SitehWnd := Handle;
iScript.Language := 'VBScript';
iScript.Reset;
//передаем в скрипт переменную с именем файла
strCode := 'strFileName = "' + FileName + '"' + #10#13;
//формируем код скрипта
strCode := strCode + Code;
//выполняем код скрипта
iScript.AddCode(strCode);
//уничтожаем скриптконтрол
iScript := Unassigned;
Result := true;
except
on E : Exception do
begin
Result := false;
strError := E.Message + #10#13;
strError := strError +'(' + iScript.Error.Text + ')' + #10#13;
strError := strError + 'строка: ' + IntToStr(iScript.Error.Line - 2) + ', столбец: ' + IntToStr(iScript.Error.Column);
end;
end;
end;
MBo (2006-05-31 11:26:00) [3]Придется встроить в программу парсер арифметических выражений
В rxlib есть несложный, например