FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Bug relacionado con las funciones ISXHBCOM() y MSVC()
Posts: 9
Joined: Sun Oct 02, 2011 08:41 PM
Bug relacionado con las funciones ISXHBCOM() y MSVC()
Posted: Tue Nov 18, 2025 11:43 PM

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.

   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

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()
Posted: Wed Nov 19, 2025 03:20 AM

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
Posts: 9
Joined: Sun Oct 02, 2011 08:41 PM
Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()
Posted: Tue Dec 02, 2025 01:15 PM

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().

/*
 * 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/1tDxpAXayx3xFF1FlMriZwRmxdOtezztI?usp=sharing

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()
Posted: Wed Dec 03, 2025 09:54 AM

Que compilador de C usas ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 9
Joined: Sun Oct 02, 2011 08:41 PM
Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()
Posted: Wed Dec 03, 2025 02:34 PM

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

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()
Posted: Wed Dec 03, 2025 05:32 PM

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

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 9
Joined: Sun Oct 02, 2011 08:41 PM
Re: Bug relacionado con las funciones ISXHBCOM() y MSVC()
Posted: Thu Dec 04, 2025 09:14 PM

Sim.

Continue the discussion