BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

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

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


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / Вопрос к гуру на тему создания prg БЕСТ4+

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Вопрос к гуру на тему создания prg БЕСТ4+
 
В целом тему попытался как смог изучил, облазил форумы, перечитал документацию. Ответа на Вопрос не нашел, полагаю что такое сделать не реально, но для успокоения души, все же хочу поинтересоваться. Возможно ли преждевременная остановка приложения (скрипта). Например, вот код:
Код
PRIVATE aPRO, aDogovorID, st
PRIVATE avID, avType, aScladID, aCodeDoc, aNumDoc, aDate

avID:="2"
avType:="1"
aScladID:="000001"
aCodeDoc:="001"
aNumDoc:="918960"
aDate:="20090402"
aDogovorID:=99
aPRO:=0

NETUSE('hmdoc',LoadPath()+"sclad\mdoc.dbf")
DBSELECTAREA("hmdoc")
ORDSETFOCUS("MDOC_D")
IF DBSEEK(UPPER(aScladID+avID+avType+aDate+aCodeDoc+aNumDoc))
  aPRO:=hmdoc->pro
  RECLOCK()
  hmdoc->DogovorID:=aDogovorID
  F_DBUNLOCK()
ENDIF
DBCLOSEAREA()

IF aPRO=0 
  // Здесь я ХОЧУ, что бы программа закончила свою работу
  // Но не RETURN, не другие точки останова не помогают
  // Программа все равно продолжает далее работать...
ELSE
  NETUSE('hmain',LoadPath()+"main.dbf")
  DBSELECTAREA("hmain")
  ORDSETFOCUS("TAG_NNOPER")
  IF DBSEEK(aPRO)
    DO WHILE !EOF().AND.hmain->nnoper=aPRO
      RECLOCK()
      hmain->DogovorID:=aDogovorID
      F_DBUNLOCK()
      DBSKIP()
    ENDDO
  ENDIF
  DBCLOSEAREA()
ENDIF

SAYANDWAIT("-TRUE-")

вот там где комментарий, как то можно тормазнуть выполнение?
Я понимаю, что можно все это обойти с помощью IF, но это самый простой код, как правило все значительно сложнее.
предвкушая следующий Вопрос, сразу отвечаю, эти prg-ешки запускаются у меня из под командной строки:
BIN\SCLAD.EXE /feMyFile.prg /L000001
 
Добрый день.

Перекомпилируйте свой код в harbour. Поставьте вместо комментария обычный return.
В программе femyfile.prg напишите: hfileeval('myfile.hrb')
С уважением, Новиков Алексей.
 
Цитата
Алексей Новиков пишет:
Добрый день.



Перекомпилируйте свой код в harbour. Поставьте вместо комментария обычный return.

В программе femyfile.prg напишите: hfileeval('myfile.hrb')

я рассматривал этот вариант и даже пробовал, работает, но мне нужно именно prg, т.к. эти скрипты у меня генерит внешняя программа. вот такая у меня задачка.
Вобщем, я так полагаю, что я правильно понял, что нет такой возможности, жалко.
 
Разве перед запуском строки:
BIN\SCLAD.EXE /feMyFile.prg /L000001
невозможно запустить компилятор?
harbour heMyFile.prg /a /gh
copy heMyFile.hrb pro\plugins\extensns\...
С уважением, Новиков Алексей.
 
Цитата
Алексей Новиков пишет:
harbour

почему же? возможно. Просто вся конструкция значильно усложняется.

А. вариант с prg
1. запускаем BIN\SCLAD.EXE /feMyFile.prg /L000001

Б. вариант с harbour
1. компилируем
2. копируем, с уникальным именем (проверка на повтор)
3. запускаем
4. удаляем откомпилированный файл.

Чем больше шагов, тем больше вероятность ошибки в автоматическом режиме, т.е. без участия пользователя. Как я уже говорил, это нужно для внешней программы, которая такие запуски должна делать достаточно часто. В данном Вопросе, проще извернуться с помощью IF.
 
А мне не очень понятно зачем Вы все время новый prg создаете.
Все-таки prg и откомпилированный hrb это не одно и тоже.
 
Цитата
nordk пишет:
А мне не очень понятно зачем Вы все время новый prg создаете.

Все-таки prg и откомпилированный hrb это не одно и тоже.

ситуация простая, есть внешняя программа, которая частенько вносит изменения в данные БЕСТ-а, в данном примере она изменяет договора на поставку. Решений было несколько, в том числе и прямой доступ к базам, но после нескольких тестов было принято решение использовать тот же бест, для изменения данных в базах. вот и получается, что она генерит эти prg и скармливает их бесту, а бест уже вносит изменения в свои таблицы, при этом не "рушатся" данные в базах. По скорости, тоже все устраивает.
 
Ну и не проще ли exe по такой схеме использовать?
Формировать харбором и запускать.
Проблема, я так понял, во внешней программе, не имеющей корректного инструмента внесения изменений в DBF БЭСТа.
Изменено: itman - 07.04.2009 10:43:07
С уважением,
Ильин Евгений
 
Цитата
itman пишет:
Ну и не проще ли exe по такой схеме использовать?

Формировать харбором и запускать.

Проблема, я так понял, во внешней программе, не имеющей корректного инструмента внесения изменений в DBF БЭСТа.


ну да, можно и так сказать, были попытки поработать через apollo, halcyon и т.д. но с ними возникают проблемы, как правило связанные с индексами и многопользовательским обращением. И уже окончательно пришлось отказаться, когда встала задача создавать/изменять еще и накладные, тут лучше использовать уже бестовские средства, например возникла необходимость в функции genpro...
Я думаю тему можно закрывать, т.к. Вопрос подтвердился, вставить точку останова нельзя ;)
 
Вообще говоря, я в таких ситуациях ставил вызов несуществующей функции. Происходил останов с выдачей сообщения об ошибке.
С уважением, Новиков Алексей.
 
Цитата
Сергей пишет:



Цитата

nordk пишет:
А мне не очень понятно зачем Вы все время новый prg создаете.

Все-таки prg и откомпилированный hrb это не одно и тоже.
ситуация простая, есть внешняя программа, которая частенько вносит изменения в данные БЕСТ-а, в данном примере она изменяет договора на поставку. Решений было несколько, в том числе и прямой доступ к базам, но после нескольких тестов было принято решение использовать тот же бест, для изменения данных в базах. вот и получается, что она генерит эти prg и скармливает их бесту, а бест уже вносит изменения в свои таблицы, при этом не "рушатся" данные в базах. По скорости, тоже все устраивает.

Тогда спрошу дальше
а почему бы из prg не вызывать нужный hrb заранее созданный и откомпилированный и дальше внуотри прг рулить запуском того илиного hrb - ведь алгоритмы то не меняются ?
 
Можно попробовать переход по "GoTo" на последнюю строку
Страницы: 1
Читают тему (гостей: 1)