![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Баг в Delphi 5 [D5, Win95/98, WinME, NT4, Win2k, WinXP]
Дмитрий К.К. © (2002-12-23 08:16:00)Грят, в пятерке имеется баг в модуле graphics.pas. В процедуре TBitmap.ReadDIB вместо строки
RLEStream.Seek(ImageSize, soFromEnd);
должна быть строка
RLEStream.Seek(-ImageSize, soFromEnd);
(между прочим, в шестой версии этот баг пофиксен)
И етот баг дает ошибку чтения потока.
Вопрос такой: какова последовательность действий при исправлении ошибок в сырцах Delphi?
Дмитрий К.К. (2002-12-25 07:04:00) [1]Юрий!!!
У меня сейчас, как и у Вас
> Юрий Зотов © (24.12.02 08:53)
Компонент не глючит, graphics.pas у полном у порядке, проекты компилятся.
Спасибо, шо с Вашей помощью удалось докопаться до истины!
MentatXX (2002-12-24 11:55:00) [2]Хмм ... я перекомпилял VCL ... все нормально ....
ЗЫ. там же есть MakeFile ... так что все ОК.
только компайлеры к нему подогнать надо ...
помнится Асм + Дельфовый компайлеры.
Дмитрий К.К. (2002-12-24 09:01:00) [3]Все ясно, огромное спасибо, бум обновлятьси!
Юрий Зотов (2002-12-24 08:58:00) [4]Конечно, оттуда и списал, один-в-один.
Дмитрий К.К. (2002-12-24 08:55:00) [5]А в информационном окне IDE пишется "Update Pack 1"?
Юрий Зотов (2002-12-24 08:53:00) [6]Version 5.0 (Build 6.18) Update Pack 1.
Дмитрий К.К. (2002-12-24 08:48:00) [7]Строка 5724:
RLEStream.Seek(ImageSize, soFromEnd);
Версия 5.0 (Build 5.62)
А у Вас? ;)
Юрий Зотов (2002-12-24 08:37:00) [8]Странно. У меня D5. Только что заглянул в исходники TBitmap.ReadDIB и там в строке 5724 вижу:
RLEStream.Seek(-ImageSize, soFromEnd);
Во всем файле Graphics.pas подстрока RLEStream.Seek более нигде не встречается, это единственное место. Так что непонятно, о какой ошибке идет речь. Может быть, у Вас не пропатчена Delphi?
Дмитрий К.К. (2002-12-24 08:22:00) [9]Спасибо, Юрий... имеется компонент... и имеется желание его установить именно в пятую версию. Устанавливаться-то он устанавливается, даже появляется на палитре, но когда бросаю его на форму, выдается сообщение Stream read error :(
Автор говорит, что это из-за ошибки разработчиков в модуле graphics.pas.
Получается, никак?
Юрий Зотов (2002-12-24 07:40:00) [10]Во как, прям персонально...
Я бы все же не стал перекомпилировать VCL. Опасное это дело, IMHO. Уже хотя бы потому, что в сырцах есть не все - они даются нам все же для справки, а не перекомпиляции. Скажем, встречал я в них вот такие вещи.
Объявляется запись, состоящая из двух целых полей. А в одной из процедур идет работа с этой записью - но так, что происходит явный выход за ее пределы. Вывод - на самом деле полей в этой записи больше, но в сырцах показаны только первые два.
Что получится в результате перекомпиляции по таким сырцам? Вряд ли что-то хорошее.
Хотя встречал то, о чем говорил msts - нужный файл копируется (даже не обязательно в каталог самого проекта), копия правится и ее каталог прописывается в путях поиска проекта РАНЬШЕ "родных" каталогов Delphi. Вроде бы, работало - хотя не факт, что эта метода сработает для ЛЮБЫХ файлов (почему - см. выше).
Если есть уверенность, что баг действительно есть, а патча на него нет, то я постарался бы обойти его - не использовать те места где он может проявиться, а вместо них написать свой код, либо использовать API.
Дмитрий К.К. (2002-12-24 06:28:00) [11]Спасибо... еще будут мнения?
Юрий Зотов, обратите, пожалуйста, внимание на сию ветку.
msts (2002-12-23 15:13:00) [12]Если компилишь прогу в режиме "с пакетами"(бпл) - ни как (или правь бинарник :) ), в обычном же - скопируй в каталог с проектом нужный файл и исправь его, к результирующему екзе прилинкуется нужный.
Дмитрий К.К. (2002-12-23 14:39:00) [13]Подымем веточку...