Page 1 of 1

Error extraño al cargar una imagen a 64 bits

PostPosted: Tue Jan 05, 2021 3:15 pm
by José Vicente Beltrán
Hola a todos, estoy compilando a 64 bits una aplicación 'de toda la vida' que va muy bien a 32 bits y al cargar una imagen, me genera el siguiente error en ejecución, que no se como tratar:
Code: Select all  Expand view
Error description: Error BASE/42  Scope violation (protected): TXIMAGE:LOADIMAGE
 

El codigo donde se genera el error es el siguiente:
Code: Select all  Expand view
function mirasifoto(nNumero)
local aFotos := { ".BMP", ".DIB", ".GIF", ".JPG", ".PCX", ".RLE", ".TGA" }
local i, nFor
default oImage:= NIL

    aVariasFotos:= {}
    lFoto := .f.

    if !empty( xRutaFoto )
        for i = 1 to LEN(aFotos)
            for nFor = 1 to 9                       // maximo numero de fotos por entrada
                xFoto :=xRutaFoto+"\"+ALLTRIM(STR(nNumero, 10))+"_"+STR(nFor, 1)+aFotos[i]

                if FILE( xFoto )
                    lFoto := .t.
                    AADD( aVariasFotos, xFoto )
                endif
            next nFor
        next

        if !lFoto
            AADD( aVariasFotos, xRutaFoto+"
\SinFoto.jpg" )
            lFoto:= .f.
        endif

    else
        AADD( aVariasFotos, xRutaFoto+"
\SinFoto.jpg")
        lFoto:= .f.
    endif

    xFoto := aVariasFotos[1]
    #ifdef __64__   //isexe64()
        iif( oImage <> NIL, oImage:LoadImage(xFoto), )
    #else
        iif( oImage <> NIL, oImage:LoadBmp(xFoto),)
    #endif

return nil

He de decir que la aplicación funciona correctamente hasta que llega al código mencionado.
La versión de FW64 es de mayo 2020.
Si alguien puede darme una idea de como solucionar el problema.... Infinitas gracias :shock:

Re: Error extraño al cargar una imagen a 64 bits

PostPosted: Tue Jan 05, 2021 3:28 pm
by cnavarro
Has probado a utilizar el metodo SetSource() ? ( en ambas versiones 32/64 )

Code: Select all  Expand view

    oImage:SetSource( <uSource> )
 

Re: Error extraño al cargar una imagen a 64 bits

PostPosted: Tue Jan 05, 2021 3:46 pm
by José Vicente Beltrán
Muchas gracias Cristobal, ahora funciona perfecto. :shock:

Re: Error extraño al cargar una imagen a 64 bits

PostPosted: Thu Jan 07, 2021 10:41 am
by José Vicente Beltrán
Pues ahora tengo otro problema al imprimir un report con logo
el codigo que uso es:
Code: Select all  Expand view
if File(cLogo)
        aI := oPrn:Cmtr2Pix( nMargenIZ, nMargenSU )
        aD := oPrn:Cmtr2Pix(nAncho, nAlto)
        #ifdef __64__   //isexe64()
           oImage := TXImage():New( aI[2], aI[1], aD[1], aD[2], {|| cLogo}, oPrn, .F., .F. )
           oImage:lBmpTransparent := .f.
        #else
          oImage:= TImage():Define( ,cLogo )                             // se crea el objeto imagen
          oPrn:SayImage(aI[2], aI[1], oImage, aD[1], aD[2])              // se imprime el objeto imagen
        #endif
        oImage:End()                                                   // se destruye el objeto imagen
endif 

Pero no funciona a 64b, presenta un mensaje de alerta 'error code:0 loading 0' y despues de insistir un poco se presenta el reporte pero NO HAY logo.
Socorro Cristobal! :oops:

Re: Error extraño al cargar una imagen a 64 bits

PostPosted: Thu Jan 07, 2021 11:01 am
by cnavarro
Jose Vicente, tu objetivo es simplemente incluir una imagen dentro de tu informe, es así ?
Suponiendo que es eso, dime lo siguiente:
1.- El diseño del reporte lo estás haciendo con la clase TPRINTER o con la TREPORT ?

Re: Error extraño al cargar una imagen a 64 bits

PostPosted: Thu Jan 07, 2021 11:08 am
by José Vicente Beltrán
Gracias por contestar tan rapido, Cristobal.
En este caso es la clase TPrinter pero voy a necesitarlo igual para TReport :?

Re: Error extraño al cargar una imagen a 64 bits

PostPosted: Thu Jan 07, 2021 11:10 am
by cnavarro
Jose Vicente, prueba utilizando los metodos de TPrinter
Code: Select all  Expand view

PrintImage( nRow, nCol, uImage, nWidth, nHeight, lStretch, nAlpha, lTransp, lGray )

o

SayBitmap(  nRow, nCol, cBitmap, nWidth, nHeight, nRaster, cUnits )
 


No necesitas generar un objeto T(X)Image, pásale directamente el fichero de imagen

Re: Error extraño al cargar una imagen a 64 bits

PostPosted: Thu Jan 07, 2021 1:07 pm
by José Vicente Beltrán
Pues como era de esperar, tu sugerencia funciona perfectamente y es mas simple de lo que yo estaba intentando hacer :shock:
Muchas gracias otra vez Cristobal.