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

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

Изменение алгоритма расчета [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 есть несложный, например


Наверх

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