On-line: Dr. Oldwarez, PSP, tnsr2, гостей 1. Всего: 4 [подробнее..]
АвторСообщение



Не зарегистрирован
Зарегистрирован: 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


Спасибо: 0 
Профиль
Ответов - 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 дело тонкое,
как бы в нем не напортачить
Отпиши если это твой случай

ЗЫ ты таки добрался до сырцов, поздравляю :)

Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 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


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




Не зарегистрирован
Зарегистрирован: 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

И такую совместимость можно обеспечить, а стоит ли ?


Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 28.12.05 10:14. Заголовок: Re:


Pasha

Ты прав! Действительно в моих исходниках была лишняя запятая.


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