Первые два рабочих дня "новой" программы помимо ожидаемых ошибок, связанных с "длинными" именами переменных/функций принесли пару-тройку ситуаций, в которых я ничего не могу понять.
Общий смысл таков, что в некоторых местах, связанных с интенсивными расчетами (напр. подгтовка прайс-листа на 5-6 тысяч наименований, сложная комбинированная работа с разными таблицами одновременно и тп) приводит к совершенно непредсказуемым результатам:
- пропадают надписи в SAY в панели с несколькими GET
- программа вылетает/виснет
- программа неожиданно начинает пытаться открыть документ Word/Excel а то и несколько...
Осмысленного объяснения этому процессу дать не могу, поскольку связи с кодом нет точно. Во всяком случае, Clipper в этих местах работал (но зато без звука вылетал в других и намного чаще).
На одной машине даже поймал вот такой отчет:
---
Application Internal Error - D:\tradewin.exe
Terminated at: 2013.08.23 12:12:31
Неисправимая ошибка 9009:
hb_xrealloc ене может перераспределить память Called from AADD(0)
Called from CRLIST(187) in trade206.prg
Called from ADDR2QUEUE(124) in trade206.prg
Called from SALE2QUEUE(209) in trade206.prg
Called from MAKESALEDOCS(1816) in trade224.prg
Called from SALECONT2(593) in trade224.prg
Called from DBVIEW2(4807) in trade225.prg
Called from DO(0)
Called from ACHOICE(0) in ../../../achoice.prg
Called from DBVIEW(4784) in trade225.prg
Called from SALECONTROL(272) in trade224.prg
Called from CHECK4DAMAGE(963) in trade.prg
Called from MAIN(234) in trade.prg
------------------------------------------------------------------------
в Clipper я использовал в критичных местах шаманства наподобие MEMORY(-1) и FT_IamIdle()
В Harbour я естественно их убрал - полагал, что там, где раньше почти хватало 16 мегов памяти, в 1-2 гигабайтах будет где развернуться без проблем.
Похоже, что это не так.
Что нужно использовать для Harbour и в каких случаях ?