Bug relacionado con las funciones ISXHBCOM() y MSVC()

Post Reply
User avatar
jmsilva
Posts: 9
Joined: Sun Oct 02, 2011 8:41 pm

Bug relacionado con las funciones ISXHBCOM() y MSVC()

Post by jmsilva »

Hola Sr. Antonio Linares:
Desde la implementación de la función ISXHBCOM(), perteneciente al archivo imgtxtio.prg nativo de FiveWin, se ha producido un error fatal en todas las rutinas que utilizan ISXHBCOM(), como xbrowse, image, etc.
Aparentemente, el problema está relacionado con Microsoft Visual Code. Aunque lo tengo instalado, no lo utilizo. No se muestra ningún mensaje de error — la aplicación simplemente se cierra.
Para corregir el error, incluí la función en mi proyecto, haciendo que siempre retorne verdadero, y comenté las líneas del IF MSVC(), que son las responsables del fallo.

Code: Select all | Expand

   Function ISXHBCOM() //pertence imgtxtio.prg nativa fivewin
   Static lRet := .T.
  
//if lRet == nil // lRet := ( MSVC() > 0 .and. MSVC() <= 1200 ) // VC98 //endif
Return lRet

Gracias, JMSilva

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

Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()

Post by Antonio Linares »

Estimado JM,

Entiendo que usas Borland, es así ?

Que versión de FWH usas ?

Cuando la app se cierra se genera un fichero .log ?

Gracias por tu ayuda!

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
jmsilva
Posts: 9
Joined: Sun Oct 02, 2011 8:41 pm

Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()

Post by jmsilva »

Estimado Antonio Linares,

Disculpa por la demora. Como mencioné, este es un bug que apareció en mi sistema después de la actualización de 2017.
El bug ocurre en la Function GetStrForImg() de mi sistema, en la línea que llama a FW_ReadImage(). No genera archivo log de error, por eso preparé el ejemplo para análisis.
El bug está, o no, en comentar las líneas del If de la MSVC() function ISXHBCOM().

Code: Select all | Expand

/*
 * Project: errogdi
 * File: errogdi.prg
 * Description:
 * Author:
 * Date: 12-01-2025
 */
#Include "fivewin.ch"
Static nWidth  := 480
static nHeight := 320

function Main()
   Local oDlg, oFont,aImage,cStrImg

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
   DEFINE DIALOG oDlg SIZE 460,640 PIXEL TRUEPIXEL FONT oFont ;
          TITLE "FWH : IMAGE CONVERSION"

   @ 10,10 BTNBMP PROMPT "Select Image" SIZE 100,40 PIXEL 2007 CENTER;
           ACTION   (cStrImg := GetStrForImg(), ;
                     aImage:LoadFromString(cStrImg ), ;
                     aImage:Refresh( .t. ), ;
                     oDlg:Update() )

   @ 6,4 IMAGE aImage SIZE 400, 520 OF oDlg


   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

return nil


Function GetStrForImg() //imagem com melhor qualidade aassim
   Local gcFile,cPath:="C:\fwteam\bitmaps\"
   Local hImage,cStrImg:='',lTransp,nW,nH


   gcFile := cGetFile( "Arquivo de Imagem (bmp,jpg,png)|*.bmp;*.jpg;*.jpeg;*.png|",;
                          "Selecione a imagem", 4,cPath )


   If !Empty(gcFile) .and. File(gcFile)
      //nX := 234 //box - 180 + 30%
      //nY := 208 //box - 160
      lTransp := cFileExt(gcFile) = "png"

  //mod1 top
  *hImage    := FW_ReadImage( nil, gcFile,nil, .F.)  //boa qualidade
  *hImage[1] := ResizeBmp(hImage[1], nX, nY,.T.)

  //mod2 top
  *hImage    := FW_ReadImage( nil, gcFile,nil, .T.)  //muitboa qualidade
  *hImage[1] := ResizeBmp(hImage[1], nX, nY,.T.) //f=transparente,t=preto

  //Exemplo 3 - Pior de todos
  *hImage    := FW_ReadImage( nil, gcFile, {nX,nY}, .F. )

  //Nos testes esta configuração ficou melhor
  //erro é aqui Antonio Linares
  hImage    := FW_ReadImage(, gcFile,nil, .t.)  //boa qualidade
  if !Empty(hImage ) .and. !Empty( hImage[ 1 ] )
     nW := Max(nWidth,nHeight)
     nH := Min(nWidth,nHeight)
     If hImage[3] < hImage[4]
        nW := Min(nWidth,nHeight)
        nH := Max(nWidth,nHeight)
     Endif

     If hImage[3] > 500
        hImage[1] := ResizeBmp(hImage[1], nW, nH, lTransp )
     Endif
     cStrImg := BmpToStr(hImage[1])   //iguais
  Else
     MsgStop("Arquivo selecionado está inválido !")
  Endif
  //cStrImg := FW_ImageToBLOB(hImage[1])  //iguais
   Endif

Return cStrImg

**==============================================================================
Function ISXHBCOM() //pertence imgtxtio.prg nativa fivewin
   Static lRet:= .t.

//   if lRet == nil
//      lRet  := ( MSVC() > 0 .and. MSVC() <= 1200 ) // VC98
//   endif

Return lRet

samples: https://drive.google.com/drive/folders/ ... sp=sharing

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

Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()

Post by Antonio Linares »

Que compilador de C usas ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
jmsilva
Posts: 9
Joined: Sun Oct 02, 2011 8:41 pm

Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()

Post by jmsilva »

Windows: Windows 8 6.2.9200
xHB: xHarbour 1.3.1 Intl. (Simplex) (Build 20250119)
FWH: FWH 25.06
BCC: Borland/Embarcadero C++ 7.7 (32-bit)
Build: Jan 19 2025 18:33:35
PCode Version: 10
BCC ver: 7.70

Gracias, JMSILVA

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

Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()

Post by Antonio Linares »

De momento, asi como indicas, lo tienes solucionado, si ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
jmsilva
Posts: 9
Joined: Sun Oct 02, 2011 8:41 pm

Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()

Post by jmsilva »

Sim.

Post Reply