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





Пост 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: 316
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 28.09.13 21:46. Заголовок: petr707 пишет: hbmk..


petr707 пишет:

 цитата:
hbmk2 test.hbp -otest.exe> build_test.log
и смотреть log



Разумеется, пробовал в первую очередь. Вот что в логе:

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


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



Пост N: 47
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 29.09.13 09:39. Заголовок: Для 3.2 можно так hbmk2 ... 1> compile.log 2>error.log


hbmk2 ... 1> compile.log 2>error.log



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





Пост N: 318
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 03.10.13 11:27. Заголовок: Возвращаясь к вопрос..


Возвращаясь к вопросу ускорения загрузки справочников с сервера в локальную папку:
Sergy пишет:

 цитата:
Речь в ней идет о DIRTYREAD/TURBOREAD/DBOI_READLOCK

Подскажите плиз - к каким все-таки результатам приводит включение этого "ускорителя" ?


...
petr707 пишет:

 цитата:
для каждой задачи можно проверить и выбрать подходящую схему..
set order to 0; copy to () for...; index on ...
может оказаться быстрее чем
index on ...; copy to () for...;



Поставил пару экспериментов в сети с таблицами, которые в данный момент активно используются юзерами.
У меня код
USE (cTable) READONLY // без индекса
COPY TO (cLocalFile)
CLOSE
работает примерно в 50 раз медленнее, чем COPY FILE (cTable) TO (cLocalFile)
и примерно в 70 раз медленнее, чем STRFILE(FILESTR(cTable),cLocalFile)

Но третий способ почему-то не копирует файлы больше 30-40 мегабайт, хотя оперативной памяти явно с избытком в данном случае. Кто знает ограничения на длину строки? У кого какой результат в сравниваемых способах?

С учетом того, что часто в локальной папке все равно нужно выстраивать индекс, ускорение получается в 5..10 раз. После перехода с Clipper на Harbour и так всё залетало, а тут получается вообще TwinPower Turbo...



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




Пост N: 256
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.10.13 14:27. Заголовок: Sergy смотри http://..

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





Пост N: 319
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 03.10.13 16:41. Заголовок: SergKis пишет: Serg..


SergKis пишет:

 цитата:
Sergy
смотри http://clipper.borda.ru/?1-4-40-00000872-000-0-0



Там идет сравнение различных функций копирования файлов, а у меня волосы дыбом встают от разницы между "файловым" COPY FILE TO и "табличным" COPY TO, которым всегда пользовался...

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



Пост N: 49
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 03.10.13 17:18. Заголовок: Скорость обработки в режиме MEMIO


Посмотрите примеры обработки таблиц в памяти - скорость впечатляет,
может и не потребуется копировать файлы
Тэги поиска mem: hb_memio

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




Пост N: 257
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.10.13 17:25. Заголовок: Sergy пишет:Там идет..


Sergy пишет:
 цитата:
Там идет сравнение различных функций копирования файлов, а у меня волосы дыбом встают от разницы между "файловым" COPY FILE TO и "табличным" COPY TO, которым всегда пользовался...


COPY TO FILE это __Copyfile()
по ссылке gfilatov2002 пишет:
 цитата:
По-видимому, Hb_fcopy() будет побыстрее, поскольку она использует буфер размером 65536 (против 8192 у функции __Copyfile())


COPY TO имеет смысл, если надо урезать по полям или условиям выборки сразу. В VO в COPY TO если задан только файл выполнялась FileCopy(...)

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





Пост N: 320
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 05.10.13 19:13. Заголовок: Возник вопрос: нужен..


Возник вопрос: нужен встроенный просмотр картинок, но под терминал GTWIN. Такое возможно ?
Хочу отказаться от Irfan View, который нужен только для того, чтобы вывести одну картинку на экран (образец товара).

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




Пост N: 3611
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.10.13 19:48. Заголовок: Sergy пишет: нужен ..


Sergy пишет:

 цитата:
нужен встроенный просмотр картинок, но под терминал GTWIN


Встроенный вряд ли и придется лепить отдельную прогу под GTWVT

PS
Тоже вывожу образцы товара но прога под GTWVT поэтому и проблем нет.

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





Пост N: 321
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 10.10.13 22:56. Заголовок: Короче, я обессилел ..


Короче, я обессилел и нифига не понимаю...

Месяц уже ищу причину ничем не объяснимых вылетов программы. Поступил следующим образом: расставил в "критических" местах команды
...
Trace("before some action 1")
...
do some action 1
...
Trace("after some action 1")
...
do some action 2
...
Trace("after some action 2")
...
Функция Trace просто сбрасывает дату+время+строчку в "свой" лог, чтобы не путать машины.

Выяснил, что программа без единого сообщения падает на вот таком коде:

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


Или вот на таком:

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

В среднем примерно в 3х случаях из тысячи на любом из пяти рабочих компьютеров, где эти операции происходят...
Самое убийственное для меня в том, что до расстановки этих Trace вылеты были в среднем 10 раз на тысячу.
Тысяча "чистых" отработок взяты не с потолка, это примерное количество строчек в накладных, соответствующее кол-ву "вылетов".

