On-line: SergKis, Aleksandr_D, гостей 0. Всего: 2 [подробнее..]
АвторСообщение





Пост N: 86
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 11.08.13 18:47. Заголовок: Перехожу с Clipper 5.2e на Harbour, список вопросов от "новичка"


Добрый день, уважаемые коллеги.

Большое спасибо за море справочной информации по переходу, но нужно ещё пнуть меня в нужном направлении.

Итак, установил Harbour 3.0 + BCC 5.5.1 ==>> 3.2.0 +minGW скомпилировал и запустил традиционный "Hello, world!"
Дело перешло к проекту, из-за которого собственно и речь. Компилируется что через hbmk2, что самим харбором - без ошибок, всего с парой предупреждений, что меня немало удивило.
Возникли ошибки на этапе линковки:

Скрытый текст

Help, please - что делать и куды бечь ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 285 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


постоянный участник




Пост N: 3008
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.09.13 10:48. Заголовок: Sergy пишет: Для по..


Sergy пишет:

 цитата:
Для построения отчета использую таблицу продаж


Какая таблица ?
Какие критерии построения отчета ?
Дайте примеры что ищите...

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2994
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.09.13 10:53. Заголовок: Sergy пишет: Как ус..


Sergy пишет:

 цитата:
Как условная индексация может тут помочь ?



Никак. Каждый инструмент хорош для своих целей. Условная индексация применяется, если надо полностью исключить из индекса данные по некоторому условию.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 290
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 19.09.13 22:45. Заголовок: Вопрос. Существует ..


Вопрос.

Существует ли какой-нибудь способ "снести" работающую программу на Harbor с клавиатуры с установленным SETCANCEL(.F.) ?

Суть в следующем: есть довольно сложный участок кода, приводить его здесь в качестве "самодостаточного примера" нет никакой возможности: куча RELATION, FILTER по нескольким открытым таблицам: типичная работа юзера: открыть накладную, нажать Insert, выбрать (отфильтровать) нужный товар, нажать ENTER, ввести нужно кол-во -> товар добавляется в накладную.

Опять начались необъяснимые вылеты программы: ни стандартный обработчик ошибок, ни hb_out.log ничего не дают: в обоих случаях пусто. Программа просто схлопывает окно без малейшего сообщения. По диспетчеру задач утечек памяти (как было с ошибками 9ххх) точно нет. Зависаний, подтормаживаний - тоже. Все летает, потом - бац - окна нет.

