Page 1 of 1
Dibread/palbmpread failure
Posted: Mon Mar 06, 2006 1:30 pm
by AlexSchaft
Hi,
How can I find out what causes palbmpread to not return an array?
Alex
Posted: Mon Mar 06, 2006 10:08 pm
by Antonio Linares
Alex,
How are you checking that it is not returning an array ?
palbmpread failure
Posted: Tue Mar 07, 2006 2:52 am
by AlexSchaft
Hi,
I sometimes get an array error from TBitmap():Define() method, where the hBitmap and hPalette are read from the PalBmpRead return. I slightly modified as follows:
aBmpPal = PalBmpRead( If( oWnd != nil, oWnd:GetDC(), 0 ), cBmpFile )
if isarray(aBmpPal)
::hBitmap = aBmpPal[ 1 ]
::hPalette = aBmpPal[ 2 ]
else
::hBitmap = 0
::hPalette = 0
endif
Posted: Tue Mar 07, 2006 8:39 am
by Antonio Linares
Alex,
If you review PalBmpRead() source code you may see it always returns an array.
Posted: Thu Mar 09, 2006 10:38 pm
by DanielPuente
Antonio:
I confirm what alex said. Yesterday i was working in a fw 192 program recompiling it win fw 2.3 and clipper and i have some compatibility problems (i think) between dbuttons class and fw tbitmap class, so i compiled bitmap.prg from fw23\source\classes with my program and this line:
@ 18,45 BITMAP oBmp FILE "logo2.bmp" SIZE 400,100 OF oWnd NOBORDER
Produces the same error alex said:
Descripci¢n: Error BASE/1068 Error de argumento: array access
Args:
[ 1] = N 22524
Invocado por TBITMAP:LOADIMAGE(591)
The line in bitmap.prg:
aBmpPal = PalBmpRead( ::GetDC(), AllTrim( cBmpFile ) )
Is returning a numeric value instead an array, so you get an error in:
::hBitmap = aBmpPal[ 1 ]
::hPalette = aBmpPal[ 2 ]
If i put:
IF VALTYPE(ABMPPAL) # 'N'
Before those lines, the bitmap, obviously, is no painted. If you use tbitmap from fw libs you don't have any problems, seems like if the bitmap.prg in source\classes is different from the one in the libs.
Regards,
Posted: Fri Mar 10, 2006 7:40 am
by Antonio Linares
Daniel,
Yes, you are right, that function was changed to return an array instead of a number, when we started developing FWH 32 bits.