harbour / core

Portable, xBase compatible programming language and environment
https://harbour.github.io/
Other
324 stars 207 forks source link

Create a function win_rgb() and remove #define #359

Open JoseQuintas opened 2 months ago

JoseQuintas commented 2 months ago

On hbwin.ch

define WIN_RGB( nR, nG, nB ) ( nR + ( nG 256 ) + ( nB 256 * 256 ) )

This can cause a bug on use

COLOR WIN_RGB(1,1,1) is translated to COLOR ( 1 + ( 1 256) + ( 1 256 * 256 ) ) but compilation uses this as a function, no matter about spaces.

may be better to create a real function. FUNCTION WIN_RGB( nR, nG, nB ) RETURN ( nR + ( nG 256 ) + ( nB 256 * 256 ) )

diegopego commented 2 months ago

Oi quintas!

eu obtive um resultado diferente. será que tem algo a mais na hbwin que provoca o comportamento que você descreveu ou eu que não compreendi?

abraço!

#define WIN_RGB( nR, nG, nB ) ( nR + ( nG * 256 ) + ( nB * 256 * 256 ) )

COLOR WIN_RGB(1,1,1)

hbpp color.prg

COLOR ( 1 + ( 1 * 256 ) + ( 1 * 256 * 256 ) )
JoseQuintas commented 2 months ago

Isso foi diferença causada pelo editor do github, já editei pra colocar espaços nos asteriscos. O problema é o compilador usar como função COLOR ( n ) é o mesmo que Color( n ) para o compilador. Por isso usar o #define acaba atrapalhando.