Сделал тест: в основном цикле обработки нажатий юзера сделал примерно следующее: при нажатии K_ALT_F1 в буфер клавиатуры засылаются типичные нажатия на клавиши юзера (K_INS + случайная последовательность цифр (типа, поиск товара) + K_ESC (отмена) или K_ENTER (выбор) + заново K_ALT_F1 (чтобы зациклить процесс). В ходе чего тупо увеличивается счетчик и при помощи STRFILE() сбрасывается в локальный файл, чтобы понять, сколько раз цикл проработал.

В результате: цикл отрабатывает уже несколько тысяч раз - гораздо больше, чем за день набивает среднестатистический юзер - все ровно. И в локальной базе на компе с Harbour и в реальной сети.

Может там какой CTRL в комбинации с ALT позволяет сделать что-то типа ALT_C при SETCANCEL(.T.) ?


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 41
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 20.09.13 06:44. Заголовок: Полное логирование пользователя


Добавить режим работы программы (по настройке) - запись в лог всех действий юзеров ,
с указанием места в коде программы,
до отдельных клавиш клавиатуры можно не детализировать.
Можно поймать момент времени, когда и в каком месте кода произошло прекращение работы.

Применяется ли EXIT procedure и что фиксируете при нормальном завершении?

Можно организовать отдельный поток ( с логированием) который просто через интервал ( 10 сек)
в этот же лог работы юзеров будет скидывать состояние некоторых ключевых параметров состояния

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 291
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 20.09.13 11:15. Заголовок: petr707 пишет: Прим..


petr707 пишет:

 цитата:
Применяется ли EXIT procedure и что фиксируете при нормальном завершении?


При запуске программы из mem-файла берется error_counter (изначально равный -1, увеличивается на единицу и сохраняется назад в mem-файл. При нормальном завершении уменьшается на единицу и еще раз сохраняется в mem-файл. Во время работы значение err_count мониторится. Если не равно нулю - значит был вылет.


 цитата:
Можно организовать отдельный поток ( с логированием) который просто через интервал ( 10 сек)
в этот же лог работы юзеров будет скидывать состояние некоторых ключевых параметров состояния


Спасибо за идею. Организовывать MT для задачи, которая и так себя нестабильно ведет, наверное не совсем верно. Попытаюсь решить через SaveConsole()/RestConsole() - мою обертку для SAVESCREEN()/RESTSCREEN() - они вызывается чаще всего и регулярно при входе/выходе в большинство процедур.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 936
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 20.09.13 11:37. Заголовок: Sergy пишет: ни ста..


Sergy пишет:

 цитата:
ни стандартный обработчик ошибок, ни hb_out.log ничего не дают: в обоих случаях пусто.

Т.е. hb_out.log появляется, но он пустой? А про обработчик ошибок что имеется ввиду что тоже пустой?

Можно пересобрать harbour c опцией:
## Memory statistics/tracking
Build Harbour with:
HB_USER_CFLAGS=-DHB_FM_STATISTICS

потом пересобрать прогу и смотреть появится ли fm.log (вроде так) при очередном падении, если да, то смотреть что там.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 42
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 20.09.13 12:54. Заголовок: errorsys - корректный ?


Есть еще идеи
1) Если всю программу обернуть в begin..recover.. end
то можно обнаружить некорректно перееопределенный ERRORSYS
begin sequence
... all_program()
recover using oError
// В этой секции
? " Undefined error"
end sequence
2) MT тем и хорош, что можно в поток обернуть проблемный вызов,
и если он грохнется, основной поток будет жить и сможет разобраться,почему поток свалился.
3) Аналогично пункту 1 - почти весь код оборачивается во второй поток, в главном -только
хорошо отлаженная диагностика свала второго потока



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 292
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 20.09.13 14:18. Заголовок: AlexMyr пишет: Т.е...


AlexMyr пишет:

 цитата:
Т.е. hb_out.log появляется, но он пустой?


Сейчас вижу, что я некорректно выразился. Имелось в виду, что hb_out.log не появляется.


 цитата:
А про обработчик ошибок что имеется ввиду что тоже пустой?


Еще с давних времен я сделал свой обработчик ошибок, который при запуске программы устанавливается и больше не меняется. В случае возникновения программных ошибок, он выводит сообщение на экран и дублирует в файл, вместе со стеком вызовов, номерами строк, состоянием памяти, открытыми таблицами и тп. При следующем успешном запуске программы этот файл сливается в каталог с dbf таблицами - и не вставая с кресла можно понять, что именно, где, у кого и когда именно произошло. Для отлова программынх ошибок - самое то.

Так вот в данном случае обработчик тоже "ни гу-гу".

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 293
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 20.09.13 14:20. Заголовок: petr707 пишет: Есть..


petr707 пишет:

 цитата:
Есть еще идеи


Хм... надо подумать в этом направлении.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 295
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 20.09.13 14:29. Заголовок: Поднял лог изменений..


Поднял лог редактирований исходников и сравнил с ростом "неожиданных вылетов", которые начались в начале этой недели. Из значительных изменений, сделанных в программе было: #define RUN(x) HB_ProcessRun("cmd /c "+x)

Вчера вечером отменил этот код, сегодня держу пальцы крестиком, но половину рабочего дня вылет был один раз и только на одной машине.


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 297
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 20.09.13 17:16. Заголовок: Попутно возник еще в..


Попутно возник еще вопрос.

Есть dbf таблица на сервере с одной записью. Каждая машина в свой отдельный файл скидывает в нее свое состояние: стек вызовов, снимок экрана, дату/время и тп - как раз для диагностики происходящих вылетов. Вызов происходит в процессе FT_OnTick() каждые 10 секунд.

Я на своем компе открываю мониторинг и вижу, что происходит на других компах. Обратил внимание, что дата модификации этого dbf файла не совпадает со штампом времени, в который сделана запись. Например: я смотрю у юзера состояние, присланное в 18:02, а сам файл имеет 4 штампа:

 
Far CTRL-A:
ДД.ММ.ГГГГГ чч:мм:сс,мс
Время последней записи: 20.09.2013 16:31:46,158
Время создания: 20.09.2013 15:25:15,916
Время последнего доступа: 20.09.2013 17:34:39,906
Время изменения: 20.09.2013 16:31:46,158