Подобные вылеты "на ровном месте" происходят и в других местах программы. Расставлять там Trace() уже не понимаю, зачем... :(

Короче, полный ппц какой-то - программа валится как карточный домик от малейшего дуновения... Пару раз при мне, лично сам видел - тупой зависон на ровном месте, программа ни на что не реагирует, загрузка одного ядра процессора под 100% - ничего кроме убийства приложения через диспетчер не помогает... :(((

Подумал, может дело в компилере mingw, попробовал сделать hbmk2 myproject.hbp -comp=bcc (остался от версии 3.0.0) - Turbo linker не может найти библиотеку HBNF.LIB... не от версии 3.0.0 же ее брать... руки опускаются, черная дыра какая-то...

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



Пост N: 58
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 10.10.13 23:23. Заголовок: Во втором сегменте - возможно деление на 0 ?


s_buy_price := ROUND(amount->buy_sum / amount->num,0)

... / amount->num ?!

Можно смоделировать ошибку и проверить, как работает обработчик ошибок
Если "..программа без единого сообщения падает " , то обработчика реально - нет.

Вызовите где-нить рядом что-нить типа
...
err_simulate()
..

Function err_simulate()
Local a:=0,b:=1

b:= 2/a

return .t.

Стремные места можно обрамить не trace , а break recover sequence

BEGIN SEQUENCE with {|e| Break(e) }
// segment
RECOVER
Trace("Erron in segment ..")
END SEQUENCE



При тупом зависоне 100% - ищем hb_out.log немерянного размера - там критическии свалы во множестве


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





Пост N: 322
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 10.10.13 23:36. Заголовок: petr707 пишет: s_bu..


petr707 пишет:

 цитата:
s_buy_price := ROUND(amount->buy_sum / amount->num,0)

... / amount->num ?!


amount->num - целое числовое поле, вполне может быть нулем. Там чуть ниже проверка идет: IF (ABS(s_buy_price) < 0.0005) .OR. (amount->num==0)
это алгоритм расчета закупочной цены товара: сумма закупки делится на кол-во в остатках. Если кол-во равно нулю (например, оформляется возврат) - берется цена последнего поступления.
Остаток равен нулю примерно... в каждой 50й операции...

Ведь с давних времен еще в Clipper повелось:

 d:\Harbour sources\src\rtl\errsys.prg 

// By default, division by zero results in zero
IF e:genCode == EG_ZERODIV .AND. ;
e:canSubstitute
RETURN 0
ENDIF


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

petr707 пишет:

 цитата:
При тупом зависоне 100% - ищем hb_out.log немерянного размера - там критическии свалы во множестве


Нету. У меня по умолчанию локальные report.log (сообщения об ошибках, туда-же идет трассировка) и hb_out.log сливаются при каждой команде CloseAll() на сервер под "своим" именем, зависящим от "имени" машины в сети.

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



Пост N: 59
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 10.10.13 23:44. Заголовок: Вот как раз сюда и поставьте - Trace




// By default, division by zero results in zero
IF e:genCode == EG_ZERODIV .AND. ;
e:canSubstitute
TRACE("zerodiv was !")
RETURN 0
ENDIF

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



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



Пост N: 60
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 10.10.13 23:46. Заголовок: hb_out.log - легко упрется в 2 Гига - через 5 минут


hb_out. log - легко упрется в 2 Гига - и тогда ничего никуда не сольется

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





Пост N: 323
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 10.10.13 23:48. Заголовок: Хм. поставлю. Уверен..


petr707 пишет:

 цитата:
TRACE("zerodiv was !")


Хм. поставлю. Уверен, что будут трассировки.
Понимаю, что в математике делить на ноль нельзя. Но почему нельзя этого делать в Harbour ?? Это ведь стандартный текст обработчика, я его скопировал и дополнил дополнительной инфой.

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





Пост N: 324
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 10.10.13 23:49. Заголовок: petr707 пишет: hb_o..


petr707 пишет:

 цитата:
hb_out. log - легко упрется в 2 Гига - и тогда ничего никуда не сольется


Эвона как...
Поставлю проверку на это дело... Хотя не совсем понятно, чем помешают именно 2 гига... FAT ни на одной машине давно не используется - только NTFS.

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



Пост N: 61
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 10.10.13 23:55. Заголовок: Разве тяжело сделать аккуратнее ?!


IF (ABS(s_buy_price) < 0.0005) .OR. ABS(amount->num) <0.0005
s_buy_price := amount->buy_price
else
s_buy_price := ROUND(amount->buy_sum / amount->num,0)
ENDIF

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





Пост N: 325
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 11.10.13 00:03. Заголовок: petr707 пишет: Разв..


petr707 пишет:

 цитата:
Разве тяжело сделать аккуратнее ?!



Вовсе нет. Сделаю. Прямо сейчас.

Как попробовать другой компилер с Harbour 3.2.0 ?

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



Пост N: 62
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 11.10.13 00:18. Заголовок: Другой компилер - можно разному


Не уверен, что в поставке 3.2 есть BCC
отладить - можно и на 3.0
=========
rem @echo off
cls
echo
echo .. building P ...

set HB_PLATFORM=win
set HB_ROOT=C:\hb30
set HB_BIN_INSTALL=C:\h30\bin
set path=%HB_ROOT%\bin;c:\borland\bcc55\bin;%path%

%HB_ROOT%\bin\hbmk2.exe test_bcc.hbp -oTEST_bcc.EXE > build_.log
...
==========
set HB_PLATFORM=win
set HB_ROOT=C:\hb30
set HB_BIN_INSTALL=C:\hb30\bin

set path=%HB_ROOT%\bin;C:\hb30\comp\mingw\bin;%path%

%HB_ROOT%\bin\hbmk2.exe test_m3.hbp -oTEST_m3.EXE 1> build_m3.log 2>error_m3.log

..


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





Пост N: 326
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 11.10.13 00:21. Заголовок: Поставил в обработчи..


Поставил в обработчик трассировку:

// By default, division by zero results in zero
IF e:genCode == EG_ZERODIV .AND. ;
e:canSubstitute
TRACE(STR(++static_counter)+". Division by zero. ")
RETURN 0
ENDIF

Нажимаю на кнопку "Расчет заказа по результатам торговли" - в логе 12809 сообщений...

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 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 час. Хитов сегодня: 144
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет