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

Вниз

Ошибка в KOL / TBitmap.SetHandle.   Найти похожие ветки 

 
gent   (2005-03-02 02:16) [0]

Уже обсуждались проблемы, связанные с обновлением TBitmap.SetHandle в KOL 2.04
(см. http://delphimaster.net/view/11-1109056582/).
Вот еще одна.

Следующая программа не работает под Windows"98 (access violation).
Компиляция через Delphi 5 + KOL 2.05 + {$DEFINE ASM_VERSION} + замена system.dcu.

program rbox;
{$R "rbox.res"}
uses KOL;
begin
 NewBitmap(0, 0).LoadFromResourceName(hInstance, "RBOX");
end.

Здесь ресурс-файл rbox.rc: RBOX BITMAP "rbox.bmp" ,
а rbox.bmp - красный квадрат, 16-цветный битмап размером 200х200.

После обратной замены в Kol.pas кода TBitmap.SetHandle на аналог из версии 2.03 приведенная программа работает без проблем.


 
ECM ©   (2005-03-02 09:22) [1]

>Вот еще одна
Это та же проблема.

procedure TBitmap.SetHandle(const Value: HBitmap);
...
 Move( Dib.dsBitfields, fDIBHeader.bmiColors, 3 * SizeOf(DWORD) );

Пробовали?

Все дело в том, что поле Dib.dsBitfields - это Array[0..2] of DWORD. Естесственно, при копировании 256-ти DWORD-ов, будут
затираться другие переменные или сразу вылезет AV


 
ECM ©   (2005-03-02 09:24) [2]

P.S. упс - неточность: не затираться, просто будет чтение
несуществующей памяти...:)


 
Сергей Близнюков   (2005-03-03 12:40) [3]


>ECM (02.03.05 09:22)
>Вот еще одна
Это та же проблема.


procedure TBitmap.SetHandle(const Value: HBitmap);
...
Move( Dib.dsBitfields, fDIBHeader.bmiColors, 3 * SizeOf(DWORD) );


>Пробовали?


Я, как автор предыдущей ветки (Ошибка TBitmap.LoadFromResource в Win98 Версия KOL >=2.04 ), могу заявить:
Пробовали! Не помогает!!!

Выкрутился так
- {$ELSE ASM_VERSION_NO_USE}  //временно вырубили использование ASM кода //Pascal
- поставил проверку WinVer

 if WinVer() < wvY2k then begin
   // старая процедура из KOL 2.02
   if GetObject( Value, Sizeof( B ), @B ) = 0 then Exit;
   fHandle := Value;
   fWidth := B.bmWidth;
   fHeight := B.bmHeight;
   fHandleType := bmDDB;
 end


По прежнему терпеливо ждём комментарий уважаемого автора - Владимира Кладова!



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

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

Наверх




Память: 0.47 MB
Время: 0.046 c
1-1128454553
Студент :(((
2005-10-04 23:35
2005.10.30
Х в N степени


1-1128954325
keal
2005-10-10 18:25
2005.10.30
Выборка с приоритетом


14-1128921696
Ega23
2005-10-10 09:21
2005.10.30
С днем рождения! 10 октября


14-1128920739
ilya39
2005-10-10 09:05
2005.10.30
Visual Studio Beta 2


1-1128359842
DimaT
2005-10-03 21:17
2005.10.30
ReadComponent / WriteComponent