Почему уже полтора часа (с 16-30) не обновляется "время изменения" ?

Может, до тех пор, пока пишущая программа не закроет эту таблицу не произойдет изменение ?
Но почему тогда не меняется "время последнего доступа", если я смотрел только что с другого компа ?

Раньше не обращал внимания на такие вопросы и мне кажется, в Clipper все было предельно четко: прошла запись - атрибуты файла соотв. образом изменились. Был лаг из-за небольшого отставания/спешки часов в ntvdm машине - но это было понятно хоть почему.




Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3581
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.09.13 18:11. Заголовок: Sergy Где то подним..


Sergy
Где то поднимался на форуме такой вопрос , попробуй поиск помучать.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3008
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.09.13 13:04. Заголовок: Sergy пишет: Почему..


Sergy пишет:

 цитата:
Почему уже полтора часа (с 16-30) не обновляется "время изменения" ?



Современные ОС еще не так чудят. 5 минут назад:
Win7. Делаю xml-файл с помощью классов А.Кресина. Размер - 1.5М. Штатно закрываю его на локальном диске посредством

oXml:Save( cFile )

Закрываю программу, перехожу в фар. Фар показывает его размер - 0 байт. Открываю его редактором, вьювером. Файл создан нормально, но его размер - 0. Только после копирования файла на другой диск исходный файл получил размер.
Не верю своим глазам (изыди, нечистый). Плюю через левое плечо. Удаляю файл и проделываю все по новой. Размер появляется сразу. Изгнание беса помогло.


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 311
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 26.09.13 16:13. Заголовок: Еще вопрос. Под Cli..


Еще вопрос.

Под Clipper работали сочетания клавиш ALT+цифры. Иногда, в некоторых местах программы довольно удобно было поставить "специальную" метку в реквизитах клиента, описании и тп. Например, "сеточка" ALT+1+7+6, "квадратик" ALT+2+5+4 и тп.

Как активировать подобный функционал в Harbour ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 943
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 26.09.13 16:21. Заголовок: Sergy пишет: Как ак..


Sergy пишет:

 цитата:
Как активировать подобный функционал в Harbour ?


Сейчас проверил, работает. Терминал GTWVT.
Пример простейший:
FUNCTION  Main() 
LOCAL c := " "
CLS
@ 0, 0 GET c
READ
QUIT


В get-е появляются символы с набранными на цифровой клавиатуре кодами.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3590
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.09.13 16:23. Заголовок: Sergy пишет: Как ак..


Sergy пишет:

 цитата:
Как активировать подобный функционал в Harbour ?


Ни чего не нужно активировать , все и так работает ALT + твой код на цифровой клавиатуре

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 312
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 26.09.13 17:37. Заголовок: Эк меня приглючило. ..


Эк меня приглючило. И действительно, работает...
Оказывается, для Harbour главное, чтобы NumLock был включен. В Clipper (ntvdm) работало в любом состоянии NumLock. Только что проверил.

Спасибо!


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 944
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 26.09.13 19:30. Заголовок: Sergy пишет: Оказыв..


Sergy пишет:

 цитата:
Оказывается, для Harbour главное, чтобы NumLock был включен. В Clipper (ntvdm) работало в любом состоянии NumLock. Только что проверил.

Спасибо!


Во как! Спасибо тоже! :)


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 315
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 28.09.13 19:53. Заголовок: Подскажите плиз, уже..


Подскажите плиз, уже намаялся:

Вот, допустим, накосячил я где-то в исходнике (ENDIF забыл, ну или там DO / WHILE перепутал...) - возникает несколько десятков ошибок в цепочке. Компилятор выплевывает их всех, разумеется, на экране консоли виден только их "хвост". Как понять, с чего все началось ?

Использую hbmk2 под Far. Пока временно приходится ставить высоту буфера экрана под 300 символов, компилировать и потом снова возвращать нормальные 25. Надоело...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 46
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 28.09.13 20:27. Заголовок: Самое простое - вывод hbmk2 направить в log


hbmk2 test.hbp -otest.exe> build_test.log
и смотреть log
а лучше - выбрать среду разработки или редактор с вызовом компилятора

Спасибо: 1 
ПрофильЦитата Ответить
Ответов - 285 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 157
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет