Eval() позволяет исполнить пользовательский код, записанный в одну строку, лежащий в блоке кода.
FileEval позволяет запустить пользовательский код, хранящийся в файле.
HFileEval также как и FileEval+ запуск откомпилированных .hrb.
А нет ли возможности запускать пользовательский код, записанный в несколько строк(строка+символ-конец строки+строка....), которая могла бы к примеру храниться в DBF файле в виде memo, или просто в виде строки?
Пытался в блок кода "впихнуть" несколько строк:
nordk пишет:
И еще Вы в Eval пытаетесь передавать список аргументов - а они уже определены...а то Вы показываете опять только кусок кода....
Код
FUNCTION CheckAndMakeString(UString)
Local bBlock, bCorrect:=.T.,x,y,z,q,s
Local temp:=1
LOCAL oErr
x:=1
y:=1
z:=1
q:=1
S:=1
UString:= "{|x,y,z,q,s|"+UString+"}"
TRY
bBlock:=&UString
temp:=Eval(bBlock,x,y,z,q,s)
Catch oErr
bCorrect:=.F.
end
return bCorrect
Это функция проверки на правильность введенной формулы. При её вводе пользователем. У него (пользователя) ограничение - 5ть переменых, которые я и определяю, только, чтобы проверить.
(Недостаток - не учтено деление на ноль. К стати сейчас, думаю, можно убрать строки с Eval и инициализацией переменных. Ф-я должна только проверку на синтаксис делать)
С формулой, которую можно записать в одну строку всё отлично работает, а вот 2 строки. Если, например нужно не просто формулу вставить, а что-нибудь эдакое: