Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.17;
Скачать: CL | DM;

Вниз

Баг в коде DBGrids?   Найти похожие ветки 

 
Aleksandr ©   (2003-02-10 12:38) [0]

У меня при горизонтальном скроллинге RXDBGrid"a периодически вылетало сообщение Integer Overflow. Стал копать и накопал в модуле BDGrids в методе WriteText вот энтот код:

else { taCenter }
Left := ARect.Left + (ARect.Right - ARect.Left) shr 1
- (ACanvas.TextWidth(Text) shr 1);
end;

заменил его на вот так:

else { taCenter }
Left := ARect.Left + (ARect.Right - ARect.Left) div 2
- (ACanvas.TextWidth(Text) div 2);
end;

и ошибка исчезла. И только одного я не могу понять - shr 1 и div 2 - это идентичные выражения, так почему один из них может давать ошибку?


 
Dmitry Filippov ©   (2003-02-10 14:03) [1]

Это интересно.
А скажи пожалуйста при каких обстоятельствах возникала эта ошибка


 
Aleksandr ©   (2003-02-10 14:33) [2]

Ну, реальной природы возникновения ошибки я не очень понял. Понял только, что она происходит при отрисовке колонтитула. У меня очень большая RXDBGrid c большим количеством колонок, создание в ней колонок и отрисовка ее производится вручную (методы перекрыты). В определенный момент горизонтальной прокрутки по нажатиям клавиш "влево" "вправо" (по скроллингу мышью все в порядке) ошибка и выскакивала. Метод с ошибкой обнаружил по остановке на ошибках Делфи, остальное просто шестым чуйством угадал.



Страницы: 1 вся ветка

Текущий архив: 2003.02.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
1-52984
maxi
2003-02-10 08:44
2003.02.17
MIDAS сервер на TRemouteDataModule. Как передать сооб-е клиентам?


14-53267
samson
2003-01-31 15:50
2003.02.17
монитор


9-52702
ArtGamer
2002-09-12 23:51
2003.02.17
X-Com will be back


3-52756
Денис Курьин
2003-01-28 17:59
2003.02.17
Сравнение нескольких таблиц Paradox


1-53011
TButton
2003-02-09 14:30
2003.02.17
RichEdit