ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Кодовый блок в EVAL()
 
Здравствуйте!

Код
 AEVAL(aStroki,{|Str| aStr:=Str,;
   AEVAL(aColonki,{|Col| 
aCol:=Col,iif(ascan(aAll,{|x| 
upper(x[1])=upper(aStr[1]).and.upper(x[2])=upper(aStr[2]).and.upper(x[3])=upper(aCol[1]).and.upper(x[4])=upper(aCol[3]).and.upper(x[5])=upper(aCol[5])})=0;
          .and.!File_vr->(dbseek(upper(aStr[1]+aStr[2]+aCol[1]+aCol[3]+aCol[5])));
          , ,;
          
 
Eval({||File_vr->(ADDREC()),File_vr->Vid:=aCol[1],File_vr->Vid_Name:=aCol[2],File_vr->(F_DBUNLOCK())});    
 
          );
      }); 
     })
 
aStroki,aColonki,aAll - это массивы, комбинации значений которых записываются в файл File_vr

Бэст ругается на строку
Eval({||File_vr->(ADDREC()),File_vr->Vid:=aCol[1],File_vr->Vid_Name:=aCol[2],File_vr->(F_DBUNLOCK())})
- "Неверный аргумент"

Если эту строку записать так :
Eval({||sayandwait('1'),File_vr->(ADDREC()),File_vr->Vid:=aCol[1],File_vr->Vid_Name:=aCol[2],File_vr->(F_DBUNLOCK())})
то РУГАНИ НЕТ,т.е надо перед File_vr->(ADDREC()) применить какую либо функцию.

Конечно ,можно вместо этой строки записать так:
fFile_vr(aCol[1],aCol[2]);
где fFile_vr
FUNCTION fFile_vr(a,b)
File_vr->(ADDREC())
File_vr->Vid:=a
File_vr->Vid_Name:=b
File_vr->(F_DBUNLOCK())
sayandwait('2')
RETURN Nil

Тогда все работает как надо.
Но как тогда правильно ( если это возможно ) написать выражение с использованием Eval({|| ?
 
P.S.
Если из FUNCTION fFile_vr(a,b)
File_vr->(ADDREC())
File_vr->Vid:=a
File_vr->Vid_Name:=b
File_vr->(F_DBUNLOCK())
sayandwait('2')
RETURN Nil

убрать строку sayandwait('2') то , программа также ругается на " неверный аргумент"
 
Прошу прощения.
Разобрался ошибка была в другом месте программы.
Тему,наверное, можно совсем удалить.
Но остался один Вопрос .

В каком случае программа будет быстрей работать :
1. Если оставить выражение Eval({||File_vr->(ADDREC()),File_vr->Vid:=aCol[1],File_vr->Vid_Name:=aCol[2],File_vr->(F_DBUNLOCK())})

как есть.

2 Или вместо него просто вызвать функцию
FUNCTION fFile_vr(a,b)
File_vr->(ADDREC())
File_vr->Vid:=a
File_vr->Vid_Name:=b
File_vr->(F_DBUNLOCK())
RETURN Nil
 
Блоки кода работают быстрее
Страницы: 1
Читают тему (гостей: 2)