Dibread/palbmpread failure

Post Reply
User avatar
AlexSchaft
Posts: 172
Joined: Fri Oct 07, 2005 1:29 pm
Location: Edenvale, Gauteng, South Africa

Dibread/palbmpread failure

Post by AlexSchaft »

Hi,

How can I find out what causes palbmpread to not return an array?

Alex
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Alex,

How are you checking that it is not returning an array ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
AlexSchaft
Posts: 172
Joined: Fri Oct 07, 2005 1:29 pm
Location: Edenvale, Gauteng, South Africa

palbmpread failure

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Alex,

If you review PalBmpRead() source code you may see it always returns an array.
regards, saludos

Antonio Linares
www.fivetechsoft.com
DanielPuente
Posts: 108
Joined: Sun Oct 09, 2005 6:12 pm
Location: Mar del Plata - Argentina
Contact:

Post 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,
Daniel Puente
Mar del Plata, Argentina
danielpuente@speedy.com.ar
puenteda@hotmail.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply