Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 26.12.05 18:48. Заголовок: Глючит TBrowse в Harbour?
Пересобрал прогу на: Operating System : Windows 2000 Professional 5.00.2195 Compiler : Borland C++ 5.5.1 xHarbour Version : xHarbour build 0.99.51 Intl. (SimpLex) Build Date : Dec 26 2005 11:00:03 , которая работает на Clippere 5.2е PM + adsNTX+blinker60 метод Forcestable() вылетае с ошибкой приведенной ниже. Это только у меня такое случается ? Subsystem Call ..: BASE System Code .....: 1068 Default Status ..: False Description .....: Argument error Operation .......: array access Arguments .......: [ 1] = Type: U [ 2] = Type: N Val: 1 Involved File ...: Dos Error Code ..: 0 Trace Through: ---------------- (b)TDATACACHE:TDATACA : 171 in Module: tbrowse.prg TDATACACHE:GETCELLCOL : 0 in Module: tbrowse.prg TBROWSE:DISPCELL : 2,750 in Module: tbrowse.prg TBROWSE:HILITE : 2,717 in Module: tbrowse.prg TBROWSE:PERFORMSTABIL : 2,343 in Module: tbrowse.prg TBROWSE:FORCESTABLE : 2,202 in Module: tbrowse.prg PERESVET : 80 in Module: PERESVET.PRG PRBROWSE : 131 in Module: PRBRS.PRG TELKARTA : 97 in Module: TELKARTA.PRG CASEKMENU : 104 in Module: ZMENU.PRG
|
|
|
Ответов - 4
[только новые]
|
|
|
| Администратор
|
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 26.12.05 21:46. Заголовок: Re:
Нет, я знаю этот баг, он появился в TBrowse где-то месяц назад, я писал о нем Maurilio Longo, он обещает пофиксить после Нового года Глюк связан с добавлением кэширования в TBrowse Пока он не исправил можно сделать следующее: В метод :DispCell добавить 5-й параметр: METHOD DispCell( nRow, nCol, xValue, nColor, lBlank ) // Displays a single cell and returns position of first char of displayed value if needed перед строкой 2750 поставить условие: if lBlank == nil aCellColor := ::oDataCache:GetCellColor( nRow, nColumn ) endif В :DeHilite() добавить Local lBlank и заменить if xValue == NIL xValue := BlankValue( ::aColsInfo[ ::nColPos ] ) lBlank := .T. endif nNotLeftCol := ::DispCell( ::nRowPos, ::nColPos, xValue, TBC_CLR_STANDARD, lBlank ) и т.д тоже самое сделать в :hilite() я на CVS не заливаю, поскольку это модуль Maurilio, а TBrowse дело тонкое, как бы в нем не напортачить Отпиши если это твой случай ЗЫ ты таки добрался до сырцов, поздравляю :)
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 27.12.05 15:07. Заголовок: Re:
Pasha Да помогло! но похоже там еще есть ошибка (Tbrowse.PRG). if ( nMode <= 1 .and. !::lNeverDisplayed ) .or. lInitializing xVal := Eval( aCol[ o_Obj ]:block ) !!!!!! НА ЭТОЙ СТРОКЕ ВЫЛЕТАЕТ! aCol[ o_Type ] := valtype( xVal ) aCol[ o_Heading ] := aCol[ o_Obj ]:heading Subsystem Call ..: BASE System Code .....: 1004 Default Status ..: False Description .....: Class: 'NIL' has no exported method Operation .......: EVAL Arguments .......: Involved File ...: Dos Error Code ..: 0 Trace Through: ---------------- TBROWSE:CONFIGURE : 807 in Module: TBROWSE:CONFIGURE : 807 in Module: tbrowse.prg TBROWSE:PERFORMSTABIL : 2,234 in Module: tbrowse.prg TBROWSE:FORCESTABLE : 2,202 in Module: tbrowse.prg MYBROWSE : 115 in Module: MYBRS.PRG
|
|
|
|
| Администратор
|
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 27.12.05 19:56. Заголовок: Re:
Мне кажется что такая ошибка может возникнуть только если метод AddColumn вызывается без параметров, т.е oB:AddColumn(nil) Это так ? Клиппер наверное такое схавает, а какой в этом смысл ? TColumn при этом добавится ? Или что-то другое ? Можешь привести фрагмент своего кода ? Клиппер похоже допускает когда TColumn не существует вообще, т.е. nil oBrowse:AddColumn(TBColumnNew('Rec', {|| nRec})) oBrowse:AddColumn(TBColumnNew('NN', FieldBlock('NN') )) oBrowse:AddColumn() ? oBrowse:ColCount // 3 ? ValType(oBrowse:GetColumn(3)) // U И такую совместимость можно обеспечить, а стоит ли ?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 28.12.05 10:14. Заголовок: Re:
Pasha Ты прав! Действительно в моих исходниках была лишняя запятая.
|
|
|
|