<![CDATA[FiveTech Software tech support forums]]> https://forums.fivetechsupport.com Smartfeed extension for phpBB <![CDATA[FiveWin for Harbour/xHarbour :: Some function Fileio not found in harbour :: Author Silvio.Falconi]]> 2025-02-27T09:48:04-07:00 2025-02-27T09:48:04-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45464&p=278012#p278012
Error: Unresolved external '_HB_FUN_FREADLINE' referenced from C:\WORK\ERRORI\IP_COMPUTER\OBJ\TEST.OBJ
Error: Unresolved external '_HB_FUN_FDELETE' referenced from C:\WORK\ERRORI\IP_COMPUTER\OBJ\TEST.OBJ


IF FILE( "temp_output.txt" )
nHandle := FOpen( "temp_output.txt", FO_READ )
IF nHandle >= 0
DO WHILE !HB_FEOF( nHandle )
cLine := FReadLine( nHandle )
cOutput += cLine + CRLF
ENDDO
FClose( nHandle )
ENDIF

FDelete( "temp_output.txt" )
ENDIF]]>

Error: Unresolved external '_HB_FUN_FREADLINE' referenced from C:\WORK\ERRORI\IP_COMPUTER\OBJ\TEST.OBJ
Error: Unresolved external '_HB_FUN_FDELETE' referenced from C:\WORK\ERRORI\IP_COMPUTER\OBJ\TEST.OBJ


IF FILE( "temp_output.txt" )
nHandle := FOpen( "temp_output.txt", FO_READ )
IF nHandle >= 0
DO WHILE !HB_FEOF( nHandle )
cLine := FReadLine( nHandle )
cOutput += cLine + CRLF
ENDDO
FClose( nHandle )
ENDIF

FDelete( "temp_output.txt" )
ENDIF]]>
<![CDATA[FiveWin for Harbour/xHarbour :: IA with LLM https://console.groq.com :: Author csincuir]]> 2025-02-27T10:56:12-07:00 2025-02-27T10:56:12-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45466&p=278017#p278017 For those who want to work with this other LLM https://console.groq.com/login, which provides APIs to work for free, I copy the class I made following the base of the TGemini class of FWH25.01 made by Antonio:

Code: Select all | Expand

//----------------------------------------------------------------------------//
// Clase: TGroq
// Desarrollado por: Carlos Sincuir
// Version FWH: 25.01
// Obtenga su API key desde https://console.groq.com/login
//----------------------------------------------------------------------------//
#include "FiveWin.ch"
#include "hbcurl.ch"

function Main()

   local oChat := TGroq():New("tuApiKey")

   oChat:Send( "Hola, quien eres ?" )
   ? oChat:GetValue() 

   oChat:End()

return nil   

//----------------------------------------------------------------------------//

CLASS TGroq

   DATA   cKey   INIT ""
   DATA   cModel INIT "llama3-70b-8192" 
   DATA   cResponse
   DATA   cUrl   INIT "" 
   DATA   cUploadUrl INIT "" 
   DATA   hCurl
   DATA   nError INIT 0
   DATA   nHttpCode INIT 0
   DATA   nTemperature INIT 0

   METHOD New( cKey, cModel )
   METHOD Send( cPrompt )
   METHOD End()
   METHOD GetValue()

ENDCLASS

//----------------------------------------------------------------------------//

METHOD New( cKey, cModel ) CLASS TGroq

   if Empty( cKey )
      ::cKey = GetEnv( "GROQ_API_KEY" )
   else
      ::cKey = cKey
   endif

   if ! Empty( cModel )
      ::cModel = cModel
   endif

   if Val( SubStr( Curl_Version_Info()[ 1 ], 1, RAt( ".", Curl_Version_Info()[ 1 ] ) - 1 ) ) - 8.10 > 0.2
      MsgAlert( "Please use an updated curl DLL" )
   endif    
   
   ::cUrl = "https://api.groq.com/openai/v1/chat/completions"
   ::hCurl = curl_easy_init()

return Self

//----------------------------------------------------------------------------//

METHOD End() CLASS TGroq

   curl_easy_cleanup( ::hCurl )
   ::hCurl = nil

return nil

//----------------------------------------------------------------------------//

METHOD GetValue() CLASS TGroq

   local uValue, hResponse

   if ! Empty( ::cResponse )
      uValue = hb_jsonDecode( ::cResponse, @hResponse )
   endif

   if hb_isHash( hResponse )
      TRY
         uValue = hResponse[ "choices" ][ 1 ][ "message" ][ "content" ]
      CATCH
         TRY
            uValue = hResponse[ "error" ][ "message" ]
         CATCH
            uValue = "Error, no response"
         END
      END
   endif

return uValue

//----------------------------------------------------------------------------//
METHOD Send( cPrompt ) CLASS TGroq

   local aHeaders, cJson, hRequest, hMessages

   curl_easy_setopt( ::hCurl, HB_CURLOPT_POST, .T. )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_URL, ::cUrl )

   aHeaders := { "Content-Type: application/json",;
                 "Authorization: Bearer " + ::cKey }  // Tu API key de Groq

   curl_easy_setopt( ::hCurl, HB_CURLOPT_HTTPHEADER, aHeaders )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_USERNAME, "" )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_DL_BUFF_SETUP )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )

   // Estructura del JSON para Groq
   hMessages := { { "role" => "user", "content" => cPrompt } }
   hRequest := { "model" => ::cModel,;  
                 "temperature" => ::nTemperature,;
                 "messages" => hMessages }

   cJson := hb_jsonEncode( hRequest )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_POSTFIELDS, cJson )
   ::nError := curl_easy_perform( ::hCurl )
   curl_easy_getinfo( ::hCurl, HB_CURLINFO_RESPONSE_CODE, @::nHttpCode )

   if ::nError == HB_CURLE_OK
      ::cResponse := curl_easy_dl_buff_get( ::hCurl )
   else
      ::cResponse := "Error code " + Str( ::nError )
   endif

return ::cResponse

//----------------------------------------------------------------------------//
At the moment this LLM does not allow sending documents, but at least it is an option to test AI without having to pay for the API Keys

I hope it helps you.

Best regards.

Carlos Sincuir]]>
For those who want to work with this other LLM https://console.groq.com/login, which provides APIs to work for free, I copy the class I made following the base of the TGemini class of FWH25.01 made by Antonio:

Code: Select all | Expand

//----------------------------------------------------------------------------//
// Clase: TGroq
// Desarrollado por: Carlos Sincuir
// Version FWH: 25.01
// Obtenga su API key desde https://console.groq.com/login
//----------------------------------------------------------------------------//
#include "FiveWin.ch"
#include "hbcurl.ch"

function Main()

   local oChat := TGroq():New("tuApiKey")

   oChat:Send( "Hola, quien eres ?" )
   ? oChat:GetValue() 

   oChat:End()

return nil   

//----------------------------------------------------------------------------//

CLASS TGroq

   DATA   cKey   INIT ""
   DATA   cModel INIT "llama3-70b-8192" 
   DATA   cResponse
   DATA   cUrl   INIT "" 
   DATA   cUploadUrl INIT "" 
   DATA   hCurl
   DATA   nError INIT 0
   DATA   nHttpCode INIT 0
   DATA   nTemperature INIT 0

   METHOD New( cKey, cModel )
   METHOD Send( cPrompt )
   METHOD End()
   METHOD GetValue()

ENDCLASS

//----------------------------------------------------------------------------//

METHOD New( cKey, cModel ) CLASS TGroq

   if Empty( cKey )
      ::cKey = GetEnv( "GROQ_API_KEY" )
   else
      ::cKey = cKey
   endif

   if ! Empty( cModel )
      ::cModel = cModel
   endif

   if Val( SubStr( Curl_Version_Info()[ 1 ], 1, RAt( ".", Curl_Version_Info()[ 1 ] ) - 1 ) ) - 8.10 > 0.2
      MsgAlert( "Please use an updated curl DLL" )
   endif    
   
   ::cUrl = "https://api.groq.com/openai/v1/chat/completions"
   ::hCurl = curl_easy_init()

return Self

//----------------------------------------------------------------------------//

METHOD End() CLASS TGroq

   curl_easy_cleanup( ::hCurl )
   ::hCurl = nil

return nil

//----------------------------------------------------------------------------//

METHOD GetValue() CLASS TGroq

   local uValue, hResponse

   if ! Empty( ::cResponse )
      uValue = hb_jsonDecode( ::cResponse, @hResponse )
   endif

   if hb_isHash( hResponse )
      TRY
         uValue = hResponse[ "choices" ][ 1 ][ "message" ][ "content" ]
      CATCH
         TRY
            uValue = hResponse[ "error" ][ "message" ]
         CATCH
            uValue = "Error, no response"
         END
      END
   endif

return uValue

//----------------------------------------------------------------------------//
METHOD Send( cPrompt ) CLASS TGroq

   local aHeaders, cJson, hRequest, hMessages

   curl_easy_setopt( ::hCurl, HB_CURLOPT_POST, .T. )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_URL, ::cUrl )

   aHeaders := { "Content-Type: application/json",;
                 "Authorization: Bearer " + ::cKey }  // Tu API key de Groq

   curl_easy_setopt( ::hCurl, HB_CURLOPT_HTTPHEADER, aHeaders )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_USERNAME, "" )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_DL_BUFF_SETUP )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )

   // Estructura del JSON para Groq
   hMessages := { { "role" => "user", "content" => cPrompt } }
   hRequest := { "model" => ::cModel,;  
                 "temperature" => ::nTemperature,;
                 "messages" => hMessages }

   cJson := hb_jsonEncode( hRequest )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_POSTFIELDS, cJson )
   ::nError := curl_easy_perform( ::hCurl )
   curl_easy_getinfo( ::hCurl, HB_CURLINFO_RESPONSE_CODE, @::nHttpCode )

   if ::nError == HB_CURLE_OK
      ::cResponse := curl_easy_dl_buff_get( ::hCurl )
   else
      ::cResponse := "Error code " + Str( ::nError )
   endif

return ::cResponse

//----------------------------------------------------------------------------//
At the moment this LLM does not allow sending documents, but at least it is an option to test AI without having to pay for the API Keys

I hope it helps you.

Best regards.

Carlos Sincuir]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: IA with LLM https://console.groq.com :: Reply by Antonio Linares]]> 2025-02-27T21:34:18-07:00 2025-02-27T21:34:18-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45466&p=278019#p278019
very good! :)]]>

very good! :)]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Silvio.Falconi]]> 2025-02-28T02:22:24-07:00 2025-02-28T02:22:24-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278021#p278021 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Antonio Linares]]> 2025-02-28T03:20:01-07:00 2025-02-28T03:20:01-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278022#p278022
We have to respect the standard behavior of the Windows controls.

What you are asking for can be implemented programmatically respecting the standard combobox behavior.]]>

We have to respect the standard behavior of the Windows controls.

What you are asking for can be implemented programmatically respecting the standard combobox behavior.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Antonio Linares]]> 2025-02-28T03:28:08-07:00 2025-02-28T03:28:08-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278023#p278023
local aNewItems := { "Starting With", "Containing" }
local aItems := oComboBox:aItems

AEval( aNewItems, { | cItem | AAdd( aItems, cItem ) } )
oComboBox:SetItems( aItems )

oComboBox:bChange = { | oCombo, cItem | ... }

You can apply thins fuctionality in a function]]>

local aNewItems := { "Starting With", "Containing" }
local aItems := oComboBox:aItems

AEval( aNewItems, { | cItem | AAdd( aItems, cItem ) } )
oComboBox:SetItems( aItems )

oComboBox:bChange = { | oCombo, cItem | ... }

You can apply thins fuctionality in a function]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Silvio.Falconi]]> 2025-02-28T04:10:54-07:00 2025-02-28T04:10:54-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278024#p278024
Antonio Linares wrote: Fri Feb 28, 2025 10:20 am Dear Silvio,

We have to respect the standard behavior of the Windows controls.

What you are asking for can be implemented programmatically respecting the standard combobox behavior.
No Antonio,
this must be set in the combobox used in XBROWSE

Code: Select all | Expand

  @ 10, 550 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder;
        SIZE 150,400 PIXEL OF oDlg HEIGHTGET 18 STYLE CBS_DROPDOWN
]]>
Antonio Linares wrote: Fri Feb 28, 2025 10:20 am Dear Silvio,

We have to respect the standard behavior of the Windows controls.

What you are asking for can be implemented programmatically respecting the standard combobox behavior.
No Antonio,
this must be set in the combobox used in XBROWSE

Code: Select all | Expand

  @ 10, 550 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder;
        SIZE 150,400 PIXEL OF oDlg HEIGHTGET 18 STYLE CBS_DROPDOWN
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Silvio.Falconi]]> 2025-02-28T04:13:30-07:00 2025-02-28T04:21:21-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278025#p278025
Antonio Linares wrote: Fri Feb 28, 2025 10:28 am In example:

local aNewItems := { "Starting With", "Containing" }
local aItems := oComboBox:aItems

AEval( aNewItems, { | cItem | AAdd( aItems, cItem ) } )
oComboBox:SetItems( aItems )

oComboBox:bChange = { | oCombo, cItem | ... }

You can apply thins fuctionality in a function

AS I told you in the previous message

this must be set in the combobox used in XBROWSE

Code: Select all | Expand

  @ 10, 550 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder;
        SIZE 150,400 PIXEL OF oDlg HEIGHTGET 18 STYLE CBS_DROPDOWN
Image


lines 16773- 1676 of Xbrowse Class



In your opinion, if I asked to insert an array into a combobox normal, I wouldn't have known how to do it?

I want to add it to the combobox used with xbrowse, on oBrw:oSortCbx VAR oBrw:cSortOrder

Perhaps you not understood also]]>
Antonio Linares wrote: Fri Feb 28, 2025 10:28 am In example:

local aNewItems := { "Starting With", "Containing" }
local aItems := oComboBox:aItems

AEval( aNewItems, { | cItem | AAdd( aItems, cItem ) } )
oComboBox:SetItems( aItems )

oComboBox:bChange = { | oCombo, cItem | ... }

You can apply thins fuctionality in a function

AS I told you in the previous message

this must be set in the combobox used in XBROWSE

Code: Select all | Expand

  @ 10, 550 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder;
        SIZE 150,400 PIXEL OF oDlg HEIGHTGET 18 STYLE CBS_DROPDOWN
Image


lines 16773- 1676 of Xbrowse Class



In your opinion, if I asked to insert an array into a combobox normal, I wouldn't have known how to do it?

I want to add it to the combobox used with xbrowse, on oBrw:oSortCbx VAR oBrw:cSortOrder

Perhaps you not understood also]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Antonio Linares]]> 2025-02-28T04:18:34-07:00 2025-02-28T04:18:34-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278026#p278026
You are right, I did not properly understand you :)]]>

You are right, I did not properly understand you :)]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Silvio.Falconi]]> 2025-02-28T04:23:07-07:00 2025-02-28T04:23:07-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278027#p278027
Antonio Linares wrote: Fri Feb 28, 2025 11:18 am Dear Silvio,

You are right, I did not properly understand you :)
there is an Nages's sample xbsortcb.prg demonstrates using oBrw:oSortCbx]]>
Antonio Linares wrote: Fri Feb 28, 2025 11:18 am Dear Silvio,

You are right, I did not properly understand you :)
there is an Nages's sample xbsortcb.prg demonstrates using oBrw:oSortCbx]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Silvio.Falconi]]> 2025-02-28T04:36:21-07:00 2025-02-28T04:36:21-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278028#p278028
I am forced to use two comboboxes or give up this change because nobody cares, when someone asks then maybe you will change this situation]]>

I am forced to use two comboboxes or give up this change because nobody cares, when someone asks then maybe you will change this situation]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Silvio.Falconi]]> 2025-02-28T04:40:13-07:00 2025-02-28T04:40:13-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278029#p278029

Code: Select all | Expand



function Usage1()

   local oDlg, oBrw
local cSeek:=Space(100)
   local oGet


   USE CUSTOMER NEW VIA "DBFCDX"
   SET ORDER TO TAG FIRST
   GO TOP

   DEFINE DIALOG oDlg SIZE 800,400 PIXEL TRUEPIXEL RESIZABLE
 
 @ 10, 165 GET oGet VAR cSeek SIZE 200,19 PIXEL OF oDlg PICTURE "@!"
 
 
   @ 60,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
      DATASOURCE ALIAS() ;
      COLUMNS "FIRST","LAST","STREET", "CITY" ;
      HEADERS "NAME","SURNAME","ADDRESS", "TOWN" ;
      AUTOSORT ;
      NOBORDER LINES

   WITH OBJECT oBrw
      :nMarqueeStyle := 2
      :nColorBox    := CLR_HRED
           :lHScroll  := .f.
            :lIncrFilter      := .t.
            :bOnSort          := { |b,oCol| oBrw:Seek( "" ), ;
                                   oBrw:cFilterFld := oCol:cExpr, ;
                                   oBrw:SetFocus() }
            :oSeek := oGet
            :CreateFromCode()
     
   END

   @ 10,20 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder SIZE 100,400 PIXEL OF oDlg



   ACTIVATE DIALOG oDlg CENTERED

   CLOSE DATA

return nil
on @ 10,20 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder SIZE 100,400 PIXEL OF oDlg
I wish add ITEMS { "Starting With", "Containing" }

:oSeek := oGet

the procedure in addition to searching for a text in the xxxx field must also take into account one of the selections "starting" or "containing"]]>

Code: Select all | Expand



function Usage1()

   local oDlg, oBrw
local cSeek:=Space(100)
   local oGet


   USE CUSTOMER NEW VIA "DBFCDX"
   SET ORDER TO TAG FIRST
   GO TOP

   DEFINE DIALOG oDlg SIZE 800,400 PIXEL TRUEPIXEL RESIZABLE
 
 @ 10, 165 GET oGet VAR cSeek SIZE 200,19 PIXEL OF oDlg PICTURE "@!"
 
 
   @ 60,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
      DATASOURCE ALIAS() ;
      COLUMNS "FIRST","LAST","STREET", "CITY" ;
      HEADERS "NAME","SURNAME","ADDRESS", "TOWN" ;
      AUTOSORT ;
      NOBORDER LINES

   WITH OBJECT oBrw
      :nMarqueeStyle := 2
      :nColorBox    := CLR_HRED
           :lHScroll  := .f.
            :lIncrFilter      := .t.
            :bOnSort          := { |b,oCol| oBrw:Seek( "" ), ;
                                   oBrw:cFilterFld := oCol:cExpr, ;
                                   oBrw:SetFocus() }
            :oSeek := oGet
            :CreateFromCode()
     
   END

   @ 10,20 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder SIZE 100,400 PIXEL OF oDlg



   ACTIVATE DIALOG oDlg CENTERED

   CLOSE DATA

return nil
on @ 10,20 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder SIZE 100,400 PIXEL OF oDlg
I wish add ITEMS { "Starting With", "Containing" }

:oSeek := oGet

the procedure in addition to searching for a text in the xxxx field must also take into account one of the selections "starting" or "containing"]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Silvio.Falconi]]> 2025-02-28T04:57:43-07:00 2025-02-28T04:57:43-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278030#p278030

Image

Code: Select all | Expand

#include "fivewin.ch"

 REQUEST DBFCDX

function Main()

   local aData

   FERASE( "CUSTOMER.CDX" )
   USE CUSTOMER NEW EXCLUSIVE VIA "DBFCDX"
   aData := FW_DbfToArray( "FIRST,LAST,STREET", , { || RECNO() < 11 } )
   GO TOP
   FW_CdxCreate()
   CLOSE CUSTOMER

   Usage1()


   return nil

function USAGE1()

   local oDlg, oBrw
   local cSeek:=Space(100)
   local oGet

   USE CUSTOMER NEW VIA "DBFCDX"
   SET ORDER TO TAG FIRST
   GO TOP

   DEFINE DIALOG oDlg SIZE 800,400 PIXEL TRUEPIXEL RESIZABLE

  @ 10, 5 GET oGet VAR cSeek SIZE 200,19 PIXEL OF oDlg PICTURE "@!"


   @ 60,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
      DATASOURCE "CUST" ;
      COLUMNS "FIRST","LAST","STREET", "CITY" ;
      HEADERS "NAME","SURNAME","ADDRESS", "TOWN" ;
      AUTOSORT ;
      NOBORDER LINES

   WITH OBJECT oBrw
      :nMarqueeStyle := 2
      :nColorBox    := CLR_HRED
           :lHScroll  := .f.
            :lIncrFilter      := .t.
            :bOnSort          := { |b,oCol| oBrw:Seek( "" ), ;
                                   oBrw:cFilterFld := oCol:cExpr, ;
                                   oBrw:SetFocus() }
            :oSeek := oGet
            :CreateFromCode()

   END

   @ 10,300 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder SIZE 100,400 PIXEL OF oDlg



   ACTIVATE DIALOG oDlg CENTERED

   CLOSE DATA

return ni
]]>


Image

Code: Select all | Expand

#include "fivewin.ch"

 REQUEST DBFCDX

function Main()

   local aData

   FERASE( "CUSTOMER.CDX" )
   USE CUSTOMER NEW EXCLUSIVE VIA "DBFCDX"
   aData := FW_DbfToArray( "FIRST,LAST,STREET", , { || RECNO() < 11 } )
   GO TOP
   FW_CdxCreate()
   CLOSE CUSTOMER

   Usage1()


   return nil

function USAGE1()

   local oDlg, oBrw
   local cSeek:=Space(100)
   local oGet

   USE CUSTOMER NEW VIA "DBFCDX"
   SET ORDER TO TAG FIRST
   GO TOP

   DEFINE DIALOG oDlg SIZE 800,400 PIXEL TRUEPIXEL RESIZABLE

  @ 10, 5 GET oGet VAR cSeek SIZE 200,19 PIXEL OF oDlg PICTURE "@!"


   @ 60,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
      DATASOURCE "CUST" ;
      COLUMNS "FIRST","LAST","STREET", "CITY" ;
      HEADERS "NAME","SURNAME","ADDRESS", "TOWN" ;
      AUTOSORT ;
      NOBORDER LINES

   WITH OBJECT oBrw
      :nMarqueeStyle := 2
      :nColorBox    := CLR_HRED
           :lHScroll  := .f.
            :lIncrFilter      := .t.
            :bOnSort          := { |b,oCol| oBrw:Seek( "" ), ;
                                   oBrw:cFilterFld := oCol:cExpr, ;
                                   oBrw:SetFocus() }
            :oSeek := oGet
            :CreateFromCode()

   END

   @ 10,300 COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder SIZE 100,400 PIXEL OF oDlg



   ACTIVATE DIALOG oDlg CENTERED

   CLOSE DATA

return ni
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Antonio Linares]]> 2025-02-28T05:24:53-07:00 2025-02-28T05:24:53-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278031#p278031 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Request Xbrowse Feature :: Reply by Silvio.Falconi]]> 2025-02-28T05:42:50-07:00 2025-02-28T05:42:50-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45333&p=278032#p278032
Antonio Linares wrote: Fri Feb 28, 2025 12:24 pm FWH\samples\xbincflt.prg
yes but I should use a get control and the oBrw:csortcbx combobox for the search, and then another get control and another combobox for the lseekwild search....

I wanted everything in a single combobox here's what I asked for]]>
Antonio Linares wrote: Fri Feb 28, 2025 12:24 pm FWH\samples\xbincflt.prg
yes but I should use a get control and the oBrw:csortcbx combobox for the search, and then another get control and another combobox for the lseekwild search....

I wanted everything in a single combobox here's what I asked for]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: On every desktop, a web server at your fingertips :: Reply by Otto]]> 2025-02-27T01:51:26-07:00 2025-02-27T01:51:26-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45262&p=278007#p278007

Brushtooth presents itself as an innovative solution for those who value privacy and data security. The idea of a personal cloud that is individual and protected resonates with the growing importance of data protection and digital sovereignty.

The benefits of Brushtooth at a glance:

🦷 Your Private Cloud – as personal as your toothbrush!

A cloud that belongs only to you – no shared resources, no third-party servers.

100% private – Only you have access!
Your data stays with you. No third party has access, neither companies nor unauthorized individuals.

Remote access like a remote control – no external cloud
Access your data from anywhere without relying on external cloud services.

Your own data & apps – always available, just for you!
Whether documents, photos, or apps – everything is secure and accessible to you at any time.

Why Brushtooth?
The toothbrush analogy is fitting: Just as you wouldn’t share your toothbrush, you shouldn’t have to share your data with others.

And just like Bluetooth enables seamless connections, Brushtooth provides a secure and effortless way to access your data. Our solution is completely independent of major cloud providers – no subscriptions, no open ports, no compromises on security.

Get started now with your own cloud!]]>


Brushtooth presents itself as an innovative solution for those who value privacy and data security. The idea of a personal cloud that is individual and protected resonates with the growing importance of data protection and digital sovereignty.

The benefits of Brushtooth at a glance:

🦷 Your Private Cloud – as personal as your toothbrush!

A cloud that belongs only to you – no shared resources, no third-party servers.

100% private – Only you have access!
Your data stays with you. No third party has access, neither companies nor unauthorized individuals.

Remote access like a remote control – no external cloud
Access your data from anywhere without relying on external cloud services.

Your own data & apps – always available, just for you!
Whether documents, photos, or apps – everything is secure and accessible to you at any time.

Why Brushtooth?
The toothbrush analogy is fitting: Just as you wouldn’t share your toothbrush, you shouldn’t have to share your data with others.

And just like Bluetooth enables seamless connections, Brushtooth provides a secure and effortless way to access your data. Our solution is completely independent of major cloud providers – no subscriptions, no open ports, no compromises on security.

Get started now with your own cloud!]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: On every desktop, a web server at your fingertips :: Reply by TimStone]]> 2025-02-28T10:31:22-07:00 2025-02-28T10:31:22-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45262&p=278037#p278037
Maybe you could point to an explanation ( if it is already on this forum ), or provide details other than just the advertisement you are producing.]]>

Maybe you could point to an explanation ( if it is already on this forum ), or provide details other than just the advertisement you are producing.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: On every desktop, a web server at your fingertips :: Reply by Otto]]> 2025-02-28T10:47:35-07:00 2025-02-28T10:47:35-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45262&p=278038#p278038 This is a marketing text as written for our new project.
I believe that, in principle, everyone needs their own personal web server and RDP on their PC.

Although it is not difficult to install and achieve this with Cloudflare, there are some pitfalls. It is not entirely straightforward.
However, the possibilities to organize work more easily are numerous.
Best regards,
Otto]]>
This is a marketing text as written for our new project.
I believe that, in principle, everyone needs their own personal web server and RDP on their PC.

Although it is not difficult to install and achieve this with Cloudflare, there are some pitfalls. It is not entirely straightforward.
However, the possibilities to organize work more easily are numerous.
Best regards,
Otto]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Antonio... FiveTouch posts are gone? :: Reply by MMK]]> 2025-03-01T04:27:34-07:00 2025-03-01T04:27:34-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45330&p=278061#p278061 Work with them is simple and the universality allows to work with any dbf files without creation of the additional interface.
......
index on &mykey to tsmy_idx for !deleted() CUSTOM ADDITIVE
set order to tag (MOldBag)
......
myblock:=&('{||iif('+bloo+alltrim(znak)+'"'+alltrim(wot)+'",ORDKEYADD("TSMY_IDX","tsmy_idx.cdx",'+mykey+'),)}')
....
dbeval(myblock)
SET ORDER TO TAG tsmy_idx
go top]]>
Work with them is simple and the universality allows to work with any dbf files without creation of the additional interface.
......
index on &mykey to tsmy_idx for !deleted() CUSTOM ADDITIVE
set order to tag (MOldBag)
......
myblock:=&('{||iif('+bloo+alltrim(znak)+'"'+alltrim(wot)+'",ORDKEYADD("TSMY_IDX","tsmy_idx.cdx",'+mykey+'),)}')
....
dbeval(myblock)
SET ORDER TO TAG tsmy_idx
go top]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Search someone help me :: Reply by Silvio.Falconi]]> 2025-02-28T07:43:11-07:00 2025-02-28T07:43:11-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45416&p=278033#p278033
Image


although there is still some flickering when xbrowse goes up or down]]>

Image


although there is still some flickering when xbrowse goes up or down]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Search someone help me :: Reply by Antonio Linares]]> 2025-02-28T08:46:59-07:00 2025-02-28T08:46:59-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45416&p=278034#p278034 ]]> ]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: Search someone help me :: Reply by Silvio.Falconi]]> 2025-03-01T12:17:04-07:00 2025-03-01T12:17:04-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45416&p=278088#p278088
"Antonio Linares" post_id=278034 time=1740757619 user_id=2]
It looks great, very professional :)

Yes ,
we have managed to make the filter system work, even if we still complain about a flickering when xbrowse changes the size, it should do it without creating flash in the dialog because it is ugly to see. obviously this is a general test, I have to try it with the school's warehouse items archive where there are many types of filters to be made]]>
"Antonio Linares" post_id=278034 time=1740757619 user_id=2]
It looks great, very professional :)

Yes ,
we have managed to make the filter system work, even if we still complain about a flickering when xbrowse changes the size, it should do it without creating flash in the dialog because it is ugly to see. obviously this is a general test, I have to try it with the school's warehouse items archive where there are many types of filters to be made]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Text scroll and time graph :: Reply by JoséQuintas]]> 2025-03-02T15:17:57-07:00 2025-03-02T15:17:57-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45400&p=278097#p278097 Image

Code: Select all | Expand

#include "fivewin.ch"

PROCEDURE ze_fwTextMsg

   LOCAL oDlgMsg, nCont, bOldError

   hb_ThreadStart( { || oDlgMsg := DlgTextMsgClass():New(), oDlgMsg:Execute() } )

   bOldError := ErrorBlock()
   ErrorBlock( { | e |  oDlgMsg:lCanClose := .T., oDlgMsg:End(), iif( bOldError == Nil, Nil, Eval( bOldError, e ) ) } )

   Inkey(2)
   FOR nCont = 1 TO 50
      oDlgMsg:ShowText( "Test " + Ltrim( Str( nCont ) ) )
      oDlgMsg:nGAtual += 2
      oDlgMsg:ShowMeter( oDlgMsg:nGAtual )
      Inkey(0.5)
   NEXT
   ? oDlgMsg / 3 // force error
   oDlgMsg:lCanClose := .T.
   oDlgMsg:End()

   RETURN

CREATE CLASS DlgTextMsgClass

   VAR xDlg
   VAR oBrowse
   VAR oGet
   VAR oSay1
   VAR oSay2
   VAR oMeter
   VAR aText      INIT { "." }
   VAR cText
   VAR cText1     INIT ""
   VAR cText2     INIT ""
   VAR nMaxRow    INIT 10
   VAR nStyle     INIT 2
   VAR lCanClose  INIT .F.
   VAR lGraph     INIT .T.
   VAR nGAtual    INIT 0
   VAR nGTotal    INIT 100
   VAR nGSecStart INIT 0
   VAR nGSecNow   INIT 0

   METHOD Execute()
   METHOD ShowText( cText )
   METHOD ShowMeter( nValue )
   METHOD End() INLINE ::xDlg:End()

   ENDCLASS

METHOD Execute() CLASS DlgTextMsgClass

   LOCAL nDlgWidth, nDlgHeight // xStatusbar,
   LOCAL xControl, oCol

   ::nGSecStart := Int( Seconds() )
   nDlgWidth  := AppWindowInfo()[1]
   nDlgHeight := AppWindowInfo()[2]
   ::nMaxRow  := Int( nDlgHeight / ( AppFontSize() + 2 ) - 2 )

   DEFINE DIALOG ::xDlg FROM 0, 0 TO nDlgHeight, nDlgWidth PIXEL ;
      FONT AppFont()  ;
      TITLE "TextScroll" // COLOR COLOR_WHITE, CLR_JPA
   ::xDlg:SetIcon( TIcon():New(,,"APPICON" ) )
   ::xDlg:bValid := { || ::lCanClose }

   IF ::lGraph

   @ nDlgHeight - 80, 40 SAY ::oSay1 VAR ::cText1 OF ::xDlg PIXEL ;
      SIZE 500, AppFontSize() FONT AppFont() COLOR CLR_BLACK, CLR_WHITE // TRANSPARENT BORDER

   @ nDlgHeight - 80, nDlgWidth - 550 SAY ::oSay2 VAR ::cText2 OF ::xDlg PIXEL ;
      SIZE 500, AppFontSize() FONT AppFont() RIGHT COLOR CLR_BLACK, CLR_WHITE // TRANSPARENT BORDER

      @ nDlgHeight - 60, 40 METER ::oMeter VAR ::nGAtual ;
         SIZE nDlgWidth - 80, AppFontSize() * 2 PIXEL OF ::xDlg ;
         COLOR    CLR_HGRAY, CLR_BLACK ;
         BARCOLOR CLR_MAGENTA, CLR_WHITE ;
         TOTAL ::nGTotal FONT AppFont() BORDER CLR_BLACK UPDATE

   ENDIF
   IF ::nStyle == 1
      @ 10, 10 GET ::oGet VAR ::cText MEMO OF ::xDlg PIXEL ;
         SIZE nDlgWidth  - AppFontSize(), nDlgHeight - AppFontSize() - iif( ::lGraph, 100, 0 ) ;
         FONT AppFont() COLOR CLR_BLACK, CLR_WHITE // TRANSPARENT BORDER
   ENDIF
   //::xGet:Disable()
   //Don't works for GET MEMO
   //::xGet:lDisColors := .F.
   //::xGet:nClrTextDis := RGB2N(20,20,20)
   IF ::nStyle == 2
      @ 10, 10 XBROWSE xControl ;
         ARRAY { "" } ;
         SIZE nDlgWidth  - AppFontSize(), nDlgHeight - AppFontSize() - iif( ::lGraph, 100, 0 ) ;
          FONT AppFont() PIXEL
      oCol := xControl:AddCol()
      oCol:cHeader := "Text"
      oCol:bStrData := { || xControl:aArrayData[ xControl:nArrayAt ] }
      xControl:lFitGridHeight := .T. // adjust extra space to header/footer
      xControl:nStretchCol := STRETCHCOL_WIDEST
      xControl:CreateFromCode()
      ::oBrowse := xControl
   ENDIF

   ACTIVATE DIALOG ::xDlg CENTERED
      //ON INIT ( (Self), guistatusBarCreate( ::xDlg, @xStatusbar, "" ) )

   RETURN Nil

METHOD ShowText( cText ) CLASS DlgTextMsgClass

   LOCAL cItem

      IF Len( ::aText ) = ::nMaxRow
         ADel( ::aText, 1 )
         ::aText[ Len( ::aText ) ] := cText
      ELSE
         AAdd( ::aText, cText )
      ENDIF
      ::cText := ""
      FOR EACH cItem IN ::aText
         ::cText += cItem + hb_Eol()
      NEXT
   IF ::nStyle == 1
      ::oSay:VarPut( ::cText )
      ::oSay:Refresh()
   ENDIF
   IF ::nStyle == 2
      ::oBrowse:SetArray( ::aText )
      ::oBrowse:nArrayAt := Len( ::aText )
      ::oBrowse:Refresh()
   ENDIF

   RETURN Nil

METHOD ShowMeter( nValue ) CLASS DlgTextMsgClass

   LOCAL nSecElapsed, nSecRemaining

   IF ::nGSecNow != Int( Seconds() )
      ::nGSecNow := Seconds()
      ::nGAtual  := nValue

      nSecElapsed := ::nGSecNow - ::nGSecStart
      DO WHILE nSecElapsed < 0
         nSecElapsed += ( 24 * 3600 )
      ENDDO
      nSecRemaining := nSecElapsed / ::nGAtual * ( ::nGTotal - ::nGAtual )

      ::oSay1:VarPut( "Proc." + Ltrim( Str( ::nGAtual, 15, 0 ) ) + "/" + ;
         Ltrim( Str( ::nGTotal, 15, 0 ) ) + ;
         " Gasto " + SecText( nSecElapsed ) )
      ::oSay1:Refresh()
      ::oSay2:VarPut( "Falta " + SecText( nSecRemaining ) )
      ::oSay2:Refresh()
      ::xDlg:Update()
   ENDIF

   RETURN Nil

STATIC FUNCTION SecText( nS )

   LOCAL nH, nM

   nM := Int( nS / 60 )
   nS -= ( nM * 60 )
   nH := Int( nM / 60 )
   nM -= ( nH * 60 )

   RETURN ;
      Ltrim( Str( nH, 2 ) ) + "h " + ;
      Ltrim( Str( nM, 2 ) ) + "m " + ;
      Ltrim( Str( nS, 2 ) ) + "s"


//STATIC FUNCTION guiStatusBarCreate( xDlg, xStatusbar, cText )

   //DEFINE STATUSBAR xStatusBar PROMPT cText OF xDlg
   //xDlg:Refresh()

   //RETURN xStatusBar
This is a proposital error.

Code: Select all | Expand

   ? oDlgMsg / 3 // force error
To test this:

Code: Select all | Expand

   bOldError := ErrorBlock()
   ErrorBlock( { | e |  oDlgMsg:lCanClose := .T., oDlgMsg:End(), iif( bOldError == Nil, Nil, Eval( bOldError, e ) ) } )
(1) module thread
(2) fivewin dialog thread

Error on (1) need to close (2). New errorblock only add commands to current errorblock.
if do not do this, need to close dialog on taskbar manager when error occurs on module.
Any other thread remains open.

At momment are tests only, testing possibilities.

Note: Not sure if xbrowse could use anything like this to test user codeblocks.]]>
Image

Code: Select all | Expand

#include "fivewin.ch"

PROCEDURE ze_fwTextMsg

   LOCAL oDlgMsg, nCont, bOldError

   hb_ThreadStart( { || oDlgMsg := DlgTextMsgClass():New(), oDlgMsg:Execute() } )

   bOldError := ErrorBlock()
   ErrorBlock( { | e |  oDlgMsg:lCanClose := .T., oDlgMsg:End(), iif( bOldError == Nil, Nil, Eval( bOldError, e ) ) } )

   Inkey(2)
   FOR nCont = 1 TO 50
      oDlgMsg:ShowText( "Test " + Ltrim( Str( nCont ) ) )
      oDlgMsg:nGAtual += 2
      oDlgMsg:ShowMeter( oDlgMsg:nGAtual )
      Inkey(0.5)
   NEXT
   ? oDlgMsg / 3 // force error
   oDlgMsg:lCanClose := .T.
   oDlgMsg:End()

   RETURN

CREATE CLASS DlgTextMsgClass

   VAR xDlg
   VAR oBrowse
   VAR oGet
   VAR oSay1
   VAR oSay2
   VAR oMeter
   VAR aText      INIT { "." }
   VAR cText
   VAR cText1     INIT ""
   VAR cText2     INIT ""
   VAR nMaxRow    INIT 10
   VAR nStyle     INIT 2
   VAR lCanClose  INIT .F.
   VAR lGraph     INIT .T.
   VAR nGAtual    INIT 0
   VAR nGTotal    INIT 100
   VAR nGSecStart INIT 0
   VAR nGSecNow   INIT 0

   METHOD Execute()
   METHOD ShowText( cText )
   METHOD ShowMeter( nValue )
   METHOD End() INLINE ::xDlg:End()

   ENDCLASS

METHOD Execute() CLASS DlgTextMsgClass

   LOCAL nDlgWidth, nDlgHeight // xStatusbar,
   LOCAL xControl, oCol

   ::nGSecStart := Int( Seconds() )
   nDlgWidth  := AppWindowInfo()[1]
   nDlgHeight := AppWindowInfo()[2]
   ::nMaxRow  := Int( nDlgHeight / ( AppFontSize() + 2 ) - 2 )

   DEFINE DIALOG ::xDlg FROM 0, 0 TO nDlgHeight, nDlgWidth PIXEL ;
      FONT AppFont()  ;
      TITLE "TextScroll" // COLOR COLOR_WHITE, CLR_JPA
   ::xDlg:SetIcon( TIcon():New(,,"APPICON" ) )
   ::xDlg:bValid := { || ::lCanClose }

   IF ::lGraph

   @ nDlgHeight - 80, 40 SAY ::oSay1 VAR ::cText1 OF ::xDlg PIXEL ;
      SIZE 500, AppFontSize() FONT AppFont() COLOR CLR_BLACK, CLR_WHITE // TRANSPARENT BORDER

   @ nDlgHeight - 80, nDlgWidth - 550 SAY ::oSay2 VAR ::cText2 OF ::xDlg PIXEL ;
      SIZE 500, AppFontSize() FONT AppFont() RIGHT COLOR CLR_BLACK, CLR_WHITE // TRANSPARENT BORDER

      @ nDlgHeight - 60, 40 METER ::oMeter VAR ::nGAtual ;
         SIZE nDlgWidth - 80, AppFontSize() * 2 PIXEL OF ::xDlg ;
         COLOR    CLR_HGRAY, CLR_BLACK ;
         BARCOLOR CLR_MAGENTA, CLR_WHITE ;
         TOTAL ::nGTotal FONT AppFont() BORDER CLR_BLACK UPDATE

   ENDIF
   IF ::nStyle == 1
      @ 10, 10 GET ::oGet VAR ::cText MEMO OF ::xDlg PIXEL ;
         SIZE nDlgWidth  - AppFontSize(), nDlgHeight - AppFontSize() - iif( ::lGraph, 100, 0 ) ;
         FONT AppFont() COLOR CLR_BLACK, CLR_WHITE // TRANSPARENT BORDER
   ENDIF
   //::xGet:Disable()
   //Don't works for GET MEMO
   //::xGet:lDisColors := .F.
   //::xGet:nClrTextDis := RGB2N(20,20,20)
   IF ::nStyle == 2
      @ 10, 10 XBROWSE xControl ;
         ARRAY { "" } ;
         SIZE nDlgWidth  - AppFontSize(), nDlgHeight - AppFontSize() - iif( ::lGraph, 100, 0 ) ;
          FONT AppFont() PIXEL
      oCol := xControl:AddCol()
      oCol:cHeader := "Text"
      oCol:bStrData := { || xControl:aArrayData[ xControl:nArrayAt ] }
      xControl:lFitGridHeight := .T. // adjust extra space to header/footer
      xControl:nStretchCol := STRETCHCOL_WIDEST
      xControl:CreateFromCode()
      ::oBrowse := xControl
   ENDIF

   ACTIVATE DIALOG ::xDlg CENTERED
      //ON INIT ( (Self), guistatusBarCreate( ::xDlg, @xStatusbar, "" ) )

   RETURN Nil

METHOD ShowText( cText ) CLASS DlgTextMsgClass

   LOCAL cItem

      IF Len( ::aText ) = ::nMaxRow
         ADel( ::aText, 1 )
         ::aText[ Len( ::aText ) ] := cText
      ELSE
         AAdd( ::aText, cText )
      ENDIF
      ::cText := ""
      FOR EACH cItem IN ::aText
         ::cText += cItem + hb_Eol()
      NEXT
   IF ::nStyle == 1
      ::oSay:VarPut( ::cText )
      ::oSay:Refresh()
   ENDIF
   IF ::nStyle == 2
      ::oBrowse:SetArray( ::aText )
      ::oBrowse:nArrayAt := Len( ::aText )
      ::oBrowse:Refresh()
   ENDIF

   RETURN Nil

METHOD ShowMeter( nValue ) CLASS DlgTextMsgClass

   LOCAL nSecElapsed, nSecRemaining

   IF ::nGSecNow != Int( Seconds() )
      ::nGSecNow := Seconds()
      ::nGAtual  := nValue

      nSecElapsed := ::nGSecNow - ::nGSecStart
      DO WHILE nSecElapsed < 0
         nSecElapsed += ( 24 * 3600 )
      ENDDO
      nSecRemaining := nSecElapsed / ::nGAtual * ( ::nGTotal - ::nGAtual )

      ::oSay1:VarPut( "Proc." + Ltrim( Str( ::nGAtual, 15, 0 ) ) + "/" + ;
         Ltrim( Str( ::nGTotal, 15, 0 ) ) + ;
         " Gasto " + SecText( nSecElapsed ) )
      ::oSay1:Refresh()
      ::oSay2:VarPut( "Falta " + SecText( nSecRemaining ) )
      ::oSay2:Refresh()
      ::xDlg:Update()
   ENDIF

   RETURN Nil

STATIC FUNCTION SecText( nS )

   LOCAL nH, nM

   nM := Int( nS / 60 )
   nS -= ( nM * 60 )
   nH := Int( nM / 60 )
   nM -= ( nH * 60 )

   RETURN ;
      Ltrim( Str( nH, 2 ) ) + "h " + ;
      Ltrim( Str( nM, 2 ) ) + "m " + ;
      Ltrim( Str( nS, 2 ) ) + "s"


//STATIC FUNCTION guiStatusBarCreate( xDlg, xStatusbar, cText )

   //DEFINE STATUSBAR xStatusBar PROMPT cText OF xDlg
   //xDlg:Refresh()

   //RETURN xStatusBar
This is a proposital error.

Code: Select all | Expand

   ? oDlgMsg / 3 // force error
To test this:

Code: Select all | Expand

   bOldError := ErrorBlock()
   ErrorBlock( { | e |  oDlgMsg:lCanClose := .T., oDlgMsg:End(), iif( bOldError == Nil, Nil, Eval( bOldError, e ) ) } )
(1) module thread
(2) fivewin dialog thread

Error on (1) need to close (2). New errorblock only add commands to current errorblock.
if do not do this, need to close dialog on taskbar manager when error occurs on module.
Any other thread remains open.

At momment are tests only, testing possibilities.

Note: Not sure if xbrowse could use anything like this to test user codeblocks.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: SysWait() problem. - SOLVED :: Author Horizon]]> 2025-03-01T02:50:38-07:00 2025-03-02T23:07:27-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45476&p=278059#p278059
I looked for the source code of the SysWait function in the Fwh source codes directory, but I could not find it. I guess it could be in the harbour. I found a source code shared by Enrico in an old topic on this forum. Is this code the code we use in our applications?

Code: Select all | Expand

function SysWait( nLong )

   local nSeconds

   DEFAULT nLong := .1
   nSeconds := Seconds() + nLong

   while Seconds() < nSeconds
     SysRefresh()
   end

return .t.
If yes, I think there is a problem here. When the time changes from 23.59 to the next day, the function enters an infinite loop and crashes the application. Has anyone had this problem? How can we solve it?]]>

I looked for the source code of the SysWait function in the Fwh source codes directory, but I could not find it. I guess it could be in the harbour. I found a source code shared by Enrico in an old topic on this forum. Is this code the code we use in our applications?

Code: Select all | Expand

function SysWait( nLong )

   local nSeconds

   DEFAULT nLong := .1
   nSeconds := Seconds() + nLong

   while Seconds() < nSeconds
     SysRefresh()
   end

return .t.
If yes, I think there is a problem here. When the time changes from 23.59 to the next day, the function enters an infinite loop and crashes the application. Has anyone had this problem? How can we solve it?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: SysWait() problem. :: Reply by Antonio Linares]]> 2025-03-01T03:33:48-07:00 2025-03-01T03:33:48-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45476&p=278060#p278060
This updated version should solve it:

Code: Select all | Expand

function SysWait( nLong )
   local nStart

   DEFAULT nLong := .1
   nStart := HB_MilliSeconds()  // Milliseconds since app start or system epoch

   while (HB_MilliSeconds() - nStart) < (nLong * 1000)  // Convert seconds to milliseconds
      SysRefresh()
   end

return .T.
]]>

This updated version should solve it:

Code: Select all | Expand

function SysWait( nLong )
   local nStart

   DEFAULT nLong := .1
   nStart := HB_MilliSeconds()  // Milliseconds since app start or system epoch

   while (HB_MilliSeconds() - nStart) < (nLong * 1000)  // Convert seconds to milliseconds
      SysRefresh()
   end

return .T.
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: SysWait() problem. :: Reply by Horizon]]> 2025-03-02T02:01:34-07:00 2025-03-02T02:01:34-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45476&p=278093#p278093
Antonio Linares wrote: Sat Mar 01, 2025 10:33 am Dear Hakan,

This updated version should solve it:

Code: Select all | Expand

function SysWait( nLong )
   local nStart

   DEFAULT nLong := .1
   nStart := HB_MilliSeconds()  // Milliseconds since app start or system epoch

   while (HB_MilliSeconds() - nStart) < (nLong * 1000)  // Convert seconds to milliseconds
      SysRefresh()
   end

return .T.
Thank you Antonio,

I will try it and write the result.]]>
Antonio Linares wrote: Sat Mar 01, 2025 10:33 am Dear Hakan,

This updated version should solve it:

Code: Select all | Expand

function SysWait( nLong )
   local nStart

   DEFAULT nLong := .1
   nStart := HB_MilliSeconds()  // Milliseconds since app start or system epoch

   while (HB_MilliSeconds() - nStart) < (nLong * 1000)  // Convert seconds to milliseconds
      SysRefresh()
   end

return .T.
Thank you Antonio,

I will try it and write the result.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: SysWait() problem. :: Reply by Horizon]]> 2025-03-02T23:06:52-07:00 2025-03-02T23:06:52-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45476&p=278099#p278099
It works just fine.]]>

It works just fine.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: html report generator triathlon :: Reply by Otto]]> 2025-03-02T23:40:01-07:00 2025-03-02T23:40:01-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=42879&p=278101#p278101
ChatGPT
Is Jaspersoft Becoming Obsolete Due to AI?

✅ Yes, if you want a modern, flexible, and interactive solution.
🚫 No, if you need classic, pre-defined reports for large enterprises.

What is Jaspersoft?

Jaspersoft is a Business Intelligence (BI) platform specializing in reporting, data analysis, and dashboards. It is primarily used to generate and distribute reports from various data sources and is one of the leading open-source solutions in this field.

Key Features of Jaspersoft
JasperReports – A powerful reporting engine for creating reports in multiple formats (PDF, HTML, Excel, CSV, XML, etc.).
JasperReports Server – A web application for managing, automating, and distributing reports.
JasperSoft Studio – A graphical tool for designing and creating reports (replacing the older iReport Designer).
Ad-hoc Reporting – Users can create reports flexibly via a web interface without programming knowledge.
Support for Multiple Data Sources – Compatible with SQL databases, NoSQL databases, cloud services, Excel files, etc.
Integration into Custom Applications – Jaspersoft can be embedded as a reporting solution in existing software.
Use Cases
Enterprises: Creating business reports and dashboards
Web Applications: Dynamic reporting within web apps
Data Analysis: Transforming raw data into visually understandable reports
ERP and CRM Systems: Enhancing systems with professional reporting functions

Jaspersoft is available as an open-source version (Community Edition) and in commercial editions with extended features. The commercial version is distributed by TIBCO Software.

Question:

As a developer, what advantages does Jaspersoft offer for my software compared to a custom solution using HTML as the reporting language?

Comparison: Jaspersoft vs. Custom HTML Reporting Solution
Advantages of Jaspersoft:

Ready-to-Use Reporting Engine:

Saves development time by eliminating the need to build your own reporting logic.
Offers features such as grouping, aggregations, charts, and export to PDF/Excel.

Visual Design:

Reports can be designed using JasperSoft Studio’s drag-and-drop interface.
Reduces the need for manual HTML/CSS/JS coding.

Data Connectivity and Processing:

Supports multiple data sources (SQL, NoSQL, web APIs, CSV, XML).
Built-in functions for calculations, summaries, pivot tables, etc.

Export Functionality:

Reports can be exported directly to PDF, Excel, CSV, Word, XML, or JSON.
A custom HTML solution would require additional development for conversions.

Automated Report Generation:

Reports can be scheduled and sent via email.
A custom HTML-based solution would require manual coding for this functionality.

Access Control:

Jaspersoft offers user and role-based access management.
A custom solution would require manual implementation.
Advantages of a Custom HTML Reporting Solution:

Maximum Flexibility:

You can build exactly what you need without the overhead of a BI tool.
Design, interactivity, and presentation can be fully customized.

Integration with Web Technologies:

If your application is already based on HTML/JS, reports can be seamlessly integrated.
HTML reports can be enhanced with JavaScript, Chart.js, D3.js, or Tailwind CSS.

Less Dependency on Third-Party Software:

No external BI engine or libraries required.
No licensing costs or update issues with commercial versions.

Better Mobile Adaptability:

HTML reports are inherently responsive, whereas PDF reports often have fixed layouts.
Live filtering and interactive elements are easier to implement.

Performance Advantage for Small Reports:

Jaspersoft generates numerous XML files, adding overhead.
A lightweight HTML solution can be faster for small data sets.
When is Each Option Better?
Criterion Jaspersoft Custom HTML Solution
Simple Reports (Invoices, Lists, Tables) ✅ Well-suited ✅ Well-suited
Complex Reports with Charts & Aggregations ✅ Already integrated 🚀 Requires custom development
Dynamic, Interactive Reports (Live Filtering, Drill-Downs) ⚠️ More static ✅ Easily achievable with JS
Export to Multiple Formats (PDF, Excel, CSV) ✅ Out-of-the-box 🚀 Requires additional tools
Automated Reports (Scheduled Jobs, Email Dispatch) ✅ Built-in 🚀 Needs manual programming
Mobile Optimization & Responsive Design ⚠️ More static ✅ Ideal for web apps
Dependency on Third-Party Software ⚠️ Yes (TIBCO Jaspersoft) ✅ None
Conclusion:
If you need complex, static reports with export capabilities, Jaspersoft is a quick, ready-made solution.
If you need flexible, interactive reports for a web application, HTML with JS is the better choice.

For exporting HTML reports, you could use Puppeteer (Headless Chrome) to convert HTML pages into PDFs.

What is your specific use case? I can give you more targeted advice. 😊

Question:

Are Jaspersoft’s advantages still relevant today—considering AI-powered report generation—or does it now hinder progress?

AI-Powered Development vs. Jaspersoft
1. Automated Report Generation with AI

Modern AI tools like ChatGPT (with code generation), Copilot, or AI assistants in BI tools can already:

Generate HTML/CSS/JavaScript for custom reports
Automate and optimize SQL queries
Analyze data and create visualizations (e.g., with Chart.js, D3.js)
Dynamically generate reports with minimal input

💡 Conclusion: Jaspersoft’s traditional “drag-and-drop” approach is becoming less relevant as AI simplifies direct report generation in HTML, PDF, or Excel.

2. Flexibility vs. Jaspersoft’s Overhead
Jaspersoft is based on XML structures and templates, often leading to unnecessary complexity.
AI can directly generate HTML reports, avoiding the need to deal with Jaspersoft’s templates and syntax.
Modern HTML reports are more interactive than Jaspersoft’s mostly static PDFs.

💡 Conclusion: AI can generate HTML reports more quickly and flexibly, eliminating the need for a heavy BI tool.

3. Adaptability and Evolution
Using Jaspersoft requires learning the framework and adapting to its limitations.
With an AI-powered custom solution, reports could be modified using natural language, e.g.:
“Create a sales report by region as a bar chart.”
“Add a table with the top customers from the last quarter.”

💡 Conclusion: AI makes reporting more dynamic and adaptable, whereas Jaspersoft relies on static templates.

4. Performance and Scalability
Jaspersoft requires a dedicated server instance, adding overhead.
AI-generated HTML/PDF reports can run directly within a web app without an additional server.
Modern databases (e.g., ClickHouse, DuckDB) allow direct AI-powered queries, reducing the need for separate BI tools.

💡 Conclusion: Using AI with HTML + direct database queries is more efficient than Jaspersoft.

Is Jaspersoft Becoming Obsolete Due to AI?

✅ Yes, if you want a modern, flexible, and interactive solution.
🚫 No, if you need classic, pre-defined reports for large enterprises.

Your Advantage as a Developer:
You can use AI to generate HTML reports faster.
The solution is more flexible than Jaspersoft and avoids unnecessary overhead.
Web technologies (HTML, JS, SQL) are easier to adapt than Jaspersoft’s XML-based format.

🔹 Final Thought: AI significantly reduces Jaspersoft’s advantages. A custom AI-powered HTML/PDF reporting solution is more future-proof.

]]>

ChatGPT
Is Jaspersoft Becoming Obsolete Due to AI?

✅ Yes, if you want a modern, flexible, and interactive solution.
🚫 No, if you need classic, pre-defined reports for large enterprises.

What is Jaspersoft?

Jaspersoft is a Business Intelligence (BI) platform specializing in reporting, data analysis, and dashboards. It is primarily used to generate and distribute reports from various data sources and is one of the leading open-source solutions in this field.

Key Features of Jaspersoft
JasperReports – A powerful reporting engine for creating reports in multiple formats (PDF, HTML, Excel, CSV, XML, etc.).
JasperReports Server – A web application for managing, automating, and distributing reports.
JasperSoft Studio – A graphical tool for designing and creating reports (replacing the older iReport Designer).
Ad-hoc Reporting – Users can create reports flexibly via a web interface without programming knowledge.
Support for Multiple Data Sources – Compatible with SQL databases, NoSQL databases, cloud services, Excel files, etc.
Integration into Custom Applications – Jaspersoft can be embedded as a reporting solution in existing software.
Use Cases
Enterprises: Creating business reports and dashboards
Web Applications: Dynamic reporting within web apps
Data Analysis: Transforming raw data into visually understandable reports
ERP and CRM Systems: Enhancing systems with professional reporting functions

Jaspersoft is available as an open-source version (Community Edition) and in commercial editions with extended features. The commercial version is distributed by TIBCO Software.

Question:

As a developer, what advantages does Jaspersoft offer for my software compared to a custom solution using HTML as the reporting language?

Comparison: Jaspersoft vs. Custom HTML Reporting Solution
Advantages of Jaspersoft:

Ready-to-Use Reporting Engine:

Saves development time by eliminating the need to build your own reporting logic.
Offers features such as grouping, aggregations, charts, and export to PDF/Excel.

Visual Design:

Reports can be designed using JasperSoft Studio’s drag-and-drop interface.
Reduces the need for manual HTML/CSS/JS coding.

Data Connectivity and Processing:

Supports multiple data sources (SQL, NoSQL, web APIs, CSV, XML).
Built-in functions for calculations, summaries, pivot tables, etc.

Export Functionality:

Reports can be exported directly to PDF, Excel, CSV, Word, XML, or JSON.
A custom HTML solution would require additional development for conversions.

Automated Report Generation:

Reports can be scheduled and sent via email.
A custom HTML-based solution would require manual coding for this functionality.

Access Control:

Jaspersoft offers user and role-based access management.
A custom solution would require manual implementation.
Advantages of a Custom HTML Reporting Solution:

Maximum Flexibility:

You can build exactly what you need without the overhead of a BI tool.
Design, interactivity, and presentation can be fully customized.

Integration with Web Technologies:

If your application is already based on HTML/JS, reports can be seamlessly integrated.
HTML reports can be enhanced with JavaScript, Chart.js, D3.js, or Tailwind CSS.

Less Dependency on Third-Party Software:

No external BI engine or libraries required.
No licensing costs or update issues with commercial versions.

Better Mobile Adaptability:

HTML reports are inherently responsive, whereas PDF reports often have fixed layouts.
Live filtering and interactive elements are easier to implement.

Performance Advantage for Small Reports:

Jaspersoft generates numerous XML files, adding overhead.
A lightweight HTML solution can be faster for small data sets.
When is Each Option Better?
Criterion Jaspersoft Custom HTML Solution
Simple Reports (Invoices, Lists, Tables) ✅ Well-suited ✅ Well-suited
Complex Reports with Charts & Aggregations ✅ Already integrated 🚀 Requires custom development
Dynamic, Interactive Reports (Live Filtering, Drill-Downs) ⚠️ More static ✅ Easily achievable with JS
Export to Multiple Formats (PDF, Excel, CSV) ✅ Out-of-the-box 🚀 Requires additional tools
Automated Reports (Scheduled Jobs, Email Dispatch) ✅ Built-in 🚀 Needs manual programming
Mobile Optimization & Responsive Design ⚠️ More static ✅ Ideal for web apps
Dependency on Third-Party Software ⚠️ Yes (TIBCO Jaspersoft) ✅ None
Conclusion:
If you need complex, static reports with export capabilities, Jaspersoft is a quick, ready-made solution.
If you need flexible, interactive reports for a web application, HTML with JS is the better choice.

For exporting HTML reports, you could use Puppeteer (Headless Chrome) to convert HTML pages into PDFs.

What is your specific use case? I can give you more targeted advice. 😊

Question:

Are Jaspersoft’s advantages still relevant today—considering AI-powered report generation—or does it now hinder progress?

AI-Powered Development vs. Jaspersoft
1. Automated Report Generation with AI

Modern AI tools like ChatGPT (with code generation), Copilot, or AI assistants in BI tools can already:

Generate HTML/CSS/JavaScript for custom reports
Automate and optimize SQL queries
Analyze data and create visualizations (e.g., with Chart.js, D3.js)
Dynamically generate reports with minimal input

💡 Conclusion: Jaspersoft’s traditional “drag-and-drop” approach is becoming less relevant as AI simplifies direct report generation in HTML, PDF, or Excel.

2. Flexibility vs. Jaspersoft’s Overhead
Jaspersoft is based on XML structures and templates, often leading to unnecessary complexity.
AI can directly generate HTML reports, avoiding the need to deal with Jaspersoft’s templates and syntax.
Modern HTML reports are more interactive than Jaspersoft’s mostly static PDFs.

💡 Conclusion: AI can generate HTML reports more quickly and flexibly, eliminating the need for a heavy BI tool.

3. Adaptability and Evolution
Using Jaspersoft requires learning the framework and adapting to its limitations.
With an AI-powered custom solution, reports could be modified using natural language, e.g.:
“Create a sales report by region as a bar chart.”
“Add a table with the top customers from the last quarter.”

💡 Conclusion: AI makes reporting more dynamic and adaptable, whereas Jaspersoft relies on static templates.

4. Performance and Scalability
Jaspersoft requires a dedicated server instance, adding overhead.
AI-generated HTML/PDF reports can run directly within a web app without an additional server.
Modern databases (e.g., ClickHouse, DuckDB) allow direct AI-powered queries, reducing the need for separate BI tools.

💡 Conclusion: Using AI with HTML + direct database queries is more efficient than Jaspersoft.

Is Jaspersoft Becoming Obsolete Due to AI?

✅ Yes, if you want a modern, flexible, and interactive solution.
🚫 No, if you need classic, pre-defined reports for large enterprises.

Your Advantage as a Developer:
You can use AI to generate HTML reports faster.
The solution is more flexible than Jaspersoft and avoids unnecessary overhead.
Web technologies (HTML, JS, SQL) are easier to adapt than Jaspersoft’s XML-based format.

🔹 Final Thought: AI significantly reduces Jaspersoft’s advantages. A custom AI-powered HTML/PDF reporting solution is more future-proof.

]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: adjust zoom in xBrowse :: Reply by INFORMAISVRB]]> 2025-02-27T04:46:02-07:00 2025-02-27T04:46:02-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45444&p=278008#p278008

Link https://www.donorquest.com/]]>


Link https://www.donorquest.com/]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: adjust zoom in xBrowse :: Reply by Silvio.Falconi]]> 2025-02-27T06:52:00-07:00 2025-02-27T06:52:00-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45444&p=278009#p278009
INFORMAISVRB wrote: Thu Feb 27, 2025 11:46 am This company did, I downloaded the demo version where I can see that it does what I need


Link https://www.donorquest.com/
this sample test make the zoom and save it on state

Image


Code: Select all | Expand

#include "fivewin.ch"

function Main()   
   local oDlg, oFont, oBrw
   local cSection :="Cust"
local cIniUser :=  cFilePath( GetModuleFileName( GetInstance() ) ) + "test.ini"

local cState := GetPvProfString(cSection, "State","", cIniuser)  // load state from disk

   USE CUSTOMER

DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-15   

DEFINE DIALOG oDlg SIZE 700,400 PIXEL TRUEPIXEL FONT oFont ; 
     TITLE "Ctrl + MouseWheel Scroll to ZOOM/UNZOOM"   

@ 20,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;    
  DATASOURCE ALIAS() AUTOCOLS ;  
    CELL LINES NOBORDER 

  WITH OBJECT oBrw  
    :CreateFromCode()  
 END   

 oBrw:RestoreState( cState )  // set the old state saved 

 ACTIVATE DIALOG oDlg CENTERED ;
 VALID (oBrw:nLen := 0 ,;
     WritePProString(cSection,"State",oBrw:SaveState(),cIniUser))  // save the state into disk

                   
 RELEASE FONT oFont
return nil



Nages,
If I Use this configuration on xbrowse

Code: Select all | Expand

@ 103 , 10 XBROWSE oBrw ;
                  OF oDlg ;
                SIZE -10 , 390 ;
               PIXEL ;
          DATASOURCE oDbf ;
             COLUMNS aCols ;
            AUTOSORT ;
                FONT oFontNormal ;
            NOBORDER ;
                CELL ;
               LINES ;
              UPDATE
              
MyStyleBrowse(oBrw)

   WITH OBJECT oBrw
  
      :CreateFromCode()
   END
   
   
   Function MyStyleBrowse(oBrw)
   local nColorHeader  := DLG_nColorDlg
   local nColorFooter  := DLG_nColorDlg
   local nColorPigiama := RGB(235,243,245)
         WITH OBJECT oBrw
            :nRowHeight          := 25
            :l2007               := .F.
            :l2015               := .T.
            :lRecordSelector     := .F.
            :nColDividerStyle    := LINESTYLE_LIGHTGRAY
            :nRowDividerStyle    := LINESTYLE_LIGHTGRAY
            :nStretchCol         := STRETCHCOL_WIDEST
            :nMarqueeStyle        := MARQSTYLE_HIGHLROW
            :lDisplayZeros        := .f.
            :lAllowRowSizing     := .F.
            :lAllowColSwapping   := .F.
            :lAllowColHiding     := .F.
            :lAllowSizings       := .F.
             :lDrawBorder := .t.
             :nClrBorder := Rgb(195,195,185)
             :lDrawBorderIn   := .F.
            :bRecSelHeader    := ""
       *     :bClrSelFocus := { || {,rgb(255,255,224)}}
            :bClrRowFocus := { || {, rgb(255,255,224)}}
           * :nRecSelColor     :=   nRgb( 245,244,234)
            :bClrHeader       := {|| { ,nColorHeader } }
            :bClrFooter       := {|| { ,nColorFooter } }
            :bClrStd := { || { CLR_BLACK, If( oBrw:KeyNo % 2 == 0, CLR_WHITE,nColorPigiama ) } }
         END
 return nil

the zoom not run also if I use mousewhhel or keys ctrl + and -

probably there is something that is bothering you and the zoom does not work using the mouse wheel or using the + and - keys with ctrl]]>
INFORMAISVRB wrote: Thu Feb 27, 2025 11:46 am This company did, I downloaded the demo version where I can see that it does what I need


Link https://www.donorquest.com/
this sample test make the zoom and save it on state

Image


Code: Select all | Expand

#include "fivewin.ch"

function Main()   
   local oDlg, oFont, oBrw
   local cSection :="Cust"
local cIniUser :=  cFilePath( GetModuleFileName( GetInstance() ) ) + "test.ini"

local cState := GetPvProfString(cSection, "State","", cIniuser)  // load state from disk

   USE CUSTOMER

DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-15   

DEFINE DIALOG oDlg SIZE 700,400 PIXEL TRUEPIXEL FONT oFont ; 
     TITLE "Ctrl + MouseWheel Scroll to ZOOM/UNZOOM"   

@ 20,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;    
  DATASOURCE ALIAS() AUTOCOLS ;  
    CELL LINES NOBORDER 

  WITH OBJECT oBrw  
    :CreateFromCode()  
 END   

 oBrw:RestoreState( cState )  // set the old state saved 

 ACTIVATE DIALOG oDlg CENTERED ;
 VALID (oBrw:nLen := 0 ,;
     WritePProString(cSection,"State",oBrw:SaveState(),cIniUser))  // save the state into disk

                   
 RELEASE FONT oFont
return nil



Nages,
If I Use this configuration on xbrowse

Code: Select all | Expand

@ 103 , 10 XBROWSE oBrw ;
                  OF oDlg ;
                SIZE -10 , 390 ;
               PIXEL ;
          DATASOURCE oDbf ;
             COLUMNS aCols ;
            AUTOSORT ;
                FONT oFontNormal ;
            NOBORDER ;
                CELL ;
               LINES ;
              UPDATE
              
MyStyleBrowse(oBrw)

   WITH OBJECT oBrw
  
      :CreateFromCode()
   END
   
   
   Function MyStyleBrowse(oBrw)
   local nColorHeader  := DLG_nColorDlg
   local nColorFooter  := DLG_nColorDlg
   local nColorPigiama := RGB(235,243,245)
         WITH OBJECT oBrw
            :nRowHeight          := 25
            :l2007               := .F.
            :l2015               := .T.
            :lRecordSelector     := .F.
            :nColDividerStyle    := LINESTYLE_LIGHTGRAY
            :nRowDividerStyle    := LINESTYLE_LIGHTGRAY
            :nStretchCol         := STRETCHCOL_WIDEST
            :nMarqueeStyle        := MARQSTYLE_HIGHLROW
            :lDisplayZeros        := .f.
            :lAllowRowSizing     := .F.
            :lAllowColSwapping   := .F.
            :lAllowColHiding     := .F.
            :lAllowSizings       := .F.
             :lDrawBorder := .t.
             :nClrBorder := Rgb(195,195,185)
             :lDrawBorderIn   := .F.
            :bRecSelHeader    := ""
       *     :bClrSelFocus := { || {,rgb(255,255,224)}}
            :bClrRowFocus := { || {, rgb(255,255,224)}}
           * :nRecSelColor     :=   nRgb( 245,244,234)
            :bClrHeader       := {|| { ,nColorHeader } }
            :bClrFooter       := {|| { ,nColorFooter } }
            :bClrStd := { || { CLR_BLACK, If( oBrw:KeyNo % 2 == 0, CLR_WHITE,nColorPigiama ) } }
         END
 return nil

the zoom not run also if I use mousewhhel or keys ctrl + and -

probably there is something that is bothering you and the zoom does not work using the mouse wheel or using the + and - keys with ctrl]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: adjust zoom in xBrowse :: Reply by Otto]]> 2025-02-27T07:48:37-07:00 2025-02-27T07:48:37-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45444&p=278011#p278011 I think it should work approximately like this. In my code, there is still an issue with the correct size of the restored font.
But I’m sure you can solve that.

The principle is: remember the font size, row height, and column widths from XBrowse.
When restarting, the saved values are loaded.
Best regards,
Otto

Code: Select all | Expand


// Using Windows 7 row selection colors in xbrowse

#include 'fivewin.ch'
#include 'xbrowse.ch'


STATIC nLastFontSize := 0
STATIC aLastColWidths := {}
STATIC nLastRowHeight := 0
STATIC c_path

function Main()

   local oDlg, oBrw, oFont

	c_path := cFilePath(GetModuleFileName( GetInstance() ) )
   SET DATE ITALIAN
   SET CENTURY ON

   FwNumFormat( 'E', .t. )

   USE CUSTOMER ALIAS CUST

   DEFINE FONT oFont NAME 'Tahoma' SIZE 0, -16

   DEFINE DIALOG oDlg SIZE 640,440 PIXEL ;
      FONT oFont TITLE 'XBrowse Windows 7 Bars' ;
      COLOR CLR_BLACK,RGB(250,250,250)
          @ 0,20 ;
      BUTTON "SaveZoomSetting" ;
      ACTION SaveZoomSetting( oBrw ) ;
          OF oDlg ;
       PIXEL

      @ 0,120 ;
      BUTTON "LoadZoomSettings" ;
      ACTION LoadZoomSettings( oBrw ) ;
          OF oDlg ;
       PIXEL

   @ 20,20 XBROWSE oBrw OF oDlg SIZE -10,-20 PIXEL ;
      COLUMNS "First", "State", "Age", "HireDate", "Salary" ;
      ALIAS 'CUST' NOBORDER

   oBrw:lRecordSelector := .f.
   oBrw:nMarqueeStyle   := MARQSTYLE_HIGHLWIN7

   WITH OBJECT oBrw:InsCol( 1 )

      :cHeader       := " "
      :bEditValue    := { || If( AScan( oBrw:aSelected, oBrw:BookMark ) > 0, .t., nil ) }
      :SetCheck()
      :nHeadBmpNo    := { || If( Len( oBrw:aSelected ) == oBrw:nLen, 1, 2 ) }
      :bLClickHeader := { |r,c,f,oCol| If( Len( oBrw:aSelected ) == oBrw:nLen, ;
                                           oBrw:SelectNone(), oBrw:SelectAll() ) }

   END

   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED

   RELEASE FONT oFont

return nil



FUNCTION SaveZoomSetting( oBrw )
	LOCAL cIniFile := c_Path + "PROJECT.INI"


   LOCAL nZoom, i
	local cFontText


	FontToText( oBrw:oFont )

  MEMOWRIT( 'fontsave.txt', cFontText )




   // Schriftgröße speichern
   WritePProString(  "Settings","FontSize", Str( Abs( oBrw:oFont:nHeight ) ), cIniFile )

   // Zeilenhöhe speichern
   WritePProString ( "Settings", "RowHeight", Str( oBrw:nRowHeight ) , cIniFile )

   // Spaltenbreiten speichern
   FOR i := 1 TO Len( oBrw:aCols )
      WritePProString(  "Columns", "Col" + Str(i), Str( oBrw:aCols[i]:nWidth ) , cIniFile )
   NEXT
RETURN NIL


FUNCTION LoadZoomSettings( oBrw )
   LOCAL cIniFile := c_Path + "PROJECT.INI"
   LOCAL i, nWidth

   // Schriftgröße setzen
   LOCAL nFontSize := Val( GetPvProfString( "Settings", "FontSize", "12"  , cIniFile ) )

     oBrw:oFont   :=   FontFromText( MemoRead( 'FONTSAVE.TXT' ) )


   // Zeilenhöhe setzen
   oBrw:nRowHeight := Val( GetPvProfString( "Settings", "RowHeight", "20"  , cIniFile ))

   // Spaltenbreiten wiederherstellen
   FOR i := 1 TO Len( oBrw:aCols )
      nWidth := Val( GetPvProfString( "Columns", "Col" + Str(i), Str(oBrw:aCols[i]:nWidth)  , cIniFile ))
      oBrw:aCols[i]:nWidth := nWidth
   NEXT

   oBrw:Refresh()

RETURN NIL

function FontToText( oFont )
return FW_ValToExp(  { ;
   oFont:cFaceName, 0, oFont:nInpHeight, .f., oFont:lBold, oFont:nEscapement, ;
   oFont:nOrientation, nil, oFont:lItalic, oFont:lUnderline, oFont:lStrikeOut, ;
   oFont:nCharSet, oFont:nOutPrecision, oFont:nClipPrecision, oFont:nQuality, ;
   nil, oFont:nPitchFamily }  )
//----------------------------------------------------------------------------//
function FontFromText( cText )
return HB_ExecFromArray( TFont(), "NEW", &cText )
//----------------------------------------------------------------------------//






]]>
I think it should work approximately like this. In my code, there is still an issue with the correct size of the restored font.
But I’m sure you can solve that.

The principle is: remember the font size, row height, and column widths from XBrowse.
When restarting, the saved values are loaded.
Best regards,
Otto

Code: Select all | Expand


// Using Windows 7 row selection colors in xbrowse

#include 'fivewin.ch'
#include 'xbrowse.ch'


STATIC nLastFontSize := 0
STATIC aLastColWidths := {}
STATIC nLastRowHeight := 0
STATIC c_path

function Main()

   local oDlg, oBrw, oFont

	c_path := cFilePath(GetModuleFileName( GetInstance() ) )
   SET DATE ITALIAN
   SET CENTURY ON

   FwNumFormat( 'E', .t. )

   USE CUSTOMER ALIAS CUST

   DEFINE FONT oFont NAME 'Tahoma' SIZE 0, -16

   DEFINE DIALOG oDlg SIZE 640,440 PIXEL ;
      FONT oFont TITLE 'XBrowse Windows 7 Bars' ;
      COLOR CLR_BLACK,RGB(250,250,250)
          @ 0,20 ;
      BUTTON "SaveZoomSetting" ;
      ACTION SaveZoomSetting( oBrw ) ;
          OF oDlg ;
       PIXEL

      @ 0,120 ;
      BUTTON "LoadZoomSettings" ;
      ACTION LoadZoomSettings( oBrw ) ;
          OF oDlg ;
       PIXEL

   @ 20,20 XBROWSE oBrw OF oDlg SIZE -10,-20 PIXEL ;
      COLUMNS "First", "State", "Age", "HireDate", "Salary" ;
      ALIAS 'CUST' NOBORDER

   oBrw:lRecordSelector := .f.
   oBrw:nMarqueeStyle   := MARQSTYLE_HIGHLWIN7

   WITH OBJECT oBrw:InsCol( 1 )

      :cHeader       := " "
      :bEditValue    := { || If( AScan( oBrw:aSelected, oBrw:BookMark ) > 0, .t., nil ) }
      :SetCheck()
      :nHeadBmpNo    := { || If( Len( oBrw:aSelected ) == oBrw:nLen, 1, 2 ) }
      :bLClickHeader := { |r,c,f,oCol| If( Len( oBrw:aSelected ) == oBrw:nLen, ;
                                           oBrw:SelectNone(), oBrw:SelectAll() ) }

   END

   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED

   RELEASE FONT oFont

return nil



FUNCTION SaveZoomSetting( oBrw )
	LOCAL cIniFile := c_Path + "PROJECT.INI"


   LOCAL nZoom, i
	local cFontText


	FontToText( oBrw:oFont )

  MEMOWRIT( 'fontsave.txt', cFontText )




   // Schriftgröße speichern
   WritePProString(  "Settings","FontSize", Str( Abs( oBrw:oFont:nHeight ) ), cIniFile )

   // Zeilenhöhe speichern
   WritePProString ( "Settings", "RowHeight", Str( oBrw:nRowHeight ) , cIniFile )

   // Spaltenbreiten speichern
   FOR i := 1 TO Len( oBrw:aCols )
      WritePProString(  "Columns", "Col" + Str(i), Str( oBrw:aCols[i]:nWidth ) , cIniFile )
   NEXT
RETURN NIL


FUNCTION LoadZoomSettings( oBrw )
   LOCAL cIniFile := c_Path + "PROJECT.INI"
   LOCAL i, nWidth

   // Schriftgröße setzen
   LOCAL nFontSize := Val( GetPvProfString( "Settings", "FontSize", "12"  , cIniFile ) )

     oBrw:oFont   :=   FontFromText( MemoRead( 'FONTSAVE.TXT' ) )


   // Zeilenhöhe setzen
   oBrw:nRowHeight := Val( GetPvProfString( "Settings", "RowHeight", "20"  , cIniFile ))

   // Spaltenbreiten wiederherstellen
   FOR i := 1 TO Len( oBrw:aCols )
      nWidth := Val( GetPvProfString( "Columns", "Col" + Str(i), Str(oBrw:aCols[i]:nWidth)  , cIniFile ))
      oBrw:aCols[i]:nWidth := nWidth
   NEXT

   oBrw:Refresh()

RETURN NIL

function FontToText( oFont )
return FW_ValToExp(  { ;
   oFont:cFaceName, 0, oFont:nInpHeight, .f., oFont:lBold, oFont:nEscapement, ;
   oFont:nOrientation, nil, oFont:lItalic, oFont:lUnderline, oFont:lStrikeOut, ;
   oFont:nCharSet, oFont:nOutPrecision, oFont:nClipPrecision, oFont:nQuality, ;
   nil, oFont:nPitchFamily }  )
//----------------------------------------------------------------------------//
function FontFromText( cText )
return HB_ExecFromArray( TFont(), "NEW", &cText )
//----------------------------------------------------------------------------//






]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: adjust zoom in xBrowse :: Reply by INFORMAISVRB]]> 2025-02-27T10:44:41-07:00 2025-02-27T10:44:41-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45444&p=278015#p278015
I'll try it]]>

I'll try it]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: adjust zoom in xBrowse :: Reply by Silvio.Falconi]]> 2025-02-27T13:48:14-07:00 2025-02-27T13:48:14-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45444&p=278018#p278018
Otto wrote: Thu Feb 27, 2025 2:48 pm Hello,
I think it should work approximately like this. In my code, there is still an issue with the correct size of the restored font.
But I’m sure you can solve that.

The principle is: remember the font size, row height, and column widths from XBrowse.
When restarting, the saved values are loaded.
Best regards,
Otto

Code: Select all | Expand


// Using Windows 7 row selection colors in xbrowse

#include 'fivewin.ch'
#include 'xbrowse.ch'


STATIC nLastFontSize := 0
STATIC aLastColWidths := {}
STATIC nLastRowHeight := 0
STATIC c_path

function Main()

   local oDlg, oBrw, oFont

	c_path := cFilePath(GetModuleFileName( GetInstance() ) )
   SET DATE ITALIAN
   SET CENTURY ON

   FwNumFormat( 'E', .t. )

   USE CUSTOMER ALIAS CUST

   DEFINE FONT oFont NAME 'Tahoma' SIZE 0, -16

   DEFINE DIALOG oDlg SIZE 640,440 PIXEL ;
      FONT oFont TITLE 'XBrowse Windows 7 Bars' ;
      COLOR CLR_BLACK,RGB(250,250,250)
          @ 0,20 ;
      BUTTON "SaveZoomSetting" ;
      ACTION SaveZoomSetting( oBrw ) ;
          OF oDlg ;
       PIXEL

      @ 0,120 ;
      BUTTON "LoadZoomSettings" ;
      ACTION LoadZoomSettings( oBrw ) ;
          OF oDlg ;
       PIXEL

   @ 20,20 XBROWSE oBrw OF oDlg SIZE -10,-20 PIXEL ;
      COLUMNS "First", "State", "Age", "HireDate", "Salary" ;
      ALIAS 'CUST' NOBORDER

   oBrw:lRecordSelector := .f.
   oBrw:nMarqueeStyle   := MARQSTYLE_HIGHLWIN7

   WITH OBJECT oBrw:InsCol( 1 )

      :cHeader       := " "
      :bEditValue    := { || If( AScan( oBrw:aSelected, oBrw:BookMark ) > 0, .t., nil ) }
      :SetCheck()
      :nHeadBmpNo    := { || If( Len( oBrw:aSelected ) == oBrw:nLen, 1, 2 ) }
      :bLClickHeader := { |r,c,f,oCol| If( Len( oBrw:aSelected ) == oBrw:nLen, ;
                                           oBrw:SelectNone(), oBrw:SelectAll() ) }

   END

   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED

   RELEASE FONT oFont

return nil



FUNCTION SaveZoomSetting( oBrw )
	LOCAL cIniFile := c_Path + "PROJECT.INI"


   LOCAL nZoom, i
	local cFontText


	FontToText( oBrw:oFont )

  MEMOWRIT( 'fontsave.txt', cFontText )




   // Schriftgröße speichern
   WritePProString(  "Settings","FontSize", Str( Abs( oBrw:oFont:nHeight ) ), cIniFile )

   // Zeilenhöhe speichern
   WritePProString ( "Settings", "RowHeight", Str( oBrw:nRowHeight ) , cIniFile )

   // Spaltenbreiten speichern
   FOR i := 1 TO Len( oBrw:aCols )
      WritePProString(  "Columns", "Col" + Str(i), Str( oBrw:aCols[i]:nWidth ) , cIniFile )
   NEXT
RETURN NIL


FUNCTION LoadZoomSettings( oBrw )
   LOCAL cIniFile := c_Path + "PROJECT.INI"
   LOCAL i, nWidth

   // Schriftgröße setzen
   LOCAL nFontSize := Val( GetPvProfString( "Settings", "FontSize", "12"  , cIniFile ) )

     oBrw:oFont   :=   FontFromText( MemoRead( 'FONTSAVE.TXT' ) )


   // Zeilenhöhe setzen
   oBrw:nRowHeight := Val( GetPvProfString( "Settings", "RowHeight", "20"  , cIniFile ))

   // Spaltenbreiten wiederherstellen
   FOR i := 1 TO Len( oBrw:aCols )
      nWidth := Val( GetPvProfString( "Columns", "Col" + Str(i), Str(oBrw:aCols[i]:nWidth)  , cIniFile ))
      oBrw:aCols[i]:nWidth := nWidth
   NEXT

   oBrw:Refresh()

RETURN NIL

function FontToText( oFont )
return FW_ValToExp(  { ;
   oFont:cFaceName, 0, oFont:nInpHeight, .f., oFont:lBold, oFont:nEscapement, ;
   oFont:nOrientation, nil, oFont:lItalic, oFont:lUnderline, oFont:lStrikeOut, ;
   oFont:nCharSet, oFont:nOutPrecision, oFont:nClipPrecision, oFont:nQuality, ;
   nil, oFont:nPitchFamily }  )
//----------------------------------------------------------------------------//
function FontFromText( cText )
return HB_ExecFromArray( TFont(), "NEW", &cText )
//----------------------------------------------------------------------------//






Otto,
the font problem is an old request of mine from many years ago (long before the meeting in Sillian), but someone preferred not to create a method to save the fonts (header, footer and data) because it was of no use to anyone.
Now in 2015 someone else needs the same thing ....
In my opinion, a method should be made to save the fonts and inserted into the Restorestate() /savestate() methods]]>
Otto wrote: Thu Feb 27, 2025 2:48 pm Hello,
I think it should work approximately like this. In my code, there is still an issue with the correct size of the restored font.
But I’m sure you can solve that.

The principle is: remember the font size, row height, and column widths from XBrowse.
When restarting, the saved values are loaded.
Best regards,
Otto

Code: Select all | Expand


// Using Windows 7 row selection colors in xbrowse

#include 'fivewin.ch'
#include 'xbrowse.ch'


STATIC nLastFontSize := 0
STATIC aLastColWidths := {}
STATIC nLastRowHeight := 0
STATIC c_path

function Main()

   local oDlg, oBrw, oFont

	c_path := cFilePath(GetModuleFileName( GetInstance() ) )
   SET DATE ITALIAN
   SET CENTURY ON

   FwNumFormat( 'E', .t. )

   USE CUSTOMER ALIAS CUST

   DEFINE FONT oFont NAME 'Tahoma' SIZE 0, -16

   DEFINE DIALOG oDlg SIZE 640,440 PIXEL ;
      FONT oFont TITLE 'XBrowse Windows 7 Bars' ;
      COLOR CLR_BLACK,RGB(250,250,250)
          @ 0,20 ;
      BUTTON "SaveZoomSetting" ;
      ACTION SaveZoomSetting( oBrw ) ;
          OF oDlg ;
       PIXEL

      @ 0,120 ;
      BUTTON "LoadZoomSettings" ;
      ACTION LoadZoomSettings( oBrw ) ;
          OF oDlg ;
       PIXEL

   @ 20,20 XBROWSE oBrw OF oDlg SIZE -10,-20 PIXEL ;
      COLUMNS "First", "State", "Age", "HireDate", "Salary" ;
      ALIAS 'CUST' NOBORDER

   oBrw:lRecordSelector := .f.
   oBrw:nMarqueeStyle   := MARQSTYLE_HIGHLWIN7

   WITH OBJECT oBrw:InsCol( 1 )

      :cHeader       := " "
      :bEditValue    := { || If( AScan( oBrw:aSelected, oBrw:BookMark ) > 0, .t., nil ) }
      :SetCheck()
      :nHeadBmpNo    := { || If( Len( oBrw:aSelected ) == oBrw:nLen, 1, 2 ) }
      :bLClickHeader := { |r,c,f,oCol| If( Len( oBrw:aSelected ) == oBrw:nLen, ;
                                           oBrw:SelectNone(), oBrw:SelectAll() ) }

   END

   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED

   RELEASE FONT oFont

return nil



FUNCTION SaveZoomSetting( oBrw )
	LOCAL cIniFile := c_Path + "PROJECT.INI"


   LOCAL nZoom, i
	local cFontText


	FontToText( oBrw:oFont )

  MEMOWRIT( 'fontsave.txt', cFontText )




   // Schriftgröße speichern
   WritePProString(  "Settings","FontSize", Str( Abs( oBrw:oFont:nHeight ) ), cIniFile )

   // Zeilenhöhe speichern
   WritePProString ( "Settings", "RowHeight", Str( oBrw:nRowHeight ) , cIniFile )

   // Spaltenbreiten speichern
   FOR i := 1 TO Len( oBrw:aCols )
      WritePProString(  "Columns", "Col" + Str(i), Str( oBrw:aCols[i]:nWidth ) , cIniFile )
   NEXT
RETURN NIL


FUNCTION LoadZoomSettings( oBrw )
   LOCAL cIniFile := c_Path + "PROJECT.INI"
   LOCAL i, nWidth

   // Schriftgröße setzen
   LOCAL nFontSize := Val( GetPvProfString( "Settings", "FontSize", "12"  , cIniFile ) )

     oBrw:oFont   :=   FontFromText( MemoRead( 'FONTSAVE.TXT' ) )


   // Zeilenhöhe setzen
   oBrw:nRowHeight := Val( GetPvProfString( "Settings", "RowHeight", "20"  , cIniFile ))

   // Spaltenbreiten wiederherstellen
   FOR i := 1 TO Len( oBrw:aCols )
      nWidth := Val( GetPvProfString( "Columns", "Col" + Str(i), Str(oBrw:aCols[i]:nWidth)  , cIniFile ))
      oBrw:aCols[i]:nWidth := nWidth
   NEXT

   oBrw:Refresh()

RETURN NIL

function FontToText( oFont )
return FW_ValToExp(  { ;
   oFont:cFaceName, 0, oFont:nInpHeight, .f., oFont:lBold, oFont:nEscapement, ;
   oFont:nOrientation, nil, oFont:lItalic, oFont:lUnderline, oFont:lStrikeOut, ;
   oFont:nCharSet, oFont:nOutPrecision, oFont:nClipPrecision, oFont:nQuality, ;
   nil, oFont:nPitchFamily }  )
//----------------------------------------------------------------------------//
function FontFromText( cText )
return HB_ExecFromArray( TFont(), "NEW", &cText )
//----------------------------------------------------------------------------//






Otto,
the font problem is an old request of mine from many years ago (long before the meeting in Sillian), but someone preferred not to create a method to save the fonts (header, footer and data) because it was of no use to anyone.
Now in 2015 someone else needs the same thing ....
In my opinion, a method should be made to save the fonts and inserted into the Restorestate() /savestate() methods]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: adjust zoom in xBrowse :: Reply by Silvio.Falconi]]> 2025-03-03T04:16:08-07:00 2025-03-03T04:16:08-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45444&p=278105#p278105

If I put the font on dialog the xbrowse zoom not run

If I rem the font from dialog then xbrowse run ok

Code: Select all | Expand

DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL;   //FONT oFont
         COLOR CLR_BLACK, DLG_nColorDlg  ;
       STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, ;
                  WS_MINIMIZEBOX)   ICON oIcon
Image

I'm working on saving the font, maybe you need to make a change in xbrowse]]>


If I put the font on dialog the xbrowse zoom not run

If I rem the font from dialog then xbrowse run ok

Code: Select all | Expand

DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL;   //FONT oFont
         COLOR CLR_BLACK, DLG_nColorDlg  ;
       STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, ;
                  WS_MINIMIZEBOX)   ICON oIcon
Image

I'm working on saving the font, maybe you need to make a change in xbrowse]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: multi-column popup menu :: Reply by reinaldocrespo]]> 2025-03-02T15:52:18-07:00 2025-03-02T15:52:18-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45334&p=278098#p278098

Code: Select all | Expand

   REDEFINE GET o VAR ::oDbf:VarCNKey ID 104 OF oDlg BITMAP "Search16" 
   o:bAction := { || x := MyPopMnu( oDlg, o:nTop, o:nLeft, ::aContractors ) }
The problem is your MyPopMenu function returns the TMenu object itself I don't see how to use it to determine what was the item picked by the user.

Any ideas?

Thank you.]]>

Code: Select all | Expand

   REDEFINE GET o VAR ::oDbf:VarCNKey ID 104 OF oDlg BITMAP "Search16" 
   o:bAction := { || x := MyPopMnu( oDlg, o:nTop, o:nLeft, ::aContractors ) }
The problem is your MyPopMenu function returns the TMenu object itself I don't see how to use it to determine what was the item picked by the user.

Any ideas?

Thank you.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: multi-column popup menu :: Reply by reinaldocrespo]]> 2025-03-03T07:32:32-07:00 2025-03-03T07:32:32-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45334&p=278109#p278109
I made a small change to Mr Rao's and Mr. Cristobal's function so that I can use it on a get to show a multi-column dropdown list:

Code: Select all | Expand

//----------------------------------------------------------------------------//
Function MyPopMnu( oWnd, nR, nC, aChoices, aHeaders )

   local oPop, oMenuItem 

   MENU oPop POPUP 2015 ;
      SELECT aChoices  COLUMNS 1, 2 HEADERS aHeaders ACTION {|x| oMenuItem := x }  
   ENDMENU
   
   ACTIVATE MENU oPop  AT nR, nC OF oWnd

Return oMenuItem 
That works on my end.

Thank you.]]>

I made a small change to Mr Rao's and Mr. Cristobal's function so that I can use it on a get to show a multi-column dropdown list:

Code: Select all | Expand

//----------------------------------------------------------------------------//
Function MyPopMnu( oWnd, nR, nC, aChoices, aHeaders )

   local oPop, oMenuItem 

   MENU oPop POPUP 2015 ;
      SELECT aChoices  COLUMNS 1, 2 HEADERS aHeaders ACTION {|x| oMenuItem := x }  
   ENDMENU
   
   ACTIVATE MENU oPop  AT nR, nC OF oWnd

Return oMenuItem 
That works on my end.

Thank you.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: text on Report NESCAPEMENT - resolved - :: Author Silvio.Falconi]]> 2025-03-03T11:11:34-07:00 2025-03-03T11:16:35-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45482&p=278114#p278114

I can't move the text from the lower left corner to the upper right corner

DEFINE FONT oFontCopy NAME 'TAHOMA' SIZE 0,-128 OF oRep:oDevice NESCAPEMENT 180

oRep:bEndPage := { || oRep:Say(1, cTextCopy, 2,2,300) }

any help pls]]>


I can't move the text from the lower left corner to the upper right corner

DEFINE FONT oFontCopy NAME 'TAHOMA' SIZE 0,-128 OF oRep:oDevice NESCAPEMENT 180

oRep:bEndPage := { || oRep:Say(1, cTextCopy, 2,2,300) }

any help pls]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: text on Report NESCAPEMENT :: Reply by Silvio.Falconi]]> 2025-03-03T11:16:20-07:00 2025-03-03T11:16:20-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45482&p=278115#p278115 resolved

it isHorizontal and the measurements are backwards

Now is ok

Image]]>
resolved

it isHorizontal and the measurements are backwards

Now is ok

Image]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Have you tried the new Rating class? :: Author Silvio.Falconi]]> 2025-03-03T13:01:58-07:00 2025-03-03T13:01:58-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45484&p=278120#p278120

Suggestions ?]]>


Suggestions ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Html report from dbf :: Author Silvio.Falconi]]> 2025-03-03T16:30:15-07:00 2025-03-03T16:30:15-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45486&p=278123#p278123 this evening I made the save to html ( with My friends Ai)
I insert the buttons for print, save to pdf ,send an email and esc

this is the result



Image]]>
this evening I made the save to html ( with My friends Ai)
I insert the buttons for print, save to pdf ,send an email and esc

this is the result



Image]]>
<![CDATA[FiveWin for Harbour/xHarbour :: fwh25.1 vs fwh 24.4 - RESOLVED - :: Author Silvio.Falconi]]> 2025-03-03T04:34:00-07:00 2025-03-05T06:14:55-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45481&p=278106#p278106 with oldest fwh 24.4 I have this dialog ( see the checkboxes on bottom)

Image


With the new fwh 25.1 I have a strange error ( see the checkboxes at bottom)


Image



any suggestions?]]>
with oldest fwh 24.4 I have this dialog ( see the checkboxes on bottom)

Image


With the new fwh 25.1 I have a strange error ( see the checkboxes at bottom)


Image



any suggestions?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: fwh25.1 vs fwh 24.4 :: Reply by cnavarro]]> 2025-03-05T04:09:17-07:00 2025-03-05T04:09:17-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45481&p=278140#p278140 You use clause TRANSPARENT for checkBox ?
And, please read this topic
viewtopic.php?t=45368]]>
You use clause TRANSPARENT for checkBox ?
And, please read this topic
viewtopic.php?t=45368]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: fwh25.1 vs fwh 24.4 - RESOLVED - :: Reply by Silvio.Falconi]]> 2025-03-05T06:14:45-07:00 2025-03-05T06:14:45-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45481&p=278141#p278141
cnavarro wrote: Wed Mar 05, 2025 11:09 am Dear Silvio
You use clause TRANSPARENT for checkBox ?
And, please read this topic
viewtopic.php?t=45368

yes!!!!!!!!!!!!!!!!!!!!

Now run ok

Image]]>
cnavarro wrote: Wed Mar 05, 2025 11:09 am Dear Silvio
You use clause TRANSPARENT for checkBox ?
And, please read this topic
viewtopic.php?t=45368

yes!!!!!!!!!!!!!!!!!!!!

Now run ok

Image]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: fwh25.1 vs fwh 24.4 - RESOLVED - :: Reply by jose_murugosa]]> 2025-03-05T06:18:00-07:00 2025-03-05T06:18:00-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45481&p=278142#p278142 En la 25.01 en dialog.prg está corregido el error mencionado.

Yo no uso transparencia, así que no lo he chequeado, pero en principio, esa corrección está incluída en la 25.01]]>
En la 25.01 en dialog.prg está corregido el error mencionado.

Yo no uso transparencia, así que no lo he chequeado, pero en principio, esa corrección está incluída en la 25.01]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Windows 11 preview :: Author Rick Lipkin]]> 2025-03-01T08:04:00-07:00 2025-03-01T08:04:00-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278063#p278063 Preview" ... anyone have a work around not to show this screen and send the output directly to view or print .. you have to hit the "PRINT" button to continue .....



Image


Thanks
Rick Lipkin]]>
Preview" ... anyone have a work around not to show this screen and send the output directly to view or print .. you have to hit the "PRINT" button to continue .....



Image


Thanks
Rick Lipkin]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Enrico Maria Giordano]]> 2025-03-01T09:07:52-07:00 2025-03-01T09:07:52-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278069#p278069
Can you provide a little PRG sample showing the problem?]]>

Can you provide a little PRG sample showing the problem?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Enrico Maria Giordano]]> 2025-03-01T09:09:28-07:00 2025-03-01T09:09:28-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278070#p278070 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Rick Lipkin]]> 2025-03-01T10:07:49-07:00 2025-03-01T10:07:49-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278075#p278075
This is a FW application .. I sent it a small application to Antonio and he got the same result ... I do have a self contained app I can send you via HighTail.ocm ... What e-mail address would you like me to sent it to ?

RIck Lipkin]]>

This is a FW application .. I sent it a small application to Antonio and he got the same result ... I do have a self contained app I can send you via HighTail.ocm ... What e-mail address would you like me to sent it to ?

RIck Lipkin]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Enrico Maria Giordano]]> 2025-03-01T10:11:47-07:00 2025-03-01T10:11:47-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278076#p278076
Rick Lipkin wrote: Sat Mar 01, 2025 5:07 pm Enrico

This is a FW application .. I sent it a small application to Antonio and he got the same result ... I do have a self contained app I can send you via HighTail.ocm ... What e-mail address would you like me to sent it to ?

RIck Lipkin
Only if it is a very small PRG sample. My email address is below.]]>
Rick Lipkin wrote: Sat Mar 01, 2025 5:07 pm Enrico

This is a FW application .. I sent it a small application to Antonio and he got the same result ... I do have a self contained app I can send you via HighTail.ocm ... What e-mail address would you like me to sent it to ?

RIck Lipkin
Only if it is a very small PRG sample. My email address is below.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Rick Lipkin]]> 2025-03-01T10:14:54-07:00 2025-03-01T10:14:54-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278077#p278077
e.m.giordano@emagsoftware.it ??

Rick Lipkin]]>

e.m.giordano@emagsoftware.it ??

Rick Lipkin]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Enrico Maria Giordano]]> 2025-03-01T10:15:24-07:00 2025-03-01T10:15:24-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278078#p278078 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Rick Lipkin]]> 2025-03-01T10:19:43-07:00 2025-03-01T10:25:10-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278079#p278079
Roster.exe is the executable and Roster.prg .. compile the Roster.prg and the Dcarew32.res file .. to create Roster.exe to see the behavior and you can review the roster.prg file .. main.prg is not used .. just the Roster.prg and the Dcarew32.res are the two files you need to compile ..]]>

Roster.exe is the executable and Roster.prg .. compile the Roster.prg and the Dcarew32.res file .. to create Roster.exe to see the behavior and you can review the roster.prg file .. main.prg is not used .. just the Roster.prg and the Dcarew32.res are the two files you need to compile ..]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Enrico Maria Giordano]]> 2025-03-01T10:25:06-07:00 2025-03-01T10:25:06-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278080#p278080 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Rick Lipkin]]> 2025-03-01T10:30:36-07:00 2025-03-01T10:30:36-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278082#p278082 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Antonio Linares]]> 2025-03-01T13:24:55-07:00 2025-03-01T13:24:55-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278090#p278090
Do you mean that you don't want that window to appear ?

The one from Windows itself ?]]>

Do you mean that you don't want that window to appear ?

The one from Windows itself ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by karinha]]> 2025-03-02T05:03:40-07:00 2025-03-02T05:03:40-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278094#p278094
The "This app doesn't support print preview" error on Windows 11 can be resolved by updating printer drivers or fixing connection issues.

El error "Esta aplicación no admite la vista previa de impresión" en Windows 11 se puede resolver actualizando los controladores de la impresora o solucionando problemas de conexión.

Regards, saludos.]]>

The "This app doesn't support print preview" error on Windows 11 can be resolved by updating printer drivers or fixing connection issues.

El error "Esta aplicación no admite la vista previa de impresión" en Windows 11 se puede resolver actualizando los controladores de la impresora o solucionando problemas de conexión.

Regards, saludos.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Rick Lipkin]]> 2025-03-03T09:48:30-07:00 2025-03-03T09:48:30-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278111#p278111
karinha ... can you elaborate .. this looks like a Windows 11 issue and not a print driver issue "

If you like I can send you my small self contained sample and see if you get that additional windows 11 screen to go away. just send me your e-mail and I will send you the sample code ..

Rick Lipkin]]>

karinha ... can you elaborate .. this looks like a Windows 11 issue and not a print driver issue "

If you like I can send you my small self contained sample and see if you get that additional windows 11 screen to go away. just send me your e-mail and I will send you the sample code ..

Rick Lipkin]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by karinha]]> 2025-03-03T10:31:46-07:00 2025-03-03T10:31:46-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278112#p278112 Printer Troubleshooter
Go to Settings
Select Update
Select Security Troubleshooter
Select Other Troubleshooters
Locate your printer in the Find and fix other problems section
Click on your printer and select Run the troubleshooter
Follow the on-screen instructions
Update your printer drivers
Check for a newer version of your printer driver
If not, go to the manufacturer's website and download and install the latest driver
Restart your computer and printer
Restart your computer
Turn off the printer, unplug all connected cables, and wait 20 seconds
Reconnect the cables and turn on the printer
Other procedures Restart the Print Spooler service, Reinstall the printer driver, Disable security software, Troubleshoot in a clean boot state, Roll back Windows Update.]]>
Printer Troubleshooter
Go to Settings
Select Update
Select Security Troubleshooter
Select Other Troubleshooters
Locate your printer in the Find and fix other problems section
Click on your printer and select Run the troubleshooter
Follow the on-screen instructions
Update your printer drivers
Check for a newer version of your printer driver
If not, go to the manufacturer's website and download and install the latest driver
Restart your computer and printer
Restart your computer
Turn off the printer, unplug all connected cables, and wait 20 seconds
Reconnect the cables and turn on the printer
Other procedures Restart the Print Spooler service, Reinstall the printer driver, Disable security software, Troubleshoot in a clean boot state, Roll back Windows Update.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by karinha]]> 2025-03-03T10:38:33-07:00 2025-03-03T10:38:33-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278113#p278113
https://www.access-programmers.co.uk/fo ... ng.332413/

Regards, saludos.]]>

https://www.access-programmers.co.uk/fo ... ng.332413/

Regards, saludos.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Antonio Linares]]> 2025-03-03T12:52:18-07:00 2025-03-03T12:52:18-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278119#p278119
Here this code does not show the Windows 11 dialog box:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oPrn

   PRINTER oPrn
      PAGE 
         oPrn:Say( "Hello World!" )
      ENDPAGE   
   ENDPRINTER
   
return nil
]]>

Here this code does not show the Windows 11 dialog box:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oPrn

   PRINTER oPrn
      PAGE 
         oPrn:Say( "Hello World!" )
      ENDPAGE   
   ENDPRINTER
   
return nil
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Rick Lipkin]]> 2025-03-04T06:59:09-07:00 2025-03-04T06:59:09-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278127#p278127
I am trying to make my sample I sent you much easier to compile ... this whole Windows 11 extra page thing is bizarre .. I see in this post some people are saying it is a outdated print driver .. I have my doubts. I have a full day today but I plan on simplifying my sample so you can easily work with it and re-compile ... Thank you so much, I just can't believe I am the first person to find this extra page with windows 11, unless no one is really using windows 11 yet and this behavior just has not shown up yet ..

Rick Lipkin]]>

I am trying to make my sample I sent you much easier to compile ... this whole Windows 11 extra page thing is bizarre .. I see in this post some people are saying it is a outdated print driver .. I have my doubts. I have a full day today but I plan on simplifying my sample so you can easily work with it and re-compile ... Thank you so much, I just can't believe I am the first person to find this extra page with windows 11, unless no one is really using windows 11 yet and this behavior just has not shown up yet ..

Rick Lipkin]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by cnavarro]]> 2025-03-05T03:52:22-07:00 2025-03-05T03:52:22-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278139#p278139 I've been using Windows 11 on all my computers for over a year now, and I've never encountered this problem.
I think the problem may be with the installation of the printer drivers, which could have been caused by the fact that the installation of Windows 11 was not "clean", that is, perhaps Windows 11 had to be installed over the previous installation of Windows 10.]]>
I've been using Windows 11 on all my computers for over a year now, and I've never encountered this problem.
I think the problem may be with the installation of the printer drivers, which could have been caused by the fact that the installation of Windows 11 was not "clean", that is, perhaps Windows 11 had to be installed over the previous installation of Windows 10.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by Rick Lipkin]]> 2025-03-05T07:20:56-07:00 2025-03-05T07:20:56-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278146#p278146
You get the Windows dialog box because you are using "FROM USER" clause. If you remove it, then you don't get it:

PRINTER oPRINT ; // FROM USER

The above fix works on W10 and W11 ..

Rick Lipkin]]>

You get the Windows dialog box because you are using "FROM USER" clause. If you remove it, then you don't get it:

PRINTER oPRINT ; // FROM USER

The above fix works on W10 and W11 ..

Rick Lipkin]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Windows 11 preview :: Reply by karinha]]> 2025-03-05T07:27:28-07:00 2025-03-05T07:27:28-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45477&p=278147#p278147
Regards, saludos.]]>

Regards, saludos.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: I talked With Grok3 :: Author Silvio.Falconi]]> 2025-03-05T16:35:52-07:00 2025-03-05T16:35:52-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45493&p=278168#p278168
Harbour is an open-source and cross-platform compiler that inherits and modernizes the Clipper language, born in the 80s for database-based management applications (especially in DOS). Harbour is designed to be 100% backwards compatible with Clipper, but adds modern features such as:
Support for current operating systems (Windows, Linux, macOS, etc.).

Object-oriented programming (OOP).

Native management of .DBF files (dBase database).

Integration with external libraries and C/C++ code.

Ability to create GUI (graphical user interfaces) and web applications through extensions.

FiveWin, on the other hand, is a commercial library developed by Antonio Linares (the same founder of Harbour) that extends Harbour to create GUI applications on Windows. It is famous for its simplicity and power in bringing the old Clipper code into a modern graphical environment, exploiting the Windows API. With FiveWin you can:
Create windows, dialogs, menus and graphical controls with just a few lines of code.

Maintain compatibility with existing Clipper code.

Develop desktop applications that look native on Windows.

How they work together
Harbour is the "engine" that compiles the code, while FiveWin is the "toolbox" for adding graphical functionality. A Harbour program with FiveWin might look like this (basic example):
harbour

#include "FiveWin.ch"

FUNCTION Main()
LOCAL oWnd

DEFINE WINDOW oWnd TITLE "Hello FiveWin!"
ACTIVATE WINDOW oWnd
RETURN NIL

This code creates a simple window with the title "Hello FiveWin!". Harbour compiles the source into an executable, and FiveWin provides the classes and functions (such as DEFINE WINDOW) for the graphical interface.
Current status (2025)
In 2025, Harbour is still alive thanks to a community of passionate developers, even if it is not mainstream like Python or JavaScript. FiveWin, while commercial, continues to be updated and is mostly used by those who maintain or modernize old Clipper applications. On X, there are still active discussions about Harbour, with users sharing snippets and solutions to integrate it with modern technologies like SQL or web frameworks (e.g. mod_harbour for Apache).
Strengths and limitations
Harbour strengths: Portability, speed (thanks to C compilation), native database management, open-source community.

FiveWin strengths: Ease of creating GUIs on Windows, integration with Harbour, technical support from FiveTech.

Limitations: Narrow niche, sometimes fragmented documentation (especially for Harbour), less appealing to new developers than trendy languages.

Imagine having to develop a fast, reliable and decent GUI management application, without spending a fortune or spending months learning a new ecosystem. Harbour with FiveWin is your secret weapon. If you have ever used Clipper or worked with .DBF databases, you will immediately feel at home: the code is intuitive, the syntax is familiar, and you can reuse what you already know. Harbour is open-source and free, so you don't have to shell out thousands of euros for licenses like with other tools. Then there is FiveWin: with a few lines you can create windows, buttons and menus on Windows, without going crazy with complicated modern frameworks like Qt or Electron. It is lightweight, fast, and gets straight to the point. Compared to trendy languages like Python or C#, it saves you hours of configuration and dependencies: compile, run, and it works. And if you have an old Clipper system to update? With Harbour/FiveWin you can bring it into 2025 without throwing away years of work. It's not a fad, it's a practical solution that saves you time and money."

Targeted examples for specific contexts
Experienced Clipper developer
Argument: "You've spent years perfecting Clipper code for management systems that are still running in companies. Why throw it all away and start over with Python or Java, learning endless libraries, when with Harbour you can take that code, compile it as is, and with FiveWin add a modern graphical interface? It's like giving a second life to your projects, without losing your know-how."

Small business with limited budget
Argument: "Do you want custom software without spending 1000 euros for Xbase++ or paying monthly subscriptions for cloud platforms? Harbour is free, FiveWin is cheap and gives you a solid desktop application that runs on Windows with no recurring costs. Write the code once, and you're done: no servers to maintain or frameworks to update every six months."

Developer considering Python or C#
Argument: "Python is great for AI and C# for enterprise apps, but for a management system with a .DBF database and a graphical interface? You get lost in configurations, external libraries and overhead. With Harbour/FiveWin you get straight to the point: you manage data with native commands like USE and INDEX, and with FiveWin you have a GUI ready in 10 lines. It's faster to develop and lighter to run. Why complicate your life?
]]>
Harbour is an open-source and cross-platform compiler that inherits and modernizes the Clipper language, born in the 80s for database-based management applications (especially in DOS). Harbour is designed to be 100% backwards compatible with Clipper, but adds modern features such as:
Support for current operating systems (Windows, Linux, macOS, etc.).

Object-oriented programming (OOP).

Native management of .DBF files (dBase database).

Integration with external libraries and C/C++ code.

Ability to create GUI (graphical user interfaces) and web applications through extensions.

FiveWin, on the other hand, is a commercial library developed by Antonio Linares (the same founder of Harbour) that extends Harbour to create GUI applications on Windows. It is famous for its simplicity and power in bringing the old Clipper code into a modern graphical environment, exploiting the Windows API. With FiveWin you can:
Create windows, dialogs, menus and graphical controls with just a few lines of code.

Maintain compatibility with existing Clipper code.

Develop desktop applications that look native on Windows.

How they work together
Harbour is the "engine" that compiles the code, while FiveWin is the "toolbox" for adding graphical functionality. A Harbour program with FiveWin might look like this (basic example):
harbour

#include "FiveWin.ch"

FUNCTION Main()
LOCAL oWnd

DEFINE WINDOW oWnd TITLE "Hello FiveWin!"
ACTIVATE WINDOW oWnd
RETURN NIL

This code creates a simple window with the title "Hello FiveWin!". Harbour compiles the source into an executable, and FiveWin provides the classes and functions (such as DEFINE WINDOW) for the graphical interface.
Current status (2025)
In 2025, Harbour is still alive thanks to a community of passionate developers, even if it is not mainstream like Python or JavaScript. FiveWin, while commercial, continues to be updated and is mostly used by those who maintain or modernize old Clipper applications. On X, there are still active discussions about Harbour, with users sharing snippets and solutions to integrate it with modern technologies like SQL or web frameworks (e.g. mod_harbour for Apache).
Strengths and limitations
Harbour strengths: Portability, speed (thanks to C compilation), native database management, open-source community.

FiveWin strengths: Ease of creating GUIs on Windows, integration with Harbour, technical support from FiveTech.

Limitations: Narrow niche, sometimes fragmented documentation (especially for Harbour), less appealing to new developers than trendy languages.

Imagine having to develop a fast, reliable and decent GUI management application, without spending a fortune or spending months learning a new ecosystem. Harbour with FiveWin is your secret weapon. If you have ever used Clipper or worked with .DBF databases, you will immediately feel at home: the code is intuitive, the syntax is familiar, and you can reuse what you already know. Harbour is open-source and free, so you don't have to shell out thousands of euros for licenses like with other tools. Then there is FiveWin: with a few lines you can create windows, buttons and menus on Windows, without going crazy with complicated modern frameworks like Qt or Electron. It is lightweight, fast, and gets straight to the point. Compared to trendy languages like Python or C#, it saves you hours of configuration and dependencies: compile, run, and it works. And if you have an old Clipper system to update? With Harbour/FiveWin you can bring it into 2025 without throwing away years of work. It's not a fad, it's a practical solution that saves you time and money."

Targeted examples for specific contexts
Experienced Clipper developer
Argument: "You've spent years perfecting Clipper code for management systems that are still running in companies. Why throw it all away and start over with Python or Java, learning endless libraries, when with Harbour you can take that code, compile it as is, and with FiveWin add a modern graphical interface? It's like giving a second life to your projects, without losing your know-how."

Small business with limited budget
Argument: "Do you want custom software without spending 1000 euros for Xbase++ or paying monthly subscriptions for cloud platforms? Harbour is free, FiveWin is cheap and gives you a solid desktop application that runs on Windows with no recurring costs. Write the code once, and you're done: no servers to maintain or frameworks to update every six months."

Developer considering Python or C#
Argument: "Python is great for AI and C# for enterprise apps, but for a management system with a .DBF database and a graphical interface? You get lost in configurations, external libraries and overhead. With Harbour/FiveWin you get straight to the point: you manage data with native commands like USE and INDEX, and with FiveWin you have a GUI ready in 10 lines. It's faster to develop and lighter to run. Why complicate your life?
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: I talked With Grok3 :: Reply by Antonio Linares]]> 2025-03-06T00:48:31-07:00 2025-03-06T00:48:31-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45493&p=278173#p278173 ]]> ]]> <![CDATA[FiveWin for Harbour/xHarbour :: harbour behaviour on DIALOG INIT :: Author JoséQuintas]]> 2025-03-05T08:40:01-07:00 2025-03-05T08:40:01-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45490&p=278149#p278149
SYSTEM ERROR
Error BASE/1004 Message not found: TDIALOG:BCODEBLOCK
Called from __ERRRT_SBASE(0)
Called from TDIALOG:ERROR(0)
Called from (b)HBOBJECT(0)
Called from TDIALOG:MSGNOTFOUND(0)
Called from TDIALOG:BCODEBLOCK(0)
Called from (b)DLGTEXTMSGCLASS_EXECUTE(118)
Called from TDIALOG:INITIATE(0)
Called from TDIALOG:HANDLEEVENT(0)
Called from DIALOGBOXINDIRECT(0)
Called from TDIALOG:ACTIVATE(0)
Called from DLGTEXTMSGCLASS:EXECUTE(118)
Called from ZE_FWTEXTMSG(9)
Called from DO(0)
Called from DOPRG(152)
First code, ok no error:

Code: Select all | Expand

PROCEDURE ze_fwTextMsg

   LOCAL oDlgMsg

   oDlgMsg := DlgTextMsgClass():New()
   oDlgMsg:bCodeBlock := { || ThisTest( oDlgMsg ) }
   oDlgMsg:Execute()
Class ok

Code: Select all | Expand

CREATE CLASS DlgTextMsgClass

   VAR xDlg
   ...
   VAR bCodeBlock
   METHOD Execute()
Method Execute() have the "problem"

Code: Select all | Expand

METHOD Execute() CLASS DlgTextMsgClass
...
   IF ::bCodeBlock == Nil
      ACTIVATE DIALOG ::xDlg CENTERED
   ELSE
      ACTIVATE DIALOG ::xDlg CENTERED ;
         ON INIT ( (Self), Eval( ::bCodeBlock ) )
   ENDIF
...
What is the problem ?
ON INIT uses Self as parameter - Self is TDIALOG
Eval( ::bCodeBlock ) uses Self, but uses TDIALOG Class and not DlgTextMsgClass
TDIALOG does not have bCodeBlock.]]>
SYSTEM ERROR
Error BASE/1004 Message not found: TDIALOG:BCODEBLOCK
Called from __ERRRT_SBASE(0)
Called from TDIALOG:ERROR(0)
Called from (b)HBOBJECT(0)
Called from TDIALOG:MSGNOTFOUND(0)
Called from TDIALOG:BCODEBLOCK(0)
Called from (b)DLGTEXTMSGCLASS_EXECUTE(118)
Called from TDIALOG:INITIATE(0)
Called from TDIALOG:HANDLEEVENT(0)
Called from DIALOGBOXINDIRECT(0)
Called from TDIALOG:ACTIVATE(0)
Called from DLGTEXTMSGCLASS:EXECUTE(118)
Called from ZE_FWTEXTMSG(9)
Called from DO(0)
Called from DOPRG(152)
First code, ok no error:

Code: Select all | Expand

PROCEDURE ze_fwTextMsg

   LOCAL oDlgMsg

   oDlgMsg := DlgTextMsgClass():New()
   oDlgMsg:bCodeBlock := { || ThisTest( oDlgMsg ) }
   oDlgMsg:Execute()
Class ok

Code: Select all | Expand

CREATE CLASS DlgTextMsgClass

   VAR xDlg
   ...
   VAR bCodeBlock
   METHOD Execute()
Method Execute() have the "problem"

Code: Select all | Expand

METHOD Execute() CLASS DlgTextMsgClass
...
   IF ::bCodeBlock == Nil
      ACTIVATE DIALOG ::xDlg CENTERED
   ELSE
      ACTIVATE DIALOG ::xDlg CENTERED ;
         ON INIT ( (Self), Eval( ::bCodeBlock ) )
   ENDIF
...
What is the problem ?
ON INIT uses Self as parameter - Self is TDIALOG
Eval( ::bCodeBlock ) uses Self, but uses TDIALOG Class and not DlgTextMsgClass
TDIALOG does not have bCodeBlock.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: harbour behaviour on DIALOG INIT :: Reply by JoséQuintas]]> 2025-03-05T09:14:43-07:00 2025-03-05T09:14:43-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45490&p=278150#p278150 I will made a test using oDlg:bInit.]]> I will made a test using oDlg:bInit.]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: harbour behaviour on DIALOG INIT :: Reply by Antonio Linares]]> 2025-03-05T10:58:36-07:00 2025-03-05T10:58:36-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45490&p=278157#p278157
Please try it this way:

Code: Select all | Expand

METHOD Execute() CLASS DlgTextMsgClass
   local oThis := Self
...
   IF ::bCodeBlock == Nil
      ACTIVATE DIALOG ::xDlg CENTERED
   ELSE
      ACTIVATE DIALOG ::xDlg CENTERED ;
         ON INIT ( (Self), Eval( oThis:bCodeBlock ) )
   ENDIF
...
]]>

Please try it this way:

Code: Select all | Expand

METHOD Execute() CLASS DlgTextMsgClass
   local oThis := Self
...
   IF ::bCodeBlock == Nil
      ACTIVATE DIALOG ::xDlg CENTERED
   ELSE
      ACTIVATE DIALOG ::xDlg CENTERED ;
         ON INIT ( (Self), Eval( oThis:bCodeBlock ) )
   ENDIF
...
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: harbour behaviour on DIALOG INIT :: Reply by JoséQuintas]]> 2025-03-06T07:56:51-07:00 2025-03-06T07:56:51-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45490&p=278179#p278179

Code: Select all | Expand

IF ::bCodeBlock != Nil
   ::xDlg:bInit := ::bCodeBlock
ENDIF   
ACTIVATE DIALOG ::xDLG CENTERED
Thanks.

Note:
Behaviour is created by #xcommand using self as parameter, to be used on codeblock.

Code: Select all | Expand

[{|Self|<uInit>}]
If change this, it may becames incompatible with existing routines.
Souce code looks clearer using bInit.]]>

Code: Select all | Expand

IF ::bCodeBlock != Nil
   ::xDlg:bInit := ::bCodeBlock
ENDIF   
ACTIVATE DIALOG ::xDLG CENTERED
Thanks.

Note:
Behaviour is created by #xcommand using self as parameter, to be used on codeblock.

Code: Select all | Expand

[{|Self|<uInit>}]
If change this, it may becames incompatible with existing routines.
Souce code looks clearer using bInit.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: IA which one? :: Author Ari]]> 2025-03-05T07:49:30-07:00 2025-03-05T07:49:30-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45489&p=278148#p278148
With so many AIs emerging, in your opinion, which one is the most accurate, the one with the most precise response?

And is it free or paid?]]>

With so many AIs emerging, in your opinion, which one is the most accurate, the one with the most precise response?

And is it free or paid?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: IA which one? :: Reply by Silvio.Falconi]]> 2025-03-05T10:40:40-07:00 2025-03-05T10:40:40-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45489&p=278154#p278154

viewtopic.php?t=45486]]>


viewtopic.php?t=45486]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: IA which one? :: Reply by Antonio Linares]]> 2025-03-05T10:46:55-07:00 2025-03-05T10:46:55-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45489&p=278155#p278155
https://x.com/i/grok

It is free (limited to 15 questions every two hours)

We are waiting for its API to be published to build a Class TGrok3 for Harbour/xHarbour]]>

https://x.com/i/grok

It is free (limited to 15 questions every two hours)

We are waiting for its API to be published to build a Class TGrok3 for Harbour/xHarbour]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: IA which one? :: Reply by TimStone]]> 2025-03-05T11:30:32-07:00 2025-03-05T11:30:32-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45489&p=278159#p278159
I do not have ( nor would I ever obtain ) an X subscription. Thus it would not be an option for me ( and I suspect many others ).

I hope you will continue to focus on the alternative options.

Tim]]>

I do not have ( nor would I ever obtain ) an X subscription. Thus it would not be an option for me ( and I suspect many others ).

I hope you will continue to focus on the alternative options.

Tim]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: IA which one? :: Reply by Silvio.Falconi]]> 2025-03-05T12:02:04-07:00 2025-03-05T12:02:04-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45489&p=278162#p278162
Antonio Linares wrote: Wed Mar 05, 2025 5:46 pm Grok 3 is the best AI actually by far:

https://x.com/i/grok

It is free (limited to 15 questions every two hours)

We are waiting for its API to be published to build a Class TGrok3 for Harbour/xHarbour
It was free only for febbrary 2025
It Is the best until now]]>
Antonio Linares wrote: Wed Mar 05, 2025 5:46 pm Grok 3 is the best AI actually by far:

https://x.com/i/grok

It is free (limited to 15 questions every two hours)

We are waiting for its API to be published to build a Class TGrok3 for Harbour/xHarbour
It was free only for febbrary 2025
It Is the best until now]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: IA which one? :: Reply by Antonio Linares]]> 2025-03-05T14:47:15-07:00 2025-03-05T14:47:15-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45489&p=278166#p278166
Actually we provide in FWH Class TOpenAI, TDeepSeek, TGemini and TOllama and we will continue supporting them.

We will add support for more to come: TGrok3 and TSesame, and new ones that may be of interest for all of us :)]]>

Actually we provide in FWH Class TOpenAI, TDeepSeek, TGemini and TOllama and we will continue supporting them.

We will add support for more to come: TGrok3 and TSesame, and new ones that may be of interest for all of us :)]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: IA which one? :: Reply by TimStone]]> 2025-03-06T08:36:12-07:00 2025-03-06T08:36:12-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45489&p=278180#p278180
Currently I am using the Gemini class in FWH and have also tested Deepseek. I will also work with the others. However X as a company is too unstable for me to invest time with their product

Tim]]>

Currently I am using the Gemini class in FWH and have also tested Deepseek. I will also work with the others. However X as a company is too unstable for me to invest time with their product

Tim]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Introducing HDBC – The Ultimate Database Connector for Harbour :: Author Lailton]]> 2025-03-05T10:17:47-07:00 2025-03-05T10:17:47-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45491&p=278152#p278152
I’m excited to introduce Harbour Database Connect (HDBC), a powerful new library developed by Manuel Expósito (Manu)—a highly skilled and sophisticated developer with deep expertise in Harbour at the C level.

HDBC is a cutting-edge library written in C/C++, designed to give Harbour developers unmatched performance and flexibility when connecting to databases. With HDBC, you can seamlessly access PostgreSQL, SQLite, and ODBC, with support for SQL Server and MySQL/MariaDB coming soon—and your support can help accelerate development!

Why Choose HDBC?

✅ High-performance C/C++ core for seamless database interactions
✅ Works with pure Harbour, FiveWin, and modHarbour
✅ Supports Harbour 32-bit & 64-bit (BCC/MSVC) – additional compilers available upon request
✅ Linux support included

Special Offer – Limited Time Promotion!

Order HDBC this month, and you’ll also receive HDO at an exclusive discount! With HDBC + HDO, you’ll get support for:
✔ SQLite, SQLCipher, MySQL, MariaDB, PostgreSQL, ODBC, and HDORDD

Manuel is also offering 1 year of free updates—all for a very affordable price.

📌 Learn more and get started today: https://harbour.blog/hdbc/

If you have any questions, feel free to reach out!

Thank you!]]>

I’m excited to introduce Harbour Database Connect (HDBC), a powerful new library developed by Manuel Expósito (Manu)—a highly skilled and sophisticated developer with deep expertise in Harbour at the C level.

HDBC is a cutting-edge library written in C/C++, designed to give Harbour developers unmatched performance and flexibility when connecting to databases. With HDBC, you can seamlessly access PostgreSQL, SQLite, and ODBC, with support for SQL Server and MySQL/MariaDB coming soon—and your support can help accelerate development!

Why Choose HDBC?

✅ High-performance C/C++ core for seamless database interactions
✅ Works with pure Harbour, FiveWin, and modHarbour
✅ Supports Harbour 32-bit & 64-bit (BCC/MSVC) – additional compilers available upon request
✅ Linux support included

Special Offer – Limited Time Promotion!

Order HDBC this month, and you’ll also receive HDO at an exclusive discount! With HDBC + HDO, you’ll get support for:
✔ SQLite, SQLCipher, MySQL, MariaDB, PostgreSQL, ODBC, and HDORDD

Manuel is also offering 1 year of free updates—all for a very affordable price.

📌 Learn more and get started today: https://harbour.blog/hdbc/

If you have any questions, feel free to reach out!

Thank you!]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Introducing HDBC – The Ultimate Database Connector for Harbour :: Reply by Massimo Linossi]]> 2025-03-05T11:23:50-07:00 2025-03-05T11:23:50-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45491&p=278158#p278158 This library can be used with Harbour in Linux ?
And is there the possibility to test it ?
Thanks a lot
Massimo]]>
This library can be used with Harbour in Linux ?
And is there the possibility to test it ?
Thanks a lot
Massimo]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Introducing HDBC – The Ultimate Database Connector for Harbour :: Reply by Lailton]]> 2025-03-05T12:15:44-07:00 2025-03-05T12:15:44-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45491&p=278163#p278163
Yes, it can be used with Harbour in Linux OS.
After you order it you can contact me and I can provide you lib for linux and any help you need.

There's no a demo version :( but I can grant you quality product.
I have the HDO up running for years on iOS/Android/Mac/Linux/Windows and HDBC follow same idea :D]]>

Yes, it can be used with Harbour in Linux OS.
After you order it you can contact me and I can provide you lib for linux and any help you need.

There's no a demo version :( but I can grant you quality product.
I have the HDO up running for years on iOS/Android/Mac/Linux/Windows and HDBC follow same idea :D]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Introducing HDBC – The Ultimate Database Connector for Harbour :: Reply by xmanuel]]> 2025-03-06T17:32:22-07:00 2025-03-06T17:32:22-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45491&p=278191#p278191 viewtopic.php?p=278189#p278189]]> viewtopic.php?p=278189#p278189]]> <![CDATA[FiveWin for Harbour/xHarbour :: FW_Saveimage() memory leak issue *Fixed* :: Author dutch]]> 2025-03-04T10:09:26-07:00 2025-03-08T06:35:36-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278130#p278130
I use below function to reduce image size and quality but I use multiple image (1000). This procedure consume memory almost 2Gb and got an error
"Unrecoverable error 90006 hb_xgrab can't allocate memory"
How to solve this issue? Thank you in advance.
Image
*-----------------------------------*
FUNCTION SaveImage( cFile, cNewFile )
local oImage
local aImg, nQuality

nQuality := iif(filesize(cFile)>200000,15, iif(filesize(cFile)>150000, 20, 25 ))

if filesize(cFile) >= 32768 // 65536

oImage := GdiBmp():New( cFile )
oImage:Resize( oImage:GetWidth()/1.3, oImage:GetHeight()/1.3 )
oImage:Save( cNewFile )
oImage:End()

aImg := Fw_ReadImage( nil, cFile )
FW_SaveImage( aImg[ 1 ], cNewFile, nQuality )
PalBmpFree( aImg )

Memory( -1 )

end
Return nil
]]>

I use below function to reduce image size and quality but I use multiple image (1000). This procedure consume memory almost 2Gb and got an error
"Unrecoverable error 90006 hb_xgrab can't allocate memory"
How to solve this issue? Thank you in advance.
Image
*-----------------------------------*
FUNCTION SaveImage( cFile, cNewFile )
local oImage
local aImg, nQuality

nQuality := iif(filesize(cFile)>200000,15, iif(filesize(cFile)>150000, 20, 25 ))

if filesize(cFile) >= 32768 // 65536

oImage := GdiBmp():New( cFile )
oImage:Resize( oImage:GetWidth()/1.3, oImage:GetHeight()/1.3 )
oImage:Save( cNewFile )
oImage:End()

aImg := Fw_ReadImage( nil, cFile )
FW_SaveImage( aImg[ 1 ], cNewFile, nQuality )
PalBmpFree( aImg )

Memory( -1 )

end
Return nil
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by Antonio Linares]]> 2025-03-04T11:23:44-07:00 2025-03-04T11:23:44-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278132#p278132
Please replace Memory( -1 ) with:

SysRefresh()
hb_gcAll()]]>

Please replace Memory( -1 ) with:

SysRefresh()
hb_gcAll()]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by dutch]]> 2025-03-04T19:17:49-07:00 2025-03-04T19:17:49-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278135#p278135
I replaced as your recommend but It does not help. I try to resize the image for 500 images. The memory was started is 40MB and after resized take 1,400MB.
Antonio Linares wrote: Tue Mar 04, 2025 6:23 pm Dear Dutch,

Please replace Memory( -1 ) with:

SysRefresh()
hb_gcAll()
]]>

I replaced as your recommend but It does not help. I try to resize the image for 500 images. The memory was started is 40MB and after resized take 1,400MB.
Antonio Linares wrote: Tue Mar 04, 2025 6:23 pm Dear Dutch,

Please replace Memory( -1 ) with:

SysRefresh()
hb_gcAll()
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by Antonio Linares]]> 2025-03-04T23:53:38-07:00 2025-03-04T23:53:38-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278137#p278137
many thanks for your feedback.

Ok, first lets try to identify where the memory leak comes from.

Please comment out this section and run your code again:

Code: Select all | Expand

/* oImage := GdiBmp():New( cFile )
oImage:Resize( oImage:GetWidth()/1.3, oImage:GetHeight()/1.3 )
oImage:Save( cNewFile )
oImage:End()
*/
waiting for your news]]>

many thanks for your feedback.

Ok, first lets try to identify where the memory leak comes from.

Please comment out this section and run your code again:

Code: Select all | Expand

/* oImage := GdiBmp():New( cFile )
oImage:Resize( oImage:GetWidth()/1.3, oImage:GetHeight()/1.3 )
oImage:Save( cNewFile )
oImage:End()
*/
waiting for your news]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by cnavarro]]> 2025-03-05T03:44:11-07:00 2025-03-05T03:44:11-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278138#p278138 This code run ok for me
I have tried many files and have not found any problems
I have not needed to clear the memory
Can you send me one of the files you are using for testing?

Code: Select all | Expand

#include "fivewin.ch"

Function Main()

   // SaveImage( "olga1.jpg", "olga2.jpg", "olga3.jpg" )
   SaveImage( "fivedit.jpg", "fivedit2.jpg", "fivedit3.jpg" )
   

Return nil


FUNCTION SaveImage( cFile, cNewFile, cOtherFile )
local oImage
local aImg
local nQuality

nQuality := iif(filesize(cFile)>200000,15, iif(filesize(cFile)>150000, 20, 25 ))

// if filesize(cFile) >= 32768 // 65536

   oImage := GdiBmp():New( cFile )
   // ? oImage:GetWidth()
   oImage:Resize( oImage:GetWidth()/1.3, oImage:GetHeight()/1.3 )
   oImage:Save( cNewFile )
   oImage:End()

   aImg := Fw_ReadImage( nil, cFile )
   // xbrowse( aImg )
   FW_SaveImage( aImg[ 1 ], cOtherFile, nQuality )
   PalBmpFree( aImg )

   // Memory( -1 )

// end
Return nil

]]>
This code run ok for me
I have tried many files and have not found any problems
I have not needed to clear the memory
Can you send me one of the files you are using for testing?

Code: Select all | Expand

#include "fivewin.ch"

Function Main()

   // SaveImage( "olga1.jpg", "olga2.jpg", "olga3.jpg" )
   SaveImage( "fivedit.jpg", "fivedit2.jpg", "fivedit3.jpg" )
   

Return nil


FUNCTION SaveImage( cFile, cNewFile, cOtherFile )
local oImage
local aImg
local nQuality

nQuality := iif(filesize(cFile)>200000,15, iif(filesize(cFile)>150000, 20, 25 ))

// if filesize(cFile) >= 32768 // 65536

   oImage := GdiBmp():New( cFile )
   // ? oImage:GetWidth()
   oImage:Resize( oImage:GetWidth()/1.3, oImage:GetHeight()/1.3 )
   oImage:Save( cNewFile )
   oImage:End()

   aImg := Fw_ReadImage( nil, cFile )
   // xbrowse( aImg )
   FW_SaveImage( aImg[ 1 ], cOtherFile, nQuality )
   PalBmpFree( aImg )

   // Memory( -1 )

// end
Return nil

]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by dutch]]> 2025-03-05T06:48:50-07:00 2025-03-05T06:48:50-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278143#p278143
I tested with your recommend, it's still memory leak.
Antonio Linares wrote: Wed Mar 05, 2025 6:53 am Dear Dutch,

many thanks for your feedback.

Ok, first lets try to identify where the memory leak comes from.

Please comment out this section and run your code again:

Code: Select all | Expand

/* oImage := GdiBmp():New( cFile )
oImage:Resize( oImage:GetWidth()/1.3, oImage:GetHeight()/1.3 )
oImage:Save( cNewFile )
oImage:End()
*/
waiting for your news
]]>

I tested with your recommend, it's still memory leak.
Antonio Linares wrote: Wed Mar 05, 2025 6:53 am Dear Dutch,

many thanks for your feedback.

Ok, first lets try to identify where the memory leak comes from.

Please comment out this section and run your code again:

Code: Select all | Expand

/* oImage := GdiBmp():New( cFile )
oImage:Resize( oImage:GetWidth()/1.3, oImage:GetHeight()/1.3 )
oImage:Save( cNewFile )
oImage:End()
*/
waiting for your news
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by dutch]]> 2025-03-05T06:54:13-07:00 2025-03-05T06:54:13-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278144#p278144
It will effect when you run with 1000 records as below.

Code: Select all | Expand

do while !oRs:eof()
     Downloadfile( oRs:image, cFile )  // function download file from oRs (blob in MariaDb)
     SaveImage( cFile, cNewFile )
     oRs:Skip()
end
I will make small sample and send to you all for testing.

Thanks in advance,
cnavarro wrote: Wed Mar 05, 2025 10:44 am Dear Dutch
This code run ok for me
I have tried many files and have not found any problems
I have not needed to clear the memory
Can you send me one of the files you are using for testing?

Code: Select all | Expand

#include "fivewin.ch"

Function Main()

   // SaveImage( "olga1.jpg", "olga2.jpg", "olga3.jpg" )
   SaveImage( "fivedit.jpg", "fivedit2.jpg", "fivedit3.jpg" )
   

Return nil


FUNCTION SaveImage( cFile, cNewFile, cOtherFile )
local oImage
local aImg
local nQuality

nQuality := iif(filesize(cFile)>200000,15, iif(filesize(cFile)>150000, 20, 25 ))

// if filesize(cFile) >= 32768 // 65536

   oImage := GdiBmp():New( cFile )
   // ? oImage:GetWidth()
   oImage:Resize( oImage:GetWidth()/1.3, oImage:GetHeight()/1.3 )
   oImage:Save( cNewFile )
   oImage:End()

   aImg := Fw_ReadImage( nil, cFile )
   // xbrowse( aImg )
   FW_SaveImage( aImg[ 1 ], cOtherFile, nQuality )
   PalBmpFree( aImg )

   // Memory( -1 )

// end
Return nil

]]>

It will effect when you run with 1000 records as below.

Code: Select all | Expand

do while !oRs:eof()
     Downloadfile( oRs:image, cFile )  // function download file from oRs (blob in MariaDb)
     SaveImage( cFile, cNewFile )
     oRs:Skip()
end
I will make small sample and send to you all for testing.

Thanks in advance,
cnavarro wrote: Wed Mar 05, 2025 10:44 am Dear Dutch
This code run ok for me
I have tried many files and have not found any problems
I have not needed to clear the memory
Can you send me one of the files you are using for testing?

Code: Select all | Expand

#include "fivewin.ch"

Function Main()

   // SaveImage( "olga1.jpg", "olga2.jpg", "olga3.jpg" )
   SaveImage( "fivedit.jpg", "fivedit2.jpg", "fivedit3.jpg" )
   

Return nil


FUNCTION SaveImage( cFile, cNewFile, cOtherFile )
local oImage
local aImg
local nQuality

nQuality := iif(filesize(cFile)>200000,15, iif(filesize(cFile)>150000, 20, 25 ))

// if filesize(cFile) >= 32768 // 65536

   oImage := GdiBmp():New( cFile )
   // ? oImage:GetWidth()
   oImage:Resize( oImage:GetWidth()/1.3, oImage:GetHeight()/1.3 )
   oImage:Save( cNewFile )
   oImage:End()

   aImg := Fw_ReadImage( nil, cFile )
   // xbrowse( aImg )
   FW_SaveImage( aImg[ 1 ], cOtherFile, nQuality )
   PalBmpFree( aImg )

   // Memory( -1 )

// end
Return nil

]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by karinha]]> 2025-03-05T07:13:06-07:00 2025-03-05T07:13:06-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278145#p278145

Code: Select all | Expand

// C:\FWH\SAMPLES\DUTCH1.PRG

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL cFile    := "..\BitMaps\OLGA1.jpg"
   LOCAL cNewFile := "C:\TMP\OLGANEW.jpg"

   HB_GCALL( .F. )

   CLEAR MEMORY // Optional

   SaveImage( cFile, cNewFile )

RETURN NIL

FUNCTION SaveImage( cFile, cNewFile )

   LOCAL oImage
   LOCAL aImg, nQuality

   nQuality := IIF( Filesize( cFile ) > 200000, 15, ;
               IIF( Filesize( cFile ) > 150000, 20, 25 ) )

   IF Filesize( cFile ) >= 32768 // 65536

      oImage := GdiBmp():New( cFile )

      oImage:Resize( oImage:GetWidth() / 1.3, oImage:GetHeight() / 1.3 )
      oImage:Save( cNewFile )

      oImage:End()

      SYSREFRESH()

      aImg := Fw_ReadImage( NIL, cFile )

      FW_SaveImage( aImg[ 1 ], cNewFile, nQuality )

      PalBmpFree( aImg )

   ENDIF

   HB_GCALL( .T. )

   CLEAR MEMORY

   IF FILE( "C:\TMP\OLGANEW.JPG" )

      ? "Listo, Done! check your image file if it is not corrupt!"

   ENDIF

RETURN NIL

// FIN / END
Regards, saludos.]]>

Code: Select all | Expand

// C:\FWH\SAMPLES\DUTCH1.PRG

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL cFile    := "..\BitMaps\OLGA1.jpg"
   LOCAL cNewFile := "C:\TMP\OLGANEW.jpg"

   HB_GCALL( .F. )

   CLEAR MEMORY // Optional

   SaveImage( cFile, cNewFile )

RETURN NIL

FUNCTION SaveImage( cFile, cNewFile )

   LOCAL oImage
   LOCAL aImg, nQuality

   nQuality := IIF( Filesize( cFile ) > 200000, 15, ;
               IIF( Filesize( cFile ) > 150000, 20, 25 ) )

   IF Filesize( cFile ) >= 32768 // 65536

      oImage := GdiBmp():New( cFile )

      oImage:Resize( oImage:GetWidth() / 1.3, oImage:GetHeight() / 1.3 )
      oImage:Save( cNewFile )

      oImage:End()

      SYSREFRESH()

      aImg := Fw_ReadImage( NIL, cFile )

      FW_SaveImage( aImg[ 1 ], cNewFile, nQuality )

      PalBmpFree( aImg )

   ENDIF

   HB_GCALL( .T. )

   CLEAR MEMORY

   IF FILE( "C:\TMP\OLGANEW.JPG" )

      ? "Listo, Done! check your image file if it is not corrupt!"

   ENDIF

RETURN NIL

// FIN / END
Regards, saludos.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by dutch]]> 2025-03-05T09:28:50-07:00 2025-03-05T09:28:50-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278151#p278151
This link contain sql (mysql) database and sample code.

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

This my sample as below.
#include 'FiveWin.ch'

static oWnd, oServer
static cCurDir, cTempPath

*-------------------------*
Function Main
local oBtn, oErr

Public oFont
Public cDatabase

cDatabase := 'backup'

FW_SetUnicode( .T. )

MYSQL_TinyIntAsLogical( .T. )

SET EPOCH TO year(date())-90
SET DATE FORMAT TO 'DD/MM/YY'
SET TIME FORMAT TO 'hh:mm:ss'
SET DATE BRITISH

TRY

FWCONNECT oServer HOST '127.0.0.1' USER 'admin' PASSWORD 'nimda' DATABASE cDatabase PORT 3306

CATCH oErr

MsgStop( hb_dumpvar( oErr ) )

return nil

END

oFont := TFont():New( 'Tahoma',, -14, .F., .F., 0, 0, 400, .F., .F., .F., 222, 3, 2, 1, , 34 )

cCurDir := curdrive()+':\'+curdir()+'\'

if !lIsDir(cCurDir+'TEMP')
lMkDir(cCurDir+'TEMP')
endif

cTempPath := cCurDir+'TEMP\'

DEFINE WINDOW oWnd FROM 0, 0 TO 400, 600 PIXEL TITLE 'Test Resize Image'

oWnd:SetFont( oFont )

@ 100, 100 BUTTON oBtn PROMPT 'Run Now' SIZE 80, 40 PIXEL ACTION ReSizeGstImg() // TestBrow() //

ACTIVATE WINDOW oWNd CENTER

return nil

//*------------------------*
//Procedure TestBrow
//local GSI
//GSI := oServer:RowSet('SELECT * FROM gstimg ')
//
//XBROWSER GSI
//
//GSI:Close()
//return

*---------------------------*
Procedure ReSizeGstImg()
local nStart, nEnd

nStart := nEnd := 0

GetImgId( @nStart, @nEnd )

if nStart > 0 .and. nEnd > nStart
if MsgYesNo('Start Resize Guest Image?')

MsgMeter2( {|oMeter, oText, oDlg, lEnd| ResizeImgNow( oMeter, nStart, nEnd ) }, 'Guest', "Resize Process" )

MsgWait("Resize Guest Image complete",,2)

end
end
return


*---------------------------------------------*
Procedure ResizeImgNow(oMeter, nStart, nEnd )
local GSI
local cTempFile, cTmpFile, cFileName, nTry, nTotalRec, nPer, n

nPer := 9
n := 0

GSI := oServer:RowSet('SELECT * FROM gstimg WHERE gsi_id>='+ltrim(str(nStart))+' and gsi_id<='+ltrim(str(nEnd)))

if (nTotalRec := GSI:KeyCount()) > 0
do while !GSI:eof()
n++
cTmpFile := cTempPath+ltrim(str(GSI:gsi_id))+'B.JPG'
cTempFile := cTempPath+ltrim(str(GSI:gsi_id))+'A.JPG'

DownloadFile( GSI, 'gsi_image1', cTempFile )

if file(cTempFile)
if filesize(cTempFile) > 32768
nTry := 0

Saveimage( cTempFile, cTmpFile )

Memory( -1 )

cFileName := StrTran( cTmpFile, '\', '/' )

oServer:Execute('UPDATE gstimg SET gsi_image1=LOAD_FILE("'+cFileName+'") WHERE gsi_id='+ltrim(str(GSI:gsi_id)))

end

end

GSI:Skip()

if ((n*100)/nTotalRec) > nPer
nPer += 10
oMeter:SetPos( nPer )
end
SysRefresh()

end
GSI:Close()
end

return


*-----------------------------------*
FUNCTION SaveImage( cFile, cNewFile )
local oImage
local aImg, nQuality, nMultiple

nQuality := iif(filesize(cFile)>200000,15, iif(filesize(cFile)>150000, 20, 25 ))

oImage := GdiBmp():New( cFile )
nMultiple:= 1-round((oImage:GetWidth()-800)/(oImage:GetWidth()),2)
oImage:Resize( oImage:GetWidth()*nMultiple, oImage:GetHeight()*nMultiple )
oImage:Save( cNewFile )
oImage:End()

aImg := Fw_ReadImage( nil, cNewFile )
FW_SaveImage( aImg[ 1 ], cNewFile, nQuality )
PalBmpFree( aImg )


return nil

*---------------------------------*
Procedure GetImgId( nStart, nEnd )
local oDlg, oGet[2], oSay, oBtn
local nNum1, nNum2, lSave

lSave := .F.
nNum1 := 0
nNum2 := 0

DEFINE DIALOG oDlg FROM 0, 0 TO 100, 320 PIXEL TITLE 'Guest Image Id' ;
FONT MEMVAR->oFont

oDlg:lHelpIcon := .F.

@ 12,10 SAY oSay PROMPT 'Start Id' SIZE 50, 13 PIXEL OF oDlg
@ 30,10 SAY oSay PROMPT 'End Id' SIZE 50, 13 PIXEL OF oDlg

@ 10,60 GET oGet[1] VAR nNum1 SIZE 50, 13 PIXEL OF oDlg VALID nNum1 > 0 ;
PICTURE '9999999999' ;
RIGHT
@ 28,60 GET oGet[2] VAR nNum2 SIZE 50, 13 PIXEL OF oDlg VALID nNum2 > 0 .and. nNum2 > nNum1;
PICTURE '9999999999' ;
RIGHT

@ 10,115 BUTTON oBtn PROMPT 'Save' SIZE 40, 30 PIXEL OF oDlg ;
ACTION (lSave := .T. , oDlg:End())

ACTIVATE DIALOG oDlg CENTER

if lSave
nStart:= nNum1
nEnd := nNum2
else
nStart:= 0
nEnd := 0
end

return

*---------------------------------------------------------------------------*
Procedure DownloadFile( oRs, cFieldName, cFileName )
local nBufSize, cBuffer, hTarget, oFile, cDateTime

cDateTime := ''

if file(cFileName)

ferase(cFileName)

end
if !empty(oRs:FieldGet(cFieldName)) .and. !file(cFileName)

Memory( -1 )

nBufSize:=10485760
cBuffer:=Space(nBufSize)

hTarget := FCreate(cFileName)
oFile := oRs:FieldGet(cFieldName)
FWrite( hTarget, oFile )

FClose( hTarget )

end

return

*----------------------------------------------------*
function MsgMeter2( bAction, cMsg, cTitle, lBoton )
local oDlg, oMeter, oBtn //, oFont
local lEnd := .f., lCancel := .f.
local nVal := 0

DEFAULT bAction := { || nil },;
cMsg := "Progressing...", cTitle := "Progress Bar",;
lBoton := .f.

Private oText

DEFINE DIALOG oDlg FROM 1, 1 TO 120, 340 PIXEL TITLE cTitle ;
FONT MEMVAR->oFont

oDlg:lHelpIcon := .F.

@ 10, 10 SAY oText VAR cMsg SIZE 130, 9 OF oDlg PIXEL
@ 30, 10 PROGRESS oMeter SIZE 150, 12 OF oDlg PIXEL


if lBoton
@ 50, 200 BUTTON oBtn PROMPT "Cancel" OF oDlg ;
ACTION ( lEnd:= .t., lCancel:= .t. ) SIZE 40, 15 PIXEL
endif

oDlg:bStart = { || Eval( bAction, oMeter, oText, oDlg, @lEnd, oBtn ),;
lEnd := .t., oDlg:End() }

ACTIVATE DIALOG oDlg CENTERED ;
ON INIT (oMeter:SetRange( 0, 100 ), oMeter:SetStep( 1 )) ;
VALID lEnd

return lCancel
Thank you in advance,]]>

This link contain sql (mysql) database and sample code.

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

This my sample as below.
#include 'FiveWin.ch'

static oWnd, oServer
static cCurDir, cTempPath

*-------------------------*
Function Main
local oBtn, oErr

Public oFont
Public cDatabase

cDatabase := 'backup'

FW_SetUnicode( .T. )

MYSQL_TinyIntAsLogical( .T. )

SET EPOCH TO year(date())-90
SET DATE FORMAT TO 'DD/MM/YY'
SET TIME FORMAT TO 'hh:mm:ss'
SET DATE BRITISH

TRY

FWCONNECT oServer HOST '127.0.0.1' USER 'admin' PASSWORD 'nimda' DATABASE cDatabase PORT 3306

CATCH oErr

MsgStop( hb_dumpvar( oErr ) )

return nil

END

oFont := TFont():New( 'Tahoma',, -14, .F., .F., 0, 0, 400, .F., .F., .F., 222, 3, 2, 1, , 34 )

cCurDir := curdrive()+':\'+curdir()+'\'

if !lIsDir(cCurDir+'TEMP')
lMkDir(cCurDir+'TEMP')
endif

cTempPath := cCurDir+'TEMP\'

DEFINE WINDOW oWnd FROM 0, 0 TO 400, 600 PIXEL TITLE 'Test Resize Image'

oWnd:SetFont( oFont )

@ 100, 100 BUTTON oBtn PROMPT 'Run Now' SIZE 80, 40 PIXEL ACTION ReSizeGstImg() // TestBrow() //

ACTIVATE WINDOW oWNd CENTER

return nil

//*------------------------*
//Procedure TestBrow
//local GSI
//GSI := oServer:RowSet('SELECT * FROM gstimg ')
//
//XBROWSER GSI
//
//GSI:Close()
//return

*---------------------------*
Procedure ReSizeGstImg()
local nStart, nEnd

nStart := nEnd := 0

GetImgId( @nStart, @nEnd )

if nStart > 0 .and. nEnd > nStart
if MsgYesNo('Start Resize Guest Image?')

MsgMeter2( {|oMeter, oText, oDlg, lEnd| ResizeImgNow( oMeter, nStart, nEnd ) }, 'Guest', "Resize Process" )

MsgWait("Resize Guest Image complete",,2)

end
end
return


*---------------------------------------------*
Procedure ResizeImgNow(oMeter, nStart, nEnd )
local GSI
local cTempFile, cTmpFile, cFileName, nTry, nTotalRec, nPer, n

nPer := 9
n := 0

GSI := oServer:RowSet('SELECT * FROM gstimg WHERE gsi_id>='+ltrim(str(nStart))+' and gsi_id<='+ltrim(str(nEnd)))

if (nTotalRec := GSI:KeyCount()) > 0
do while !GSI:eof()
n++
cTmpFile := cTempPath+ltrim(str(GSI:gsi_id))+'B.JPG'
cTempFile := cTempPath+ltrim(str(GSI:gsi_id))+'A.JPG'

DownloadFile( GSI, 'gsi_image1', cTempFile )

if file(cTempFile)
if filesize(cTempFile) > 32768
nTry := 0

Saveimage( cTempFile, cTmpFile )

Memory( -1 )

cFileName := StrTran( cTmpFile, '\', '/' )

oServer:Execute('UPDATE gstimg SET gsi_image1=LOAD_FILE("'+cFileName+'") WHERE gsi_id='+ltrim(str(GSI:gsi_id)))

end

end

GSI:Skip()

if ((n*100)/nTotalRec) > nPer
nPer += 10
oMeter:SetPos( nPer )
end
SysRefresh()

end
GSI:Close()
end

return


*-----------------------------------*
FUNCTION SaveImage( cFile, cNewFile )
local oImage
local aImg, nQuality, nMultiple

nQuality := iif(filesize(cFile)>200000,15, iif(filesize(cFile)>150000, 20, 25 ))

oImage := GdiBmp():New( cFile )
nMultiple:= 1-round((oImage:GetWidth()-800)/(oImage:GetWidth()),2)
oImage:Resize( oImage:GetWidth()*nMultiple, oImage:GetHeight()*nMultiple )
oImage:Save( cNewFile )
oImage:End()

aImg := Fw_ReadImage( nil, cNewFile )
FW_SaveImage( aImg[ 1 ], cNewFile, nQuality )
PalBmpFree( aImg )


return nil

*---------------------------------*
Procedure GetImgId( nStart, nEnd )
local oDlg, oGet[2], oSay, oBtn
local nNum1, nNum2, lSave

lSave := .F.
nNum1 := 0
nNum2 := 0

DEFINE DIALOG oDlg FROM 0, 0 TO 100, 320 PIXEL TITLE 'Guest Image Id' ;
FONT MEMVAR->oFont

oDlg:lHelpIcon := .F.

@ 12,10 SAY oSay PROMPT 'Start Id' SIZE 50, 13 PIXEL OF oDlg
@ 30,10 SAY oSay PROMPT 'End Id' SIZE 50, 13 PIXEL OF oDlg

@ 10,60 GET oGet[1] VAR nNum1 SIZE 50, 13 PIXEL OF oDlg VALID nNum1 > 0 ;
PICTURE '9999999999' ;
RIGHT
@ 28,60 GET oGet[2] VAR nNum2 SIZE 50, 13 PIXEL OF oDlg VALID nNum2 > 0 .and. nNum2 > nNum1;
PICTURE '9999999999' ;
RIGHT

@ 10,115 BUTTON oBtn PROMPT 'Save' SIZE 40, 30 PIXEL OF oDlg ;
ACTION (lSave := .T. , oDlg:End())

ACTIVATE DIALOG oDlg CENTER

if lSave
nStart:= nNum1
nEnd := nNum2
else
nStart:= 0
nEnd := 0
end

return

*---------------------------------------------------------------------------*
Procedure DownloadFile( oRs, cFieldName, cFileName )
local nBufSize, cBuffer, hTarget, oFile, cDateTime

cDateTime := ''

if file(cFileName)

ferase(cFileName)

end
if !empty(oRs:FieldGet(cFieldName)) .and. !file(cFileName)

Memory( -1 )

nBufSize:=10485760
cBuffer:=Space(nBufSize)

hTarget := FCreate(cFileName)
oFile := oRs:FieldGet(cFieldName)
FWrite( hTarget, oFile )

FClose( hTarget )

end

return

*----------------------------------------------------*
function MsgMeter2( bAction, cMsg, cTitle, lBoton )
local oDlg, oMeter, oBtn //, oFont
local lEnd := .f., lCancel := .f.
local nVal := 0

DEFAULT bAction := { || nil },;
cMsg := "Progressing...", cTitle := "Progress Bar",;
lBoton := .f.

Private oText

DEFINE DIALOG oDlg FROM 1, 1 TO 120, 340 PIXEL TITLE cTitle ;
FONT MEMVAR->oFont

oDlg:lHelpIcon := .F.

@ 10, 10 SAY oText VAR cMsg SIZE 130, 9 OF oDlg PIXEL
@ 30, 10 PROGRESS oMeter SIZE 150, 12 OF oDlg PIXEL


if lBoton
@ 50, 200 BUTTON oBtn PROMPT "Cancel" OF oDlg ;
ACTION ( lEnd:= .t., lCancel:= .t. ) SIZE 40, 15 PIXEL
endif

oDlg:bStart = { || Eval( bAction, oMeter, oText, oDlg, @lEnd, oBtn ),;
lEnd := .t., oDlg:End() }

ACTIVATE DIALOG oDlg CENTERED ;
ON INIT (oMeter:SetRange( 0, 100 ), oMeter:SetStep( 1 )) ;
VALID lEnd

return lCancel
Thank you in advance,]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by Antonio Linares]]> 2025-03-05T10:54:08-07:00 2025-03-05T10:54:08-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278156#p278156
Could you please comment this line and try it again ? Trying to locate the memory leak, thanks

// keep commented the above code

aImg := Fw_ReadImage( nil, cFile )
// FW_SaveImage( aImg[ 1 ], cNewFile, nQuality )
PalBmpFree( aImg )]]>

Could you please comment this line and try it again ? Trying to locate the memory leak, thanks

// keep commented the above code

aImg := Fw_ReadImage( nil, cFile )
// FW_SaveImage( aImg[ 1 ], cNewFile, nQuality )
PalBmpFree( aImg )]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by dutch]]> 2025-03-05T22:47:45-07:00 2025-03-05T22:47:45-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278171#p278171
Yes, FW_Saveimage() has consumed the memory. It did not take memory much (30mb-40mb / 1000 pictures) after remark this line.
Antonio Linares wrote: Wed Mar 05, 2025 5:54 pm Dear Dutch,

Could you please comment this line and try it again ? Trying to locate the memory leak, thanks

// keep commented the above code

aImg := Fw_ReadImage( nil, cFile )
// FW_SaveImage( aImg[ 1 ], cNewFile, nQuality )
PalBmpFree( aImg )
]]>

Yes, FW_Saveimage() has consumed the memory. It did not take memory much (30mb-40mb / 1000 pictures) after remark this line.
Antonio Linares wrote: Wed Mar 05, 2025 5:54 pm Dear Dutch,

Could you please comment this line and try it again ? Trying to locate the memory leak, thanks

// keep commented the above code

aImg := Fw_ReadImage( nil, cFile )
// FW_SaveImage( aImg[ 1 ], cNewFile, nQuality )
PalBmpFree( aImg )
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by Antonio Linares]]> 2025-03-06T00:44:35-07:00 2025-03-06T00:44:35-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278172#p278172
I am emailing you a modified fivehc.lib

Please try your code with it

many thanks]]>

I am emailing you a modified fivehc.lib

Please try your code with it

many thanks]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by dutch]]> 2025-03-06T01:14:54-07:00 2025-03-06T01:14:54-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278174#p278174
I got an error while compile & link as below;

Turbo Incremental Link 6.80 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
Error: Unresolved external '_hb_vmCDP' referenced from D:\FWH1901\LIB\FIVEHC.LIB|fwunicode
Error: Unable to perform link
EZ4FO6.EXE - 2 error(s), 24 warning(s)

Thank you in advance for your help.
Antonio Linares wrote: Thu Mar 06, 2025 7:44 am Dear Dutch,

I am emailing you a modified fivehc.lib

Please try your code with it

many thanks
]]>

I got an error while compile & link as below;

Turbo Incremental Link 6.80 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
Error: Unresolved external '_hb_vmCDP' referenced from D:\FWH1901\LIB\FIVEHC.LIB|fwunicode
Error: Unable to perform link
EZ4FO6.EXE - 2 error(s), 24 warning(s)

Thank you in advance for your help.
Antonio Linares wrote: Thu Mar 06, 2025 7:44 am Dear Dutch,

I am emailing you a modified fivehc.lib

Please try your code with it

many thanks
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by dutch]]> 2025-03-06T01:17:57-07:00 2025-03-06T01:17:57-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278175#p278175
I still use FWH 1901.
I subscribed up to 2304 but I cannot move forward, because of Drag & Drop that I mention.

bDragBegin and bDropOver problem *Unresolve*
since Sep 12, 2023
viewtopic.php?p=276556#p276556]]>

I still use FWH 1901.
I subscribed up to 2304 but I cannot move forward, because of Drag & Drop that I mention.

bDragBegin and bDropOver problem *Unresolve*
since Sep 12, 2023
viewtopic.php?p=276556#p276556]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by Antonio Linares]]> 2025-03-06T23:12:49-07:00 2025-03-06T23:12:49-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278197#p278197
I have built and test your app using Harbour and xHarbour and FWH 25.01

I have sent you everything to test it. It seems to work fine.

waiting for your feedback, thanks]]>

I have built and test your app using Harbour and xHarbour and FWH 25.01

I have sent you everything to test it. It seems to work fine.

waiting for your feedback, thanks]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FW_Saveimage() memory leak issue :: Reply by dutch]]> 2025-03-06T23:53:56-07:00 2025-03-06T23:53:56-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45488&p=278199#p278199
The problem is DropOver FOLDER and SAY above TFOLDER. It's not working. But DropOver FOLDER and SAY below TFOLDER is working as FWH1901.
Let's see the vdo cip.
https://streamable.com/wpfbjq
Antonio Linares wrote: Fri Mar 07, 2025 6:12 am Dear Dutch,

I have built and test your app using Harbour and xHarbour and FWH 25.01

I have sent you everything to test it. It seems to work fine.

waiting for your feedback, thanks
]]>

The problem is DropOver FOLDER and SAY above TFOLDER. It's not working. But DropOver FOLDER and SAY below TFOLDER is working as FWH1901.
Let's see the vdo cip.
https://streamable.com/wpfbjq
Antonio Linares wrote: Fri Mar 07, 2025 6:12 am Dear Dutch,

I have built and test your app using Harbour and xHarbour and FWH 25.01

I have sent you everything to test it. It seems to work fine.

waiting for your feedback, thanks
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Problem with FwMaria and oCn:BackUp :: Author Maurizio]]> 2025-03-06T04:33:24-07:00 2025-03-06T04:33:24-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45495&p=278176#p278176 I use the FwMaria backup program (vers.August-September 2024)

oCn:BackUp(cTable, cDestina )

With some databases this error occurs:

Code: Select all | Expand

Stack Calls
===========
   Called from: backupsql.prg => AEVAL( 0 )
   Called from: .\source\internal\fwmaria.prg => FWMARIACONNECTION:BACKUPTABLE( 9754 )
   Called from: .\source\internal\fwmaria.prg => FWMARIACONNECTION:BACKUP( 9652 )


with other databases it works fine

Regards Maurizio]]>
I use the FwMaria backup program (vers.August-September 2024)

oCn:BackUp(cTable, cDestina )

With some databases this error occurs:

Code: Select all | Expand

Stack Calls
===========
   Called from: backupsql.prg => AEVAL( 0 )
   Called from: .\source\internal\fwmaria.prg => FWMARIACONNECTION:BACKUPTABLE( 9754 )
   Called from: .\source\internal\fwmaria.prg => FWMARIACONNECTION:BACKUP( 9652 )


with other databases it works fine

Regards Maurizio]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with FwMaria and oCn:BackUp :: Reply by nageswaragunupudi]]> 2025-03-06T05:26:47-07:00 2025-03-06T05:26:47-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45495&p=278177#p278177
oCn:BackUp(cTable, cDestina )
Are you trying to backup single table "ctable" from currentDB() ?
If so, please try

Code: Select all | Expand

oCn:Backup( { cTable }, cDest )
and let us know if it works.]]>
oCn:BackUp(cTable, cDestina )
Are you trying to backup single table "ctable" from currentDB() ?
If so, please try

Code: Select all | Expand

oCn:Backup( { cTable }, cDest )
and let us know if it works.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with FwMaria and oCn:BackUp :: Reply by Maurizio]]> 2025-03-06T06:45:48-07:00 2025-03-06T06:45:48-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45495&p=278178#p278178
happy to hear from you again. :D

No, I didn't explain myself well, I copy the entire database not individual tables .
oCn:Backup( cDataBase , cDest )

or
oCn:Backup( cDataBase , cDest ,bAction )

Maurizio]]>

happy to hear from you again. :D

No, I didn't explain myself well, I copy the entire database not individual tables .
oCn:Backup( cDataBase , cDest )

or
oCn:Backup( cDataBase , cDest ,bAction )

Maurizio]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with FwMaria and oCn:BackUp :: Reply by nageswaragunupudi]]> 2025-03-06T08:44:27-07:00 2025-03-06T08:44:27-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45495&p=278182#p278182

Code: Select all | Expand

aCols := ::Execute( "SHOW FULL COLUMNS FROM " + cTable )
is not return an array but nil or other value.
I need to find that table and see what to do.
Though this is a rare case, we have to fix this in our library code.

By an chance, do you have the database in the cloud?
If not, I will suggest you some other way.

Your cooperation will help us to improve our library]]>

Code: Select all | Expand

aCols := ::Execute( "SHOW FULL COLUMNS FROM " + cTable )
is not return an array but nil or other value.
I need to find that table and see what to do.
Though this is a rare case, we have to fix this in our library code.

By an chance, do you have the database in the cloud?
If not, I will suggest you some other way.

Your cooperation will help us to improve our library]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with FwMaria and oCn:BackUp :: Reply by nageswaragunupudi]]> 2025-03-06T16:13:50-07:00 2025-03-06T16:13:50-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45495&p=278188#p278188

Code: Select all | Expand

 oCn := maria_Connect( ... )
oCn:lShowErrors := .t.
oCn:lLogErr := .t.
oCn:BackUp( <db>, <dst> )
? "done"
return nil
Please let me know if you see any errors before the above AEVAL(0) error.
Also this creates a log file with the same name as the exe file. Let us also see the log file.]]>

Code: Select all | Expand

 oCn := maria_Connect( ... )
oCn:lShowErrors := .t.
oCn:lLogErr := .t.
oCn:BackUp( <db>, <dst> )
? "done"
return nil
Please let me know if you see any errors before the above AEVAL(0) error.
Also this creates a log file with the same name as the exe file. Let us also see the log file.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with FwMaria and oCn:BackUp :: Reply by Maurizio]]> 2025-03-07T01:38:56-07:00 2025-03-07T01:38:56-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45495&p=278200#p278200

Code: Select all | Expand

::cError = "Table 'mastronipe.worksheet' doesn't exist"
but the table exists

Code: Select all | Expand

03/07/25 09:21:44: FWMARIACONNECTION:EXECUTE_SQL( 6791 )	
cCallStack( "<-", 3 ) = "FWMARIACONNECTION:EXECUTE( 7163 )
<-FWMARIACONNECTION:BACKUPTABLE( 9752 )
<-FWMARIACONNECTION:BACKUP( 9652 )
<-COPIA_1( 239 )
<-(b)COPIA( 137 )
<-(b)MSGMETERX( 410 )
<-(b)TDIALOG( 99 )<-TDIALOG:DISPLAY( 0 )
<-TDIALOG:HANDLEEVENT( 1208 )
<-DIALOGBOXINDIRECT( 0 )
<-TDIALOG:ACTIVATE( 309 )
<-MSGMETERX( 415 )
<-COPIA( 140 )
<-MAIN( 114 )"	cSql = "SHOW FULL COLUMNS FROM `worksheet`"	
uRet = 	::nError = 1146	
::cError = "Table 'mastronipe.worksheet' doesn't exist"	
::cSqlInfo = ""	
03/07/25 09:26:37: FWMARIACONNECTION:EXECUTE_SQL( 6791 )	
cCallStack( "<-", 3 ) = "FWMARIACONNECTION:EXECUTE( 7163 )<-FWMARIACONNECTION:BACKUPTABLE( 9752 )
<-FWMARIACONNECTION:BACKUP( 9652 )<-COPIA_1( 239 )<-(b)COPIA( 137 )<-(b)MSGMETERX( 410 )<-(b)TDIALOG( 99 )<-TDIALOG:DISPLAY( 0 )<-TDIALOG:HANDLEEVENT( 1208 )<-DIALOGBOXINDIRECT( 0 )<-TDIALOG:ACTIVATE( 309 )<-MSGMETERX( 415 )<-COPIA( 140 )<-MAIN( 114 )"	cSql = "SHOW FULL COLUMNS FROM `worksheet`"	uRet = 	::nError = 1146	::cError = "Table 'mastronipe.worksheet' doesn't exist"	::cSqlInfo = ""	
]]>

Code: Select all | Expand

::cError = "Table 'mastronipe.worksheet' doesn't exist"
but the table exists

Code: Select all | Expand

03/07/25 09:21:44: FWMARIACONNECTION:EXECUTE_SQL( 6791 )	
cCallStack( "<-", 3 ) = "FWMARIACONNECTION:EXECUTE( 7163 )
<-FWMARIACONNECTION:BACKUPTABLE( 9752 )
<-FWMARIACONNECTION:BACKUP( 9652 )
<-COPIA_1( 239 )
<-(b)COPIA( 137 )
<-(b)MSGMETERX( 410 )
<-(b)TDIALOG( 99 )<-TDIALOG:DISPLAY( 0 )
<-TDIALOG:HANDLEEVENT( 1208 )
<-DIALOGBOXINDIRECT( 0 )
<-TDIALOG:ACTIVATE( 309 )
<-MSGMETERX( 415 )
<-COPIA( 140 )
<-MAIN( 114 )"	cSql = "SHOW FULL COLUMNS FROM `worksheet`"	
uRet = 	::nError = 1146	
::cError = "Table 'mastronipe.worksheet' doesn't exist"	
::cSqlInfo = ""	
03/07/25 09:26:37: FWMARIACONNECTION:EXECUTE_SQL( 6791 )	
cCallStack( "<-", 3 ) = "FWMARIACONNECTION:EXECUTE( 7163 )<-FWMARIACONNECTION:BACKUPTABLE( 9752 )
<-FWMARIACONNECTION:BACKUP( 9652 )<-COPIA_1( 239 )<-(b)COPIA( 137 )<-(b)MSGMETERX( 410 )<-(b)TDIALOG( 99 )<-TDIALOG:DISPLAY( 0 )<-TDIALOG:HANDLEEVENT( 1208 )<-DIALOGBOXINDIRECT( 0 )<-TDIALOG:ACTIVATE( 309 )<-MSGMETERX( 415 )<-COPIA( 140 )<-MAIN( 114 )"	cSql = "SHOW FULL COLUMNS FROM `worksheet`"	uRet = 	::nError = 1146	::cError = "Table 'mastronipe.worksheet' doesn't exist"	::cSqlInfo = ""	
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with FwMaria and oCn:BackUp :: Reply by nageswaragunupudi]]> 2025-03-07T01:52:49-07:00 2025-03-07T01:52:49-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45495&p=278201#p278201 Is your code:

Code: Select all | Expand

oCn:Backup( "mastronipe", <cDest>)</code> 
?

Also what is the result of 
[code]cType := nil
? oCn:TableExists( "worksheet", "mastronipe", @cType )
? cType
]]>
Is your code:

Code: Select all | Expand

oCn:Backup( "mastronipe", <cDest>)</code> 
?

Also what is the result of 
[code]cType := nil
? oCn:TableExists( "worksheet", "mastronipe", @cType )
? cType
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with FwMaria and oCn:BackUp :: Reply by Maurizio]]> 2025-03-07T04:31:50-07:00 2025-03-07T04:31:50-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45495&p=278202#p278202 Return .t.

? cType
Return BASE TABLE]]>
Return .t.

? cType
Return BASE TABLE]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Class TOpenAI_ChatGPT by Charles Kwon :: Reply by Ari]]> 2025-03-06T10:11:24-07:00 2025-03-06T10:11:24-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=44177&p=278183#p278183
Is it possible to attach an XML from an Electronic Invoice with the code above?

And if it is only in JSON, does anyone have a function that converts XML to JSON?

I asked GPT all this, but the code it returns is not functional.]]>

Is it possible to attach an XML from an Electronic Invoice with the code above?

And if it is only in JSON, does anyone have a function that converts XML to JSON?

I asked GPT all this, but the code it returns is not functional.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Class TOpenAI_ChatGPT by Charles Kwon :: Reply by Antonio Linares]]> 2025-03-06T10:46:00-07:00 2025-03-06T10:46:00-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=44177&p=278184#p278184
In FWH 25.01 we have a new Class TOpenAI.

Do you need OpenAI or would it be fine using Google Gemini ?
Because we already have sending files in Class TGemini.

A workaround is to read the XML and send it as part of the prompt as it is ascii.]]>

In FWH 25.01 we have a new Class TOpenAI.

Do you need OpenAI or would it be fine using Google Gemini ?
Because we already have sending files in Class TGemini.

A workaround is to read the XML and send it as part of the prompt as it is ascii.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Class TOpenAI_ChatGPT by Charles Kwon :: Reply by Ari]]> 2025-03-06T10:59:17-07:00 2025-03-06T10:59:17-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=44177&p=278185#p278185
I issue electronic invoices in my ERP and I always get a tax error, invisible character, etc. I've been testing it on the direct prompt with GPT about Brazilian laws, which is crazy, and it's been responding very well. I simulated XML with forced errors and it figured out where the error was. I have to chat with it a lot, but it's useful here when it comes to technical support having more resources to respond faster. There are no rules of law here, each state has its own, it's a mess.

I asked him for a Harbor code, he replied to send the XML via curl, or to send it in JSON, but nothing worked.

I have the FWH2501. The idea is to activate the AI ​​only when the Treasury Department rejects the invoice (XML).

The idea is to say this way, GPT analyzes this XML and checks what's wrong: it does the magic :D

Your suggestion of posting with ASC could be the solution, I'll try it, thanks]]>

I issue electronic invoices in my ERP and I always get a tax error, invisible character, etc. I've been testing it on the direct prompt with GPT about Brazilian laws, which is crazy, and it's been responding very well. I simulated XML with forced errors and it figured out where the error was. I have to chat with it a lot, but it's useful here when it comes to technical support having more resources to respond faster. There are no rules of law here, each state has its own, it's a mess.

I asked him for a Harbor code, he replied to send the XML via curl, or to send it in JSON, but nothing worked.

I have the FWH2501. The idea is to activate the AI ​​only when the Treasury Department rejects the invoice (XML).

The idea is to say this way, GPT analyzes this XML and checks what's wrong: it does the magic :D

Your suggestion of posting with ASC could be the solution, I'll try it, thanks]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Class TOpenAI_ChatGPT by Charles Kwon :: Reply by Ari]]> 2025-03-07T06:17:38-07:00 2025-03-07T06:17:38-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=44177&p=278207#p278207

Code: Select all | Expand

/*========================================================================
                     S I S R E V INFORMATICA LTDA.
              Prestando serviços com qualidade desde 1993
                       CNPJ: 02.623.572/0001-52
                       CNPJ: 02.623.572/0002-33
  ========================================================================
   Sistema..: S i s r e v - Win 5.0
   Autor(es): Ariovaldo da Costa Foliene
   Aplicação: TSisrevIA
   Notas....: Inteligência artificial com ChatGPT
   Data.....: 06-03-2025
  ========================================================================

  ========================================================================
*/
#include "fivewin.ch"
#include "Objects.ch"

Function Main()
    local cAPI_URL := "https://api.openai.com/v1/chat/completions"
    
    local cAPI_KEY := "my key"
    local cXML     := '"'+MemoRead("C:\Users\Ari\Desktop\35250302623572000152550010000000041326996985nfe.xml")+'"'
    
    local cResponse, cResult, hHttp, cJSON, cRequest

    cRequest := '"'
    cRequest += 'Você é um Analista de Notas Fiscais, que informará'
    cRequest += ' erros, na tributação e formatação geral do XML que vou encamihar, observando as'
    cRequest += ' da NF-e do Brasil para todos os estado, me alertando quando tem problemas de regras '
    cRequest += ' calculos errados, localizar e informar em que parte do XML apresanta os erros, a fim de '
    cRequest += ' evitar multas e cobranças indevidas, e quando for surgerir algumas revisões já '
    cRequest += ' verifica o que devo fazer exatamente, reposta precisa e objetiva'
    cRequest += '"'
    
    // Construindo JSON manualmente
    cJSON := ;
        '{ "model": "gpt-3.5-turbo", "messages": ['          + ;
        '{ "role": "system", "content": ' + cRequest + ' },' + ;
        '{ "role": "user"  , "content": "Olá com quem eu falo ?" } ] }'
        
//        '{ "role": "user"  , "content": ' + hb_jsonEncode( cXML ) + ' } ] }'        
                
    // Criar objeto HTTP
    hHttp := CREATEOBJECT( "Msxml2.XMLHTTP" )
    hHttp:Open( "POST", cAPI_URL, .F. )
    hHttp:SetRequestHeader( "Content-Type" , "application/json"   )
    hHttp:SetRequestHeader( "Authorization", "Bearer " + cAPI_KEY )

    // Enviar requisição
    hHttp:Send( cJSON )

    // Capturar resposta
    IF hHttp:Status = 200
        cResponse := hHttp:ResponseText
        cResult   := ParseJSONResponse( cResponse )
        ? "Resposta do ChatGPT:", cResult
    ELSE
        ? "Erro na requisicao:", hHttp:Status, hHttp:StatusText
        ? "Resposta completa:", hHttp:ResponseText
    ENDIF

Return nil

// Função para interpretar o JSON da resposta
Function ParseJSONResponse( cJSON )
    local hResponse := hb_jsonDecode( cJSON )
    local cMessage := ""

    IF ! Empty( hResponse ) .AND. HB_HHasKey( hResponse, "choices" )
        cMessage := hResponse[ "choices" ][1][ "message" ][ "content" ]
    ELSE
        cMessage := "Erro na resposta da API"
    ENDIF

    RETURN cMessage
]]>

Code: Select all | Expand

/*========================================================================
                     S I S R E V INFORMATICA LTDA.
              Prestando serviços com qualidade desde 1993
                       CNPJ: 02.623.572/0001-52
                       CNPJ: 02.623.572/0002-33
  ========================================================================
   Sistema..: S i s r e v - Win 5.0
   Autor(es): Ariovaldo da Costa Foliene
   Aplicação: TSisrevIA
   Notas....: Inteligência artificial com ChatGPT
   Data.....: 06-03-2025
  ========================================================================

  ========================================================================
*/
#include "fivewin.ch"
#include "Objects.ch"

Function Main()
    local cAPI_URL := "https://api.openai.com/v1/chat/completions"
    
    local cAPI_KEY := "my key"
    local cXML     := '"'+MemoRead("C:\Users\Ari\Desktop\35250302623572000152550010000000041326996985nfe.xml")+'"'
    
    local cResponse, cResult, hHttp, cJSON, cRequest

    cRequest := '"'
    cRequest += 'Você é um Analista de Notas Fiscais, que informará'
    cRequest += ' erros, na tributação e formatação geral do XML que vou encamihar, observando as'
    cRequest += ' da NF-e do Brasil para todos os estado, me alertando quando tem problemas de regras '
    cRequest += ' calculos errados, localizar e informar em que parte do XML apresanta os erros, a fim de '
    cRequest += ' evitar multas e cobranças indevidas, e quando for surgerir algumas revisões já '
    cRequest += ' verifica o que devo fazer exatamente, reposta precisa e objetiva'
    cRequest += '"'
    
    // Construindo JSON manualmente
    cJSON := ;
        '{ "model": "gpt-3.5-turbo", "messages": ['          + ;
        '{ "role": "system", "content": ' + cRequest + ' },' + ;
        '{ "role": "user"  , "content": "Olá com quem eu falo ?" } ] }'
        
//        '{ "role": "user"  , "content": ' + hb_jsonEncode( cXML ) + ' } ] }'        
                
    // Criar objeto HTTP
    hHttp := CREATEOBJECT( "Msxml2.XMLHTTP" )
    hHttp:Open( "POST", cAPI_URL, .F. )
    hHttp:SetRequestHeader( "Content-Type" , "application/json"   )
    hHttp:SetRequestHeader( "Authorization", "Bearer " + cAPI_KEY )

    // Enviar requisição
    hHttp:Send( cJSON )

    // Capturar resposta
    IF hHttp:Status = 200
        cResponse := hHttp:ResponseText
        cResult   := ParseJSONResponse( cResponse )
        ? "Resposta do ChatGPT:", cResult
    ELSE
        ? "Erro na requisicao:", hHttp:Status, hHttp:StatusText
        ? "Resposta completa:", hHttp:ResponseText
    ENDIF

Return nil

// Função para interpretar o JSON da resposta
Function ParseJSONResponse( cJSON )
    local hResponse := hb_jsonDecode( cJSON )
    local cMessage := ""

    IF ! Empty( hResponse ) .AND. HB_HHasKey( hResponse, "choices" )
        cMessage := hResponse[ "choices" ][1][ "message" ][ "content" ]
    ELSE
        cMessage := "Erro na resposta da API"
    ENDIF

    RETURN cMessage
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Class TOpenAI_ChatGPT by Charles Kwon :: Reply by Antonio Linares]]> 2025-03-07T06:45:12-07:00 2025-03-07T06:45:12-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=44177&p=278208#p278208
Yes, if you want to use OpenAI then you have create an account and get an OPENAI_API_KEY]]>

Yes, if you want to use OpenAI then you have create an account and get an OPENAI_API_KEY]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Class TOpenAI_ChatGPT by Charles Kwon :: Reply by Antonio Linares]]> 2025-03-07T07:32:23-07:00 2025-03-07T07:32:23-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=44177&p=278209#p278209
Or use Class TOllama for always free :)]]>

Or use Class TOllama for always free :)]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: bDragBegin and bDropOver problem *Unresolve* :: Reply by Antonio Linares]]> 2025-03-07T07:46:18-07:00 2025-03-07T07:46:18-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=43699&p=278210#p278210

Dropping above the browse does not work, dropping just a little bellow, it works :!:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oCur, oDlg, oBrw

   DEFINE CURSOR oCur DRAG

   DEFINE DIALOG oDlg SIZE 600,250 PIXEL

   @ 20,20 XBROWSE oBrw SIZE 100,-20 PIXEL OF oDlg ;
      DATASOURCE { "One", "Two", "Three" } ;
      CELL LINES NOBORDER

   WITH OBJECT oBrw
      :nStretchCol := 1
      :oDragCursor := oCur
      :bDragBegin  := { || SetDropInfo( oBrw:aCols[ 1 ]:Value ) }
      :CreateFromCode()
   END

   oDlg:bDropOver := { |u,r,c,f| MsgInfo( "no drop here" ) }

   ACTIVATE DIALOG oDlg CENTERED

return nil
]]>


Dropping above the browse does not work, dropping just a little bellow, it works :!:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oCur, oDlg, oBrw

   DEFINE CURSOR oCur DRAG

   DEFINE DIALOG oDlg SIZE 600,250 PIXEL

   @ 20,20 XBROWSE oBrw SIZE 100,-20 PIXEL OF oDlg ;
      DATASOURCE { "One", "Two", "Three" } ;
      CELL LINES NOBORDER

   WITH OBJECT oBrw
      :nStretchCol := 1
      :oDragCursor := oCur
      :bDragBegin  := { || SetDropInfo( oBrw:aCols[ 1 ]:Value ) }
      :CreateFromCode()
   END

   oDlg:bDropOver := { |u,r,c,f| MsgInfo( "no drop here" ) }

   ACTIVATE DIALOG oDlg CENTERED

return nil
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: bDragBegin and bDropOver problem *Unresolve* :: Reply by Antonio Linares]]> 2025-03-07T08:07:11-07:00 2025-03-07T08:07:11-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=43699&p=278211#p278211

Code: Select all | Expand

METHOD LButtonUp( nRow, nCol, nFlags ) CLASS TXBrowse

   local nCaptured
   local nRowAdvanced, nTimeScrolled, nVelocity, nRowToAdvance
   local nRatio, n, cMsg := ""

   if ::lDrag
      return ::Super:LButtonUp( nRow, nCol, nFlags )
   endif

   // if nRow <= ::nTopBarHeight           HERE !!!
   //    return 0                          HERE !!!
   // endif                                HERE !!!
]]>

Code: Select all | Expand

METHOD LButtonUp( nRow, nCol, nFlags ) CLASS TXBrowse

   local nCaptured
   local nRowAdvanced, nTimeScrolled, nVelocity, nRowToAdvance
   local nRatio, n, cMsg := ""

   if ::lDrag
      return ::Super:LButtonUp( nRow, nCol, nFlags )
   endif

   // if nRow <= ::nTopBarHeight           HERE !!!
   //    return 0                          HERE !!!
   // endif                                HERE !!!
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: bDragBegin and bDropOver problem *Resolved* :: Reply by dutch]]> 2025-03-07T09:03:23-07:00 2025-03-07T10:11:16-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=43699&p=278214#p278214
I changed as below (your suggestion), it got an error. Can I make as dump function?

Code: Select all | Expand

Error: Unresolved external '_HB_FUN_ISRECORDSET' referenced from D:\FWH2304\LIB\FIVEHX.LIB|drxl
I use my latest version FWH2304.

Thanks in advance,
Antonio Linares wrote: Fri Mar 07, 2025 3:07 pm Fixed bug, in Class TXBrowse Method LButtonUp:

Code: Select all | Expand

METHOD LButtonUp( nRow, nCol, nFlags ) CLASS TXBrowse

   local nCaptured
   local nRowAdvanced, nTimeScrolled, nVelocity, nRowToAdvance
   local nRatio, n, cMsg := ""

   if ::lDrag
      return ::Super:LButtonUp( nRow, nCol, nFlags )
   endif

   // if nRow <= ::nTopBarHeight           HERE !!!
   //    return 0                          HERE !!!
   // endif                                HERE !!!
]]>

I changed as below (your suggestion), it got an error. Can I make as dump function?

Code: Select all | Expand

Error: Unresolved external '_HB_FUN_ISRECORDSET' referenced from D:\FWH2304\LIB\FIVEHX.LIB|drxl
I use my latest version FWH2304.

Thanks in advance,
Antonio Linares wrote: Fri Mar 07, 2025 3:07 pm Fixed bug, in Class TXBrowse Method LButtonUp:

Code: Select all | Expand

METHOD LButtonUp( nRow, nCol, nFlags ) CLASS TXBrowse

   local nCaptured
   local nRowAdvanced, nTimeScrolled, nVelocity, nRowToAdvance
   local nRatio, n, cMsg := ""

   if ::lDrag
      return ::Super:LButtonUp( nRow, nCol, nFlags )
   endif

   // if nRow <= ::nTopBarHeight           HERE !!!
   //    return 0                          HERE !!!
   // endif                                HERE !!!
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: bDragBegin and bDropOver problem (fixed!) :: Reply by Antonio Linares]]> 2025-03-07T09:10:17-07:00 2025-03-07T09:10:17-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=43699&p=278217#p278217
I have just emailed you the latest FWH libs for you to test them

many thanks for your feedback]]>

I have just emailed you the latest FWH libs for you to test them

many thanks for your feedback]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: bDragBegin and bDropOver problem (fixed!) :: Reply by dutch]]> 2025-03-07T10:09:38-07:00 2025-03-07T10:09:38-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=43699&p=278219#p278219
I've reinstall, change in source and rebuild library. It works well now.

Thank you so much for your kind help. I want to use many new and useful feature after FWH1901 but struck for long time.
Now It's clear and fixed.

Thanks once again.
Dutch
Antonio Linares wrote: Fri Mar 07, 2025 4:10 pm Dear Dutch,

I have just emailed you the latest FWH libs for you to test them

many thanks for your feedback
]]>

I've reinstall, change in source and rebuild library. It works well now.

Thank you so much for your kind help. I want to use many new and useful feature after FWH1901 but struck for long time.
Now It's clear and fixed.

Thanks once again.
Dutch
Antonio Linares wrote: Fri Mar 07, 2025 4:10 pm Dear Dutch,

I have just emailed you the latest FWH libs for you to test them

many thanks for your feedback
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Welcome back Master Rao, good news :: Author dutch]]> 2025-03-07T10:14:40-07:00 2025-03-07T10:14:40-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45498&p=278221#p278221
I'm glad to hearing from you and hope your health will be better now.

Regards,
Dutch]]>

I'm glad to hearing from you and hope your health will be better now.

Regards,
Dutch]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Welcome back Master Rao, good news :: Reply by Silvio.Falconi]]> 2025-03-08T03:57:23-07:00 2025-03-08T03:57:23-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45498&p=278232#p278232 <![CDATA[FiveWin for Harbour/xHarbour :: btnbmp activated when selecting a record :: Author Silvio.Falconi]]> 2025-03-08T04:03:46-07:00 2025-03-08T04:03:46-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45501&p=278233#p278233 Cristobal's example barchange.prg that uses a buttonbar and some buttons, I would like to do the same thing but without the buttonbar i.e. I have 6 buttons under an xbrowse (the ones that start from the left)

Image

and when I click on a record I would like to display only some of them, how could I do it?

perhaps I must use Newat of bar class But I not Know How make

I tried with

Code: Select all | Expand

@  oBrw:nBottom+5, 5 BUTTONBAR oBar SIZE 90,200 BUTTONSIZE 90,24  OF oDlg
and it make this error

Code: Select all | Expand

Error occurred at: 03/08/25, 12:22:05
   Error description: Error FiveWin/6  Cannot create window or control: 
Class: TBAR
Caption: 
System Error: Impossibile creare una finestra secondaria di primo livello.


Stack Calls
===========
   Called from: .\source\classes\window.prg => WNDCREATEERROR( 898 )
   Called from: .\source\classes\window.prg => TBAR:CREATE( 881 )
   Called from: .\source\classes\bar.prg => TBAR:NEWAT( 500 )
]]>
Cristobal's example barchange.prg that uses a buttonbar and some buttons, I would like to do the same thing but without the buttonbar i.e. I have 6 buttons under an xbrowse (the ones that start from the left)

Image

and when I click on a record I would like to display only some of them, how could I do it?

perhaps I must use Newat of bar class But I not Know How make

I tried with

Code: Select all | Expand

@  oBrw:nBottom+5, 5 BUTTONBAR oBar SIZE 90,200 BUTTONSIZE 90,24  OF oDlg
and it make this error

Code: Select all | Expand

Error occurred at: 03/08/25, 12:22:05
   Error description: Error FiveWin/6  Cannot create window or control: 
Class: TBAR
Caption: 
System Error: Impossibile creare una finestra secondaria di primo livello.


Stack Calls
===========
   Called from: .\source\classes\window.prg => WNDCREATEERROR( 898 )
   Called from: .\source\classes\window.prg => TBAR:CREATE( 881 )
   Called from: .\source\classes\bar.prg => TBAR:NEWAT( 500 )
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: btnbmp activated when selecting a record :: Reply by Silvio.Falconi]]> 2025-03-08T04:44:05-07:00 2025-03-08T04:44:05-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45501&p=278234#p278234

pls try the test

Code: Select all | Expand

function Main()

   local oDlg, oBrw, oFont
   local oDbf
   local oBar

 DEFINE DIALOG oDlg SIZE 640,300 PIXEL TRUEPIXEL;   //FONT oFont
        TITLE cTitle COLOR CLR_BLACK, DLG_nColorDlg  ;
       STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, ;
                  WS_MINIMIZEBOX)

 @ 40, 10 XBROWSE oBrw OF oDlg SIZE oDlg:nWidth-20,200 PIXEL ;  // -10,-40
      AUTOCOLS DATASOURCE oDbf NOBORDER

WITH OBJECT oBrw
   :CreateFromCode()
         END
 ACTIVATE DIALOG oDlg CENTERED  ;
         ON INIT ( Btnbar(0,oBar,oDlg,oDbf,oBrw),;
              Btnbar(1,oDlg:oBar,oDlg,oDbf,oBrw) )

   RELEASE FONT oFont

   return nil


Static Function Btnbar(nBar,oBar,oDlg,oDbf,oBrw)
   local n
   local aBtnMenu
   local x

   if Valtype( oBar ) = "O"
      For x := Len( oBar:aControls ) to 1 step - 1
         oBar:Del( x )
      Next x
   endif


      Do case
        Case nBar = 0
           @  oBrw:nBottom+6, 10 BUTTONBAR oBar SIZE 450,22 BUTTONSIZE 90,24  OF oDlg

            oBar:bClrGrad := { | lPressed | If( ! lPressed,;
                 { { 1, DLG_nColorBar1, DLG_nColorBar1} },;
                 { { 1, DLG_nColorBar2, DLG_nColorBar2} } ) }


      case nbar = 1
         aBtnMenu := array(6)
          DEFINE BUTTON aBtnMenu[1] OF oBar PROMPT "Nuovo" RESOURCE "NEW_SMALLBRW"  LEFT;
                 ACTION  NIL
          DEFINE BUTTON aBtnMenu[2] OF oBar PROMPT "Modifica" RESOURCE "MOD_SMALLBRW"  LEFT;
                 ACTION  NIL
         DEFINE BUTTON aBtnMenu[3] OF oBar PROMPT "Elimina" RESOURCE "CAN_SMALLBRW"  LEFT;
                 ACTION  NIL
         DEFINE BUTTON aBtnMenu[4] OF oBar PROMPT "Duplica" RESOURCE "DPL_SMALLBRW"  LEFT;
                 ACTION  NIL
         DEFINE BUTTON aBtnMenu[5] OF oBar PROMPT "Elimina" RESOURCE "CAN_SMALLBRW"  LEFT;
                 ACTION  NIL
         DEFINE BUTTON aBtnMenu[6] OF oBar PROMPT "Stampa" RESOURCE "PRN_SMALLBRW"  LEFT;
                 ACTION  NIL

           case nbar = 2
                 DEFINE BUTTON aBtnMenu[1] OF oBar PROMPT "Elimina" RESOURCE "CAN_SMALLBRW"  LEFT;
                 ACTION  NIL
               DEFINE BUTTON aBtnMenu[2] OF oBar PROMPT "Stampa" RESOURCE "PRN_SMALLBRW"  LEFT;
                 ACTION  NIL


      endcase
    return nil
]]>


pls try the test

Code: Select all | Expand

function Main()

   local oDlg, oBrw, oFont
   local oDbf
   local oBar

 DEFINE DIALOG oDlg SIZE 640,300 PIXEL TRUEPIXEL;   //FONT oFont
        TITLE cTitle COLOR CLR_BLACK, DLG_nColorDlg  ;
       STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, ;
                  WS_MINIMIZEBOX)

 @ 40, 10 XBROWSE oBrw OF oDlg SIZE oDlg:nWidth-20,200 PIXEL ;  // -10,-40
      AUTOCOLS DATASOURCE oDbf NOBORDER

WITH OBJECT oBrw
   :CreateFromCode()
         END
 ACTIVATE DIALOG oDlg CENTERED  ;
         ON INIT ( Btnbar(0,oBar,oDlg,oDbf,oBrw),;
              Btnbar(1,oDlg:oBar,oDlg,oDbf,oBrw) )

   RELEASE FONT oFont

   return nil


Static Function Btnbar(nBar,oBar,oDlg,oDbf,oBrw)
   local n
   local aBtnMenu
   local x

   if Valtype( oBar ) = "O"
      For x := Len( oBar:aControls ) to 1 step - 1
         oBar:Del( x )
      Next x
   endif


      Do case
        Case nBar = 0
           @  oBrw:nBottom+6, 10 BUTTONBAR oBar SIZE 450,22 BUTTONSIZE 90,24  OF oDlg

            oBar:bClrGrad := { | lPressed | If( ! lPressed,;
                 { { 1, DLG_nColorBar1, DLG_nColorBar1} },;
                 { { 1, DLG_nColorBar2, DLG_nColorBar2} } ) }


      case nbar = 1
         aBtnMenu := array(6)
          DEFINE BUTTON aBtnMenu[1] OF oBar PROMPT "Nuovo" RESOURCE "NEW_SMALLBRW"  LEFT;
                 ACTION  NIL
          DEFINE BUTTON aBtnMenu[2] OF oBar PROMPT "Modifica" RESOURCE "MOD_SMALLBRW"  LEFT;
                 ACTION  NIL
         DEFINE BUTTON aBtnMenu[3] OF oBar PROMPT "Elimina" RESOURCE "CAN_SMALLBRW"  LEFT;
                 ACTION  NIL
         DEFINE BUTTON aBtnMenu[4] OF oBar PROMPT "Duplica" RESOURCE "DPL_SMALLBRW"  LEFT;
                 ACTION  NIL
         DEFINE BUTTON aBtnMenu[5] OF oBar PROMPT "Elimina" RESOURCE "CAN_SMALLBRW"  LEFT;
                 ACTION  NIL
         DEFINE BUTTON aBtnMenu[6] OF oBar PROMPT "Stampa" RESOURCE "PRN_SMALLBRW"  LEFT;
                 ACTION  NIL

           case nbar = 2
                 DEFINE BUTTON aBtnMenu[1] OF oBar PROMPT "Elimina" RESOURCE "CAN_SMALLBRW"  LEFT;
                 ACTION  NIL
               DEFINE BUTTON aBtnMenu[2] OF oBar PROMPT "Stampa" RESOURCE "PRN_SMALLBRW"  LEFT;
                 ACTION  NIL


      endcase
    return nil
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: btnbmp activated when selecting a record :: Reply by Antonio Linares]]> 2025-03-08T05:44:07-07:00 2025-03-08T05:44:07-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45501&p=278235#p278235

Code: Select all | Expand

case nbar = 1
         aBtnMenu := array(6)
         DEFINE BUTTON aBtnMenu[1] OF oBar PROMPT "Nuovo" RESOURCE "NEW_SMALLBRW"  LEFT;
                 ACTION  NIL
]]>

Code: Select all | Expand

case nbar = 1
         aBtnMenu := array(6)
         DEFINE BUTTON aBtnMenu[1] OF oBar PROMPT "Nuovo" RESOURCE "NEW_SMALLBRW"  LEFT;
                 ACTION  NIL
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: btnbmp activated when selecting a record :: Reply by Silvio.Falconi]]> 2025-03-08T08:13:53-07:00 2025-03-08T08:13:53-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45501&p=278237#p278237
Antonio Linares wrote: Sat Mar 08, 2025 12:44 pm You are creating a button here with no Bar created already:

Code: Select all | Expand

case nbar = 1
         aBtnMenu := array(6)
         DEFINE BUTTON aBtnMenu[1] OF oBar PROMPT "Nuovo" RESOURCE "NEW_SMALLBRW"  LEFT;
                 ACTION  NIL
No Antonio, Please see barchange.prg (of Cristobal)
I wish make the same only I have the buttonbar at x,y

Code: Select all | Expand

#include 'fivewin.ch'
#include 'xbrowse.ch'
#include "constant.ch"


Function test()

   local oDlg,oDbf,oFont
   local oBar

   local  nBottom   := 27.2
   local  nRight    := 89
   local  nWd       := Max( nRight * DLG_CHARPIX_W, 180 )
   local  nHt       := nBottom * DLG_CHARPIX_H

   DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL;
         TiTle "test"
      oDlg:lHelpIcon := .F.

   @ 90,  10 Button "Second bar" size 100,18 PIXEL OF oDlg action Btnbar(2,oDlg:oBar,oDlg)
   @ 90, 200 Button "First bar"  size 100,18 PIXEL OF oDlg action Btnbar(1,oDlg:oBar,oDlg)

   ACTIVATE DIALOG oDlg  CENTER   ;
          ON INIT ( Btnbar(0,oBar,oDlg), Btnbar(1,oDlg:oBar,oDlg) )
RETURN NIL

//----------------------------------------------------------------------------//

Function Btnbar(nBar,oBar,oDlg)  // ,aBtnBar

   local aBtnBar
   local x
  

   if Valtype( oBar ) = "O"
      For x := Len( oBar:aControls ) to 1 step - 1
         oBar:Del( x )
      Next x
   endif

  Do case
  case nbar = 0

    // DEFINE BUTTONBAR oBar OF oDlg  SIZE 80,70  TOP NOBORDER  2015 old buttonbar

      oBar:=Tbar():NewAt( 100, 10, 450, 22, 90, 24, oDlg, .f.,;
                 , , .t., .f., .f., .t., .f., ;
                 , , , , ,  .t.)


  case nbar = 1
   aBtnBar := array(6)
   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New"       action msginfo()
   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify"    action msginfo()
   DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplicate" action msginfo()
   DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del"       action msginfo()
   DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print"     action msginfo()
   DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help"      action msginfo("Help")

  case nbar = 2
   aBtnBar := array(2)
   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "Del"       action msginfo("Del")
   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Print"     action msginfo("Print")

  endcase

return oBar


make me this error

Code: Select all | Expand

 Error occurred at: 03/08/25, 16:12:24
   Error description: Error BASE/1004  No exported method: ISKINDOF
   Args:
     [   1] = U   
     [   2] = C   TBAR

Stack Calls
===========
   Called from: .\source\classes\bar.prg => ISKINDOF( 0 )
   Called from: .\source\classes\btnbmp.prg => TBTNBMP:NEWBAR( 504 )
   Called from: test.prg => BTNBAR( 71 )

If you use DEFINE BUTTONBAR oBar OF oDlg SIZE 80,70 TOP NOBORDER 2015 run ok

if you use @ 100,10 BUTTONBAR oBar SIZE 450, 22 BUTTONSIZE 90, 24 OF oDlg NOT run

I tried also with

Code: Select all | Expand

 oBar:=Tbar():NewAt( 100, 10, 450, 22, 90, 24, oDlg, .f.,;
                 , , .t., .f., .f., .t., .f., ;
                 , aGrad, , , ,  .t.)
]]>
Antonio Linares wrote: Sat Mar 08, 2025 12:44 pm You are creating a button here with no Bar created already:

Code: Select all | Expand

case nbar = 1
         aBtnMenu := array(6)
         DEFINE BUTTON aBtnMenu[1] OF oBar PROMPT "Nuovo" RESOURCE "NEW_SMALLBRW"  LEFT;
                 ACTION  NIL
No Antonio, Please see barchange.prg (of Cristobal)
I wish make the same only I have the buttonbar at x,y

Code: Select all | Expand

#include 'fivewin.ch'
#include 'xbrowse.ch'
#include "constant.ch"


Function test()

   local oDlg,oDbf,oFont
   local oBar

   local  nBottom   := 27.2
   local  nRight    := 89
   local  nWd       := Max( nRight * DLG_CHARPIX_W, 180 )
   local  nHt       := nBottom * DLG_CHARPIX_H

   DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL TRUEPIXEL;
         TiTle "test"
      oDlg:lHelpIcon := .F.

   @ 90,  10 Button "Second bar" size 100,18 PIXEL OF oDlg action Btnbar(2,oDlg:oBar,oDlg)
   @ 90, 200 Button "First bar"  size 100,18 PIXEL OF oDlg action Btnbar(1,oDlg:oBar,oDlg)

   ACTIVATE DIALOG oDlg  CENTER   ;
          ON INIT ( Btnbar(0,oBar,oDlg), Btnbar(1,oDlg:oBar,oDlg) )
RETURN NIL

//----------------------------------------------------------------------------//

Function Btnbar(nBar,oBar,oDlg)  // ,aBtnBar

   local aBtnBar
   local x
  

   if Valtype( oBar ) = "O"
      For x := Len( oBar:aControls ) to 1 step - 1
         oBar:Del( x )
      Next x
   endif

  Do case
  case nbar = 0

    // DEFINE BUTTONBAR oBar OF oDlg  SIZE 80,70  TOP NOBORDER  2015 old buttonbar

      oBar:=Tbar():NewAt( 100, 10, 450, 22, 90, 24, oDlg, .f.,;
                 , , .t., .f., .f., .t., .f., ;
                 , , , , ,  .t.)


  case nbar = 1
   aBtnBar := array(6)
   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "New"       action msginfo()
   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Modify"    action msginfo()
   DEFINE BUTTON aBtnBar[3] OF oBar PROMPT "Duplicate" action msginfo()
   DEFINE BUTTON aBtnBar[4] OF oBar PROMPT "Del"       action msginfo()
   DEFINE BUTTON aBtnBar[5] OF oBar PROMPT "Print"     action msginfo()
   DEFINE BUTTON aBtnBar[6] OF oBar PROMPT "Help"      action msginfo("Help")

  case nbar = 2
   aBtnBar := array(2)
   DEFINE BUTTON aBtnBar[1] OF oBar PROMPT "Del"       action msginfo("Del")
   DEFINE BUTTON aBtnBar[2] OF oBar PROMPT "Print"     action msginfo("Print")

  endcase

return oBar


make me this error

Code: Select all | Expand

 Error occurred at: 03/08/25, 16:12:24
   Error description: Error BASE/1004  No exported method: ISKINDOF
   Args:
     [   1] = U   
     [   2] = C   TBAR

Stack Calls
===========
   Called from: .\source\classes\bar.prg => ISKINDOF( 0 )
   Called from: .\source\classes\btnbmp.prg => TBTNBMP:NEWBAR( 504 )
   Called from: test.prg => BTNBAR( 71 )

If you use DEFINE BUTTONBAR oBar OF oDlg SIZE 80,70 TOP NOBORDER 2015 run ok

if you use @ 100,10 BUTTONBAR oBar SIZE 450, 22 BUTTONSIZE 90, 24 OF oDlg NOT run

I tried also with

Code: Select all | Expand

 oBar:=Tbar():NewAt( 100, 10, 450, 22, 90, 24, oDlg, .f.,;
                 , , .t., .f., .f., .t., .f., ;
                 , aGrad, , , ,  .t.)
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: btnbmp activated when selecting a record :: Reply by Silvio.Falconi]]> 2025-03-08T09:11:57-07:00 2025-03-08T09:11:57-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45501&p=278238#p278238

Image



Code: Select all | Expand

#include "fivewin.ch"

function Main()

   local oDlg, oBrw, oBar1, oBar2, aRow, aData := Array( 8, 6 )

   for each aRow in aData
      AEval( aRow, { |u,i| aRow[ i ] := HB_RandomInt( 100,500 ) } )
   next

   DEFINE DIALOG oDlg SIZE 600,400 PIXEL TRUEPIXEL

   @  20, 20 XBROWSE oBrw SIZE 480,200 PIXEL OF oDlg ;
      DATASOURCE aData AUTOCOLS CELL LINES NOBORDER

   oBrw:CreateFromCode()

   oDlg:bInit := <||

       oBar1:= TBar():NewAt(  oBrw:nbottom+1, oBrw:nLeft, oBrw:nWidth-120, 25, 80, 25, oDlg, .f.,;
              , , .F., .f., .f., .t., .f., ;
              , , , , , .t. )

      oBar1:l2013 := .t.

      DEFINE BUTTON OF oBar1 PROMPT "ONE" CENTER
      DEFINE BUTTON OF oBar1 PROMPT "TWO" CENTER
      DEFINE BUTTON OF oBar1 PROMPT "THREE" CENTER

       oBar1:bClrGrad := { | lPressed | If( ! lPressed,;
                 { { 1, RGB( 250,250,245), RGB( 250,250,245)} },;
                 { { 1, RGB( 245,245,235), RGB( 245,245,235)} } ) }

      oBar1:Hide()

       oBar2:= TBar():NewAt(  oBrw:nbottom+1, oBrw:nLeft, oBrw:nWidth-120, 25, 80, 25, oDlg, .f.,;
              , , .F., .f., .f., .t., .f., ;
              , , , , , .t. )
      oBar2:l2013 := .t.

      DEFINE BUTTON OF oBar2 PROMPT "JAN" CENTER
      DEFINE BUTTON OF oBar2 PROMPT "FEB" CENTER
      DEFINE BUTTON OF oBar2 PROMPT "MARCH" CENTER
        oBar2:bClrGrad := { | lPressed | If( ! lPressed,;
                 { { 1, RGB( 250,250,245), RGB( 250,250,245)} },;
                 { { 1, RGB( 245,245,235), RGB( 245,245,235)} } ) }
      return nil
      >

   @ 280, 20 BUTTON "FIRST BAR" SIZE 150,40 PIXEL OF oDlg ;
      WHEN oBar2:lVisible ACTION ( oBar2:Hide(), oBar1:Show() )

   @ 280,200 BUTTON "SECOND BAR" SIZE 150,40 PIXEL OF oDlg ;
      WHEN oBar1:lVisible ACTION ( oBar1:Hide(), oBar2:Show() )

   ACTIVATE DIALOG oDlg CENTERED

return nil

]]>


Image



Code: Select all | Expand

#include "fivewin.ch"

function Main()

   local oDlg, oBrw, oBar1, oBar2, aRow, aData := Array( 8, 6 )

   for each aRow in aData
      AEval( aRow, { |u,i| aRow[ i ] := HB_RandomInt( 100,500 ) } )
   next

   DEFINE DIALOG oDlg SIZE 600,400 PIXEL TRUEPIXEL

   @  20, 20 XBROWSE oBrw SIZE 480,200 PIXEL OF oDlg ;
      DATASOURCE aData AUTOCOLS CELL LINES NOBORDER

   oBrw:CreateFromCode()

   oDlg:bInit := <||

       oBar1:= TBar():NewAt(  oBrw:nbottom+1, oBrw:nLeft, oBrw:nWidth-120, 25, 80, 25, oDlg, .f.,;
              , , .F., .f., .f., .t., .f., ;
              , , , , , .t. )

      oBar1:l2013 := .t.

      DEFINE BUTTON OF oBar1 PROMPT "ONE" CENTER
      DEFINE BUTTON OF oBar1 PROMPT "TWO" CENTER
      DEFINE BUTTON OF oBar1 PROMPT "THREE" CENTER

       oBar1:bClrGrad := { | lPressed | If( ! lPressed,;
                 { { 1, RGB( 250,250,245), RGB( 250,250,245)} },;
                 { { 1, RGB( 245,245,235), RGB( 245,245,235)} } ) }

      oBar1:Hide()

       oBar2:= TBar():NewAt(  oBrw:nbottom+1, oBrw:nLeft, oBrw:nWidth-120, 25, 80, 25, oDlg, .f.,;
              , , .F., .f., .f., .t., .f., ;
              , , , , , .t. )
      oBar2:l2013 := .t.

      DEFINE BUTTON OF oBar2 PROMPT "JAN" CENTER
      DEFINE BUTTON OF oBar2 PROMPT "FEB" CENTER
      DEFINE BUTTON OF oBar2 PROMPT "MARCH" CENTER
        oBar2:bClrGrad := { | lPressed | If( ! lPressed,;
                 { { 1, RGB( 250,250,245), RGB( 250,250,245)} },;
                 { { 1, RGB( 245,245,235), RGB( 245,245,235)} } ) }
      return nil
      >

   @ 280, 20 BUTTON "FIRST BAR" SIZE 150,40 PIXEL OF oDlg ;
      WHEN oBar2:lVisible ACTION ( oBar2:Hide(), oBar1:Show() )

   @ 280,200 BUTTON "SECOND BAR" SIZE 150,40 PIXEL OF oDlg ;
      WHEN oBar1:lVisible ACTION ( oBar1:Hide(), oBar2:Show() )

   ACTIVATE DIALOG oDlg CENTERED

return nil

]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: btnbmp activated when selecting a record :: Reply by Silvio.Falconi]]> 2025-03-08T09:38:48-07:00 2025-03-08T09:38:48-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45501&p=278239#p278239
Image

also the background of bars are not the same of odlg]]>

Image

also the background of bars are not the same of odlg]]>
<![CDATA[FiveWin for Harbour/xHarbour :: also error End on Btnbmp :: Author Silvio.Falconi]]> 2025-03-10T02:12:42-06:00 2025-03-10T02:12:42-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45503&p=278256#p278256
First of all I created a small class From Xbrowse where I inserted some btnbmp buttons located at the end of the xbrowse on the right side and I called them aBtnBrow

I use this trick because in all the procedures when I create the xbrowse I have to insert the buttons which are generally only three in other situations they are 5 and to avoid always having to rewrite them and consequently set them in the resize function of the dialog I thought of making a small class that does nothing but insert the buttons

so in the procedure I use I only have to load the action of the buttons for example

Code: Select all | Expand

oBrw:aBtnBrow[3]:baction:= { || oBrw:aBtnBrow[3]:ShowPopUp( { | oBtn | Contextual_Menu(oBtn,oBrw,oDbf,cIniUser,cSection,oDlg,oBrw:aBtnBrow[4],.t.,.t.,@lmore)  } ) }
oBrw:aBtnBrow[5]:baction:= { || oBrw:aBtnBrow[5]:ShowPopUp( { | oBtn | ColonneMenu( oBtn,oBrw,oDbf,oDlg,cSection,cIniUser ) } ) }

Where is the error i.e. why the End() error? It comes out sometimes and not always?]]>

First of all I created a small class From Xbrowse where I inserted some btnbmp buttons located at the end of the xbrowse on the right side and I called them aBtnBrow

I use this trick because in all the procedures when I create the xbrowse I have to insert the buttons which are generally only three in other situations they are 5 and to avoid always having to rewrite them and consequently set them in the resize function of the dialog I thought of making a small class that does nothing but insert the buttons

so in the procedure I use I only have to load the action of the buttons for example

Code: Select all | Expand

oBrw:aBtnBrow[3]:baction:= { || oBrw:aBtnBrow[3]:ShowPopUp( { | oBtn | Contextual_Menu(oBtn,oBrw,oDbf,cIniUser,cSection,oDlg,oBrw:aBtnBrow[4],.t.,.t.,@lmore)  } ) }
oBrw:aBtnBrow[5]:baction:= { || oBrw:aBtnBrow[5]:ShowPopUp( { | oBtn | ColonneMenu( oBtn,oBrw,oDbf,oDlg,cSection,cIniUser ) } ) }

Where is the error i.e. why the End() error? It comes out sometimes and not always?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Configuration of Resedit :: Reply by Antonio Linares]]> 2025-03-07T05:40:47-07:00 2025-03-07T05:40:47-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=35472&p=278203#p278203
carlos vargas wrote: Fri Apr 06, 2018 6:20 pm yo uso esto para bcc 7.20 y 7.30
Image
#include <winresrc.h>
#include <windows.h>
#include <commctrl.h>

#ifndef WC_TABCONTROL
#define WC_TABCONTROL "SysTabControl32"
#endif

#ifndef MONTHCAL_CLASS
#define MONTHCAL_CLASS "SysMonthCal32"
#endif

#ifndef DATETIMEPICK_CLASS
#define DATETIMEPICK_CLASS "SysDateTimePick32"
#endif

#include "RESOURCE_HEADER"

%RESOURCES%
y en General/Include Paths:
c:\fwh\include\
c:\bcc77\include\]]>
carlos vargas wrote: Fri Apr 06, 2018 6:20 pm yo uso esto para bcc 7.20 y 7.30
Image
#include <winresrc.h>
#include <windows.h>
#include <commctrl.h>

#ifndef WC_TABCONTROL
#define WC_TABCONTROL "SysTabControl32"
#endif

#ifndef MONTHCAL_CLASS
#define MONTHCAL_CLASS "SysMonthCal32"
#endif

#ifndef DATETIMEPICK_CLASS
#define DATETIMEPICK_CLASS "SysDateTimePick32"
#endif

#include "RESOURCE_HEADER"

%RESOURCES%
y en General/Include Paths:
c:\fwh\include\
c:\bcc77\include\]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Configuration of Resedit :: Reply by Antonio Linares]]> 2025-03-07T05:49:50-07:00 2025-03-07T05:49:50-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=35472&p=278204#p278204
Da un error en sal.h

Alguien le ha encontrado solución ?]]>

Da un error en sal.h

Alguien le ha encontrado solución ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Configuration of Resedit :: Reply by Antonio Linares]]> 2025-03-07T05:59:37-07:00 2025-03-07T05:59:37-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=35472&p=278206#p278206
#ifdef _CONTINUA_

y al final

#endif]]>

#ifdef _CONTINUA_

y al final

#endif]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Configuration of Resedit :: Reply by Silvio.Falconi]]> 2025-03-10T15:29:30-06:00 2025-03-10T15:29:30-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=35472&p=278271#p278271 <![CDATA[FiveWin for Harbour/xHarbour :: Scroll xBrowse :: Author oliveiros junior]]> 2025-03-10T06:53:04-06:00 2025-03-10T06:53:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45504&p=278259#p278259
I would like to know if it is possible to increase the width of the vertical scroll bar in xBrowse and also its color.

Thank you in advance!

Oliveiros Junior]]>

I would like to know if it is possible to increase the width of the vertical scroll bar in xBrowse and also its color.

Thank you in advance!

Oliveiros Junior]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Scroll xBrowse :: Reply by Antonio Linares]]> 2025-03-10T07:33:14-06:00 2025-03-10T07:33:14-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45504&p=278261#p278261
MoveWindow( oBrw:oVScroll:hWnd, oBrw:nWidth - 30, 0, 30, oBrw:nHeight, .T. )]]>

MoveWindow( oBrw:oVScroll:hWnd, oBrw:nWidth - 30, 0, 30, oBrw:nHeight, .T. )]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Scroll xBrowse :: Reply by oliveiros junior]]> 2025-03-10T09:13:59-06:00 2025-03-10T09:13:59-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45504&p=278262#p278262
Está dizendo que o método hwnd não é exportado.

Error description: Error BASE/1004 No exported method: HWND

Att.,

Junior]]>

Está dizendo que o método hwnd não é exportado.

Error description: Error BASE/1004 No exported method: HWND

Att.,

Junior]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Scroll xBrowse :: Reply by Antonio Linares]]> 2025-03-10T12:21:21-06:00 2025-03-10T12:21:21-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45504&p=278264#p278264
Tendrias que implementar el dibujado propio de la barra de scroll y eso es bastante complicado ( WM_NCCALCSIZE y WM_NCPAINT )]]>

Tendrias que implementar el dibujado propio de la barra de scroll y eso es bastante complicado ( WM_NCCALCSIZE y WM_NCPAINT )]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Scroll xBrowse :: Reply by oliveiros junior]]> 2025-03-10T12:29:19-06:00 2025-03-10T12:29:19-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45504&p=278266#p278266 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Scroll xBrowse :: Reply by cnavarro]]> 2025-03-10T15:40:25-06:00 2025-03-10T15:40:25-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45504&p=278272#p278272 <![CDATA[FiveWin for Harbour/xHarbour :: tdatabase Open or New ? : big doubt :: Author Silvio.Falconi]]> 2025-03-10T15:48:02-06:00 2025-03-10T15:48:02-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45507&p=278273#p278273

Code: Select all | Expand

 METHOD New(  ncArea, cFile, cDriver, lShared, lReadOnly, cPassword )   
   METHOD Open( cAlias, cFile, cDriver, lShared, lReadOnly, cPassword )
when I must use Open and when I must use New ?]]>

Code: Select all | Expand

 METHOD New(  ncArea, cFile, cDriver, lShared, lReadOnly, cPassword )   
   METHOD Open( cAlias, cFile, cDriver, lShared, lReadOnly, cPassword )
when I must use Open and when I must use New ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: tdatabase Open or New ? : big doubt :: Reply by cnavarro]]> 2025-03-10T17:30:59-06:00 2025-03-10T17:30:59-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45507&p=278276#p278276 Both methods return Self, so they allow you to create a TDatabase object
If you use New(), and the database is not open, you will have to call the Activate method that opens the file (this method call the Use() method that opens the table)
If you use Open(), it means that the table is not open, so the Open method performs the same functions as New and Activate together
I hope this helps]]>
Both methods return Self, so they allow you to create a TDatabase object
If you use New(), and the database is not open, you will have to call the Activate method that opens the file (this method call the Use() method that opens the table)
If you use Open(), it means that the table is not open, so the Open method performs the same functions as New and Activate together
I hope this helps]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: tdatabase Open or New ? : big doubt :: Reply by Silvio.Falconi]]> 2025-03-11T03:57:46-06:00 2025-03-11T03:57:46-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45507&p=278281#p278281
cnavarro wrote: Mon Mar 10, 2025 11:30 pm Dear Silvio
Both methods return Self, so they allow you to create a TDatabase object
If you use New(), and the database is not open, you will have to call the Activate method that opens the file (this method call the Use() method that opens the table)
If you use Open(), it means that the table is not open, so the Open method performs the same functions as New and Activate together
I hope this helps
I noticed this because in the file where I use to open the tables sometimes I use Open and sometimes I use New, however there is always the USE command example

Code: Select all | Expand

CLASS TXData from TDatabase
      DATA cDbfPath   init ".\DATA\"  
    ENDCLASS

CLASS TCust from TXData
   METHOD New()
   ENDCLASS

METHOD New( lShared ) CLASS TCust
   Default lShared := .t.
   ::super:New(,::cDbfPath + "customers" ,"DBFCDX", lShared)
   if ::use()
      ::setOrder(1)
      ::gotop()
   endif
   RETURN Self
up to now the procedures have not blocked, yesterday I noticed this problem because a dbf would not open for me but it was me who had entered the wrong name]]>
cnavarro wrote: Mon Mar 10, 2025 11:30 pm Dear Silvio
Both methods return Self, so they allow you to create a TDatabase object
If you use New(), and the database is not open, you will have to call the Activate method that opens the file (this method call the Use() method that opens the table)
If you use Open(), it means that the table is not open, so the Open method performs the same functions as New and Activate together
I hope this helps
I noticed this because in the file where I use to open the tables sometimes I use Open and sometimes I use New, however there is always the USE command example

Code: Select all | Expand

CLASS TXData from TDatabase
      DATA cDbfPath   init ".\DATA\"  
    ENDCLASS

CLASS TCust from TXData
   METHOD New()
   ENDCLASS

METHOD New( lShared ) CLASS TCust
   Default lShared := .t.
   ::super:New(,::cDbfPath + "customers" ,"DBFCDX", lShared)
   if ::use()
      ::setOrder(1)
      ::gotop()
   endif
   RETURN Self
up to now the procedures have not blocked, yesterday I noticed this problem because a dbf would not open for me but it was me who had entered the wrong name]]>
<![CDATA[FiveWin for Harbour/xHarbour :: How to Rebuild a Ribbonbar at runtime :: Author vilian]]> 2025-03-11T13:31:33-06:00 2025-03-11T13:31:33-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45514&p=278300#p278300 I need to change(Add and delete tabs/groups) a RibbonBar at runtime. Is it possible? what's the best to do this?]]> I need to change(Add and delete tabs/groups) a RibbonBar at runtime. Is it possible? what's the best to do this?]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: How to Rebuild a Ribbonbar at runtime :: Reply by Antonio Linares]]> 2025-03-11T14:33:40-06:00 2025-03-11T14:33:40-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45514&p=278303#p278303
Please review FWH\samples\rbdesign.prg

right click on the ribbonbar to modify it :)]]>

Please review FWH\samples\rbdesign.prg

right click on the ribbonbar to modify it :)]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Accounting :: Author Otto]]> 2025-03-11T19:04:21-06:00 2025-03-11T19:04:21-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45516&p=278308#p278308 I have now created various prompts for the AI and can automatically recognize booking receipts.
JSON files are then generated for each receipt and automatically transferred into a journal by my program.
This really saves time when entering bookings.

Best regards,
Otto
Image

Image

Image

Image

Image]]>
I have now created various prompts for the AI and can automatically recognize booking receipts.
JSON files are then generated for each receipt and automatically transferred into a journal by my program.
This really saves time when entering bookings.

Best regards,
Otto
Image

Image

Image

Image

Image]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: xhb 1.31 xcc :: Reply by jair]]> 2025-03-12T06:14:22-06:00 2025-03-12T06:14:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45407&p=278316#p278316

Code: Select all | Expand

2025-03-11 18:43:04 LogFile: Reopening file due to size limit breaking 
2025-03-11 18:43:42 INFO: Main thread terminated
2025-03-11 18:43:42 -- CompuRMT end -- 
2025-03-11 18:43:55 -- CompuRMT start -- 
2025-03-11 18:44:03 CRITICAL: *****The program has caused an internal error. Framestack: 
*****Called from: ADEL(0)  in Module: 
*****Called from: FWDELRESOURCE(37)  in Module: .\source\function\checkres.prg
*****Called from: DELETEOBJECT(0)  in Module: 
*****Called from: PALBMPFREE(2430)  in Module: SOURCE\CLASSES\TSBUTTON.PRG
*****Called from: TSBUTTON:FREEBITMAPS(1043)  in Module: SOURCE\CLASSES\TSBUTTON.PRG
*****Called from: TSBUTTON:DESTROY(955)  in Module: SOURCE\CLASSES\TSBUTTON.PRG
*****Called from: TWINDOW:HANDLEEVENT(0)  in Module: 
*****Called from: TCONTROL:HANDLEEVENT(1877)  in Module: .\source\classes\control.prg
*****Called from: TSBUTTON:HANDLEEVENT(1323)  in Module: SOURCE\CLASSES\TSBUTTON.PRG
*****Called from: _FWH(259)  in Module: .\source\classes\window.prg
*****Called from: DIALOGBOXINDIRECTW(0)  in Module: 
*****Called from: TDIALOG:ACTIVATE(325)  in Module: .\source\classes\dialog.prg
*****Called from: LOGABERT(1115)  in Module: .\PRG\CompuRmt.PRG
*****Called from: (b)MAIN(673)  in Module: .\PRG\CompuRmt.PRG
*****Called from: TWINDOW:ACTIVATE(1120)  in Module: .\source\classes\window.prg
*****Called from: MAIN(673)  in Module: .\PRG\CompuRmt.PRG
*****Internal address: 0x75F061
*****Low-level code: 0/FFFFFFFFC0000005: Memory read/write access violation

2025-03-11 18:45:01 INFO: Main thread terminated
2025-03-11 18:45:01 -- CompuRMT end -- 

Code: Select all | Expand

Empresa
======== 
  Empresa:.01 -Filial:.01
  Fantasia:.EMPRESA TESTE
  Real:.EMPRESA TESTE
  Telefone:.
  Email:.
  Cidade:.SH/PR

Application
===========
   Path and name: Y:\Sistemas\Sig_Win\CompuRMT.exe (32 bits)
   Size: ********* bytes
   Time from start: 0 hours 0 mins 10 secs 
   Error occurred at: 11/03/25, 18:44:05
   Error description: 

Stack Calls
===========
   Called from:  => ADEL(0) 
   Called from: .\source\function\checkres.prg => FWDELRESOURCE(37) 
   Called from:  => DELETEOBJECT(0) 
   Called from: SOURCE\CLASSES\TSBUTTON.PRG => PALBMPFREE(2430) 
   Called from: SOURCE\CLASSES\TSBUTTON.PRG => TSBUTTON:FREEBITMAPS(1043) 
   Called from: SOURCE\CLASSES\TSBUTTON.PRG => TSBUTTON:DESTROY(955) 
   Called from:  => TWINDOW:HANDLEEVENT(0) 
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT(1877) 
   Called from: SOURCE\CLASSES\TSBUTTON.PRG => TSBUTTON:HANDLEEVENT(1323) 
   Called from: .\source\classes\window.prg => _FWH(259) 
   Called from:  => DIALOGBOXINDIRECTW(0) 
   Called from: .\source\classes\dialog.prg => TDIALOG:ACTIVATE(325) 
   Called from: .\PRG\CompuRmt.PRG => LOGABERT(1115) 
   Called from: .\PRG\CompuRmt.PRG => (b)MAIN(673) 
   Called from: .\source\classes\window.prg => TWINDOW:ACTIVATE(1120) 
   Called from: .\PRG\CompuRmt.PRG => MAIN(673) 

System
======
   CPU type: Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz 2794 Mhz
   Hardware memory:      16290 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)
   Windows version: 6.2, Build 9200 


Variables in use
================
   Procedure     Type   Value
   ==========================
   ADEL
     Param   1:    A    Len:    42
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :         -1106633967:
                                    3          C   :MAIN(68):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :1762266102:
                                    3          C   :MAIN(208):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :         -1526068133:
                                    3          C   :MAIN(210):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :-905307912:
                                    3          C   :MAIN(211):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :-150329767:
                                    3          C   :MAIN(212):
------------------------------------------------------
                             Len:     3
                                    1          C   :ICON:
                                    2          N   : 299567517:
                                    3          C   :MAIN(549):
------------------------------------------------------
                             Len:     3
                                    1          C   :BMP:
                                    2          N   :-653980546:
                                    3          C   :TBRUSH:NEW(204)->MAIN(551):
------------------------------------------------------
                             Len:     3
                                    1          C   :BRUSH:
                                    2          N   :1661998542:
                                    3          C   :MAIN(551):
------------------------------------------------------
                             Len:     3
                                    1          C   :BMP:
                                    2          N   :         -1660611456:
                                    3          C   :TBRUSH:NEW(215)->MAIN(552):
------------------------------------------------------
                             Len:     3
                                    1          C   :BRUSH:
                                    2          N   :1745884871:
                                    3          C   :MAIN(552):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :-989195964:
                                    3          C   :MAIN(553):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :2131366787:
                                    3          C   :TWINDOW:GETFONT(3174)->TWINDOW:NEW(984)->MAIN(557):
------------------------------------------------------
                             Len:     3
                                    1          C   :BRUSH:
                                    2          N   : 923797512:
                                    3          C   :TBAR:SETCOLOR(2942)->TBAR:SETGRADIENTS(288)->TBAR:NEW(192)->MAIN(568):
------------------------------------------------------
                             Len:     3
                                    1          C   :BRUSH:
                                    2          N   :-955246096:
                                    3          C   :TDIALOG:SETCOLOR(2942)->TDIALOG:NEW(223)->MAIN(594):
------------------------------------------------------
                             Len:     3
                                    1          C   :BRUSH:
                                    2          N   :1594890758:
                                    3          C   :TMSGBAR:SETCOLOR(2942)->TMSGBAR:DEFAULT(296)->TMSGBAR:NEW(185)->MAIN(604):
------------------------------------------------------
                             Len:     3
                                    1          C   :BMP:
                                    2          N   :-502983143:
                                    3          C   :TMSGBAR:PAINTBAR(727)->TMSGBAR:PAINT(669)->(b)TMSGBAR:TMSGBAR(72)->TMSGBAR:DISPLAY(0)->TMSGBAR:HANDLEEVENT(1843)->_FWH(1008)->UPDATEWINDOW(0)->TWINDOW:ACTIVATE(1111)->MAIN(673):
------------------------------------------------------
Array Muito Grande Passivo De erro.
     Param   2:    N            18
     Local   1:    U    NIL
     Local   2:    U    NIL
   FWDELRESOURCE
     Param   1:    N             -1341645292
     Local   1:    N            18
   DELETEOBJECT
     Param   1:    N             -1341645292
   PALBMPFREE
     Param   1:    N        331266
     Param   2:    N             -1341645292
   TSBUTTON:FREEBITMAPS
     Local   1:    N            31
     Local   2:    O    Class: TSBUTTON
     Local   3:    N             1
     Local   4:    L    T
     Local   5:    C    ""
   TSBUTTON:DESTROY
     Local   1:    O    Class: TSBUTTON
   TWINDOW:HANDLEEVENT
     Param   1:    N             2
     Param   2:    N             0
     Param   3:    N             0
   TCONTROL:HANDLEEVENT
     Param   1:    N             2
     Param   2:    N             0
     Param   3:    N             0
     Local   1:    O    Class: TSBUTTON
     Local   2:    U    NIL
   TSBUTTON:HANDLEEVENT
     Param   1:    N             2
     Param   2:    N             0
     Param   3:    N             0
     Local   1:    O    Class: TSBUTTON
   _FWH
     Param   1:    N             0
     Param   2:    N             2
     Param   3:    N             0
     Param   4:    N             0
     Param   5:    N            25
     Local   1:    O    Class: TSBUTTON
   DIALOGBOXINDIRECTW
     Param   1:    N       5570560
     Param   2:    C    "€          Ó °     L o g i n   d e   A b e r t u r a .     ‚V        - § n T I M A G E          P    7  L 
 o T S T S A Y   D a t a   B a s e :     € P    7  -  p E D I T   1 1 / 0 3 / 2 5        P    7  , 
 q T S T S A Y   S e n h a :     € P    7 ( ( 
 r E D I T   A D M 0 3 1 1 2 5          P    d  < 
 s T S T S A Y   U s u a r i o :     € P    d ( ] 
 t E D I T                                                                      P    7 7 œ 
 u T S T S A Y   S e l e c i o n e   a   E m p r e s a :     ¡P    7 A Œ Œ v C O M B O B O X          P    7 P D 
 w T S T S A Y   A m b i e n t e :       ¡P    7 Z Œ Œ x C O M B O B O X       € P    U ‘ $  y B U T T O N       € P    ‚ ‘ $  z B U T T O N          P    7 k –  { S T A T I C         P    7 z Œ 
 | m s c t l s _ p r o g r e s s 3 2            P    x „  
 } S T A T I C   0   %       "
     Param   3:    N       6489384
     Param   4:    O    Class: TDIALOG
   TDIALOG:ACTIVATE
     Param   1:    U    NIL
     Param   2:    U    NIL
     Param   3:    B    {|| Block }
     Param   4:    L    T
     Param   5:    U    NIL
     Param   6:    L    T
     Param   7:    B    {|| Block }
     Param   8:    U    NIL
     Param   9:    U    NIL
     Param  10:    U    NIL
     Param  11:    U    NIL
     Param  12:    L    F
     Param  13:    O    Class: TDIALOG
     Param  14:    U    NIL
     Param  15:    U    NIL
     Local   1:    O    Class: TDIALOG
     Local   2:    N       6489384
     Local   3:    U    
     Local   4:    O    Class: TDIALOG
   LOGABERT
     Param   1:    L    F
     Param   2:    L    T
     Param   3:    L    T
     Param   4:    L    T
     Param   5:    L    F
     Param   6:    L    T
     Local   1:    L    T
     Local   2:    L    F
     Local   3:    O    Class: TDIALOG
     Local   4:    U    NIL
     Local   5:    U    NIL
     Local   6:    U    NIL
     Local   7:    U    NIL
     Local   8:    U    NIL
     Local   9:    U    NIL
     Local  10:    C    ""
     Local  11:    A    Len:     0
     Local  12:    C    ""
   (b)MAIN
     Param   1:    O    Class: TWINDOW
   TWINDOW:ACTIVATE
     Param   1:    C    "MAXIMIZED"
     Param   2:    U    NIL
     Param   3:    U    NIL
     Param   4:    U    NIL
     Param   5:    U    NIL
     Param   6:    U    NIL
     Param   7:    B    {|| Block }
     Param   8:    B    {|| Block }
     Param   9:    U    NIL
     Param  10:    U    NIL
     Param  11:    U    NIL
     Param  12:    U    NIL
     Param  13:    U    NIL
     Param  14:    U    NIL
     Param  15:    U    NIL
     Param  16:    U    NIL
     Param  17:    B    {|| Block }
     Param  18:    U    NIL
     Param  19:    U    NIL
     Param  20:    L    F
     Param  21:    U    NIL
     Local   1:    O    Class: TWINDOW
     Local   2:    U    NIL
     Local   3:    U    NIL
   MAIN
     Local   1:    U    NIL
     Local   2:    U    NIL
     Local   3:    U    NIL
     Local   4:    U    NIL
     Local   5:    U    NIL
     Local   6:    U    NIL
     Local   7:    C    "Release {dt}{h}: {11/03/25}{18:43:54}"
     Local   8:    C    "xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)"
     Local   9:    C    "FWH 25.01"
     Local  10:    N           656
     Local  11:    L    T
     Local  12:    L    F
     Local  13:    L    T
     Local  14:    O    Class: TCURSOR
     Local  15:    C    "10740"
     Local  16:    C    "ReleasePAF .003.000"
     Local  17:    C    "ReleasePDV .003.321"
     Local  18:    C    "ReleaseNFe .003.029"
     Local  19:    C    "ReleaseSql .003.015"
     Local  20:    A    Len:     0
     Local  21:    A    Len:     0
     Local  22:    U    NIL
     Local  23:    O    Class: TFONT

Linked RDDs
===========
   DBF
   DBFFPT
   SIXCDX
   DBFBLOB
   DBFCDX
   DBFNTX
   ADS
   ADT
   ADSVFP
   ADSCDX
   ADSNTX

DataBases in use
================

  1:    MNT              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          4            3      .F.   .T.

     Indexes in use                           TagName
        => CODUSUARIO+INICONEXAO              TAG_MNT_01
           USUREDE                            TAG_MNT_02
           HOST                               TAG_MNT_03
           IP                                 TAG_MNT_04
           INICONEXAO                         TAG_MNT_05
           AMBIENTE+USUREDE                   TAG_MNT_06
           NOMUSUARIO                         TAG_MNT_07
           FUNCAO                             TAG_MNT_08
           ROTINA                             TAG_MNT_09
           SETOR                              TAG_MNT_10
           DEPARTAMEN                         TAG_MNT_11
           COD_FIL                            TAG_MNT_12
           EMPRESA                            TAG_MNT_13
           MODULO                             TAG_MNT_14

     Relations in use

  2:    HLP              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         20           28      .F.   .F.

     Indexes in use                           TagName
        => VARIAVEL                           TAG_TOP_01
           ALIAS+VARIAVEL                     TAG_TOP_02
           FUNNAME+VARIAVEL                   TAG_TOP_03

     Relations in use

  3:    TOP              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            4      .F.   .F.

     Indexes in use                           TagName
        => ID                                 TAG_TOP_01

     Relations in use

  4:    USU              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            3      .F.   .F.

     Indexes in use                           TagName
        => CodUsu                             TAG_USU_01
           NomUsu                             TAG_USU_02
           SenUsu                             TAG_USU_03

     Relations in use

  5:    SM0              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => M0_CODIGO+M0_CODFIL                TAG_EMP_01

     Relations in use

  6:    MOD              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         16           17      .F.   .F.

     Indexes in use                           TagName
           ID                                 TAG_MOD_01
           NOME                               TAG_MOD_02
        => DESC                               TAG_MOD_03

     Relations in use

  7:    PER              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         24           23      .F.   .T.

     Indexes in use                           TagName
        => CODUSU+CODEMP+CODFIL+MODULO        TAG_PER_01
           CODUSU+CODEMP+CODFIL+ARQMNU        TAG_PER_02

     Relations in use

  8:    SX1              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            2      .F.   .F.

     Indexes in use                           TagName
        => X1_GRUPO+X1_ORDEM                  TAG_SX1_01
           X1_GRUPO+X1_VARIAVL+X1_ORDEM       TAG_SX1_02
           X1_GRUPO+X1_VARIAVL+X1_VAR01       TAG_SX1_03

     Relations in use

  9:    SX2              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          6          240      .F.   .F.

     Indexes in use                           TagName
        => X2_CHAVE                           TAG_SX2_01
           X2_ARQUIVO                         TAG_SX2_02

     Relations in use

 10:    SX3              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
       5489         5944      .F.   .F.

     Indexes in use                           TagName
        => X3_ARQUIVO+X3_ORDEM                TAG_SX3_01
           X3_CAMPO+X3_ARQUIVO                TAG_SX3_02
           X3_ARQUIVO+X3_FOLDER               TAG_SX3_03
           X3_ARQUIVO+X3_CAMPO                TAG_SX3_04

     Relations in use

 11:    SX4              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => X4_FILIAL+DTOS(X4_DATA)+X4_CODUSU  TAG_SX4_01
           X4_FILIAL+DTOS(X4_DATA)+X4_NOMUSU  TAG_SX4_02
           X4_FILIAL+DTOS(X4_DTCOMP)+X4_CODUSU
                                              TAG_SX4_03
           X4_FILIAL+X4_CODUSU+DTOS(X4_DATA)+X4_HORA
                                              TAG_SX4_04
           X4_FILIAL+DTOS(X4_DATA)+X4_HORA    TAG_SX4_05
           X4_FILIAL+X4_CODUSU+DTOS(X4_DTCOMP)+X4_HRCOMP
                                              TAG_SX4_06
           X4_FILIAL+DTOS(X4_DTCOMP)+X4_HRCOMP
                                              TAG_SX4_07
           X4_FILIAL+X4_NOMUSU                TAG_SX4_08

     Relations in use

 12:    SX6              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        201          451      .F.   .F.

     Indexes in use                           TagName
        => X6_VAR                             TAG_SX6_01

     Relations in use

 13:    SX7              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          938      .F.   .F.

     Indexes in use                           TagName
        => X7_CAMPO+X7_SEQUENC                TAG_SX6_01

     Relations in use

 14:    SIX              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        876          950      .F.   .F.

     Indexes in use                           TagName
        => INDICE+ORDEM                       TAG_SIX_01
           CHAVE                              TAG_SIX_02

     Relations in use

 15:    SIY              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          2          108      .F.   .F.

     Indexes in use                           TagName
        => INDICE+ORDEM+CAMPO                 TAG_SIY_01

     Relations in use

 16:    SXA              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         34           48      .F.   .F.

     Indexes in use                           TagName
        => XA_ALIAS+XA_ORDEM                  TAG_SXA_01

     Relations in use

 17:    SXB              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        949         1113      .F.   .F.

     Indexes in use                           TagName
        => XB_ALIAS+XB_TIPO+XB_SEQ+XB_COLUNA  TAG_SXB_01
           XB_ALIAS+XB_TIPO+XB_COLUNA+XB_SEQ  TAG_SXB_02

     Relations in use

 18:    SXC              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         12           61      .F.   .F.

     Indexes in use                           TagName
        => XC_CAMPO+XC_RAMO+XC_SEGMENT        TAG_SXC_01

     Relations in use

 19:    SXE              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            5      .F.   .F.

     Indexes in use                           TagName

     Relations in use

 20:    SXF              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => XF_FILIAL+XF_MODULO+XF_USUARIO+XF_TIPO+DESCEND(DTOS(XF_DATA))+DESCEND(XF_HORA)
                                              TAG_SXF_01
           XF_FILIAL+XF_MODULO+XF_USUARIO+XF_TIPO+XF_FUNCAO+XF_PARAMET
                                              TAG_SXF_02
           XF_FILIAL+XF_MODULO+XF_USUARIO+XF_FUNCAO+XF_PARAMET+XF_TIPO
                                              TAG_SXF_03

     Relations in use

 21:    LOG              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => CALIAS+DTOS(DATA)                  TAG_LOG_01
           USU +CALIAS+DTOS(DATA)             TAG_LOG_02
           DTOS(DATA)                         TAG_LOG_03
           USU + DTOS(DATA)                   TAG_LOG_04
           UPPER( MODU ) + DTOS(DATA)         TAG_LOG_05
           USU + UPPER( MODU ) + DTOS(DATA)   TAG_LOG_06

     Relations in use

 22: => SXG              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        132          414      .F.   .F.

     Indexes in use                           TagName
        => XG_MODULO+XG_ORDEM+XG_CODUSU       TAG_SXG_01
           XG_CODUSU+XG_FUNCAO                TAG_SXG_02
           XG_MODULO+XG_CODUSU+XG_ORDEM       TAG_SXG_03

     Relations in use

     --- Conteudo do registro corrente --------------------------
      XG_MODULO: 99
       XG_ORDEM: 01
      XG_TITULO: Atualizacao         
      XG_FUNCAO: P_CfgB120()         
      XG_PROPRI: S
       XG_USADO: S
        XG_TIPO: R
       XG_GROUP: N
      XG_BITMAP: BOT_ATUALIZACAO                                   
      XG_CODUSU: 000
     ------------------------------------------------------------

 23:    SM2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          4            4      .F.   .F.

     Indexes in use                           TagName
        => Upper(M2_FILIAL+DESCEND(DTOS(M2_DATA))+DESCEND(M2_SEQ))
                                              SM201001
           Upper(M2_FILIAL+DTOS(M2_DATA))     SM201002

     Relations in use

 24:    SX5              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1         2813      .F.   .F.

     Indexes in use                           TagName
        => Upper(X5_FILIAL+X5_TABELA+X5_CHAVE)
                                              SX501001
           Upper(X5_FILIAL+X5_TABELA+substr(X5_DESCRI,1,100))
                                              SX501002

     Relations in use

 25:    AGE              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(GE_FILIAL+GE_TIPO+DESCEND(DTOS(GE_DTAGE)))
                                              AGE01001
           Upper(GE_FILIAL+GE_TIPO+DESCEND(DTOS(GE_DTCAD)))
                                              AGE01002
           Upper(GE_FILIAL+GE_NOMCLI)         AGE01003
           Upper(GE_FILIAL+GE_CODCLI)         AGE01004
           Upper(GE_FILIAL+GE_TIPO+DTOS(GE_DTAGE))
                                              AGE01005

     Relations in use

 26:    TEL              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(EL_FILIAL+EL_NOMEFON)        TEL01001
           Upper(EL_FILIAL+EL_FONEFON)        TEL01002
           Upper(EL_FILIAL+EL_FANTASI)        TEL01003
           Upper(EL_FILIAL+EL_CODFON)         TEL01004

     Relations in use

 27:    SA1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => Upper(A1_FILIAL+A1_CODCLI)         SA101001
           Upper(A1_FILIAL+A1_NOMCLI)         SA101002
           Upper(A1_FILIAL+STRZERO(MONTH(A1_DTNASCL),2)+STRZERO(DAY(A1_DTNASCL),2)+A1_NOMCLI)
                                              SA101003
           Upper(A1_FILIAL+(STRZERO(MONTH(A1_DTNASCO),2)+STRZERO(DAY(A1_DTNASCO),2)))
                                              SA101004
           Upper(A1_FILIAL+A1_CIDCLI+A1_NOMCLI)
                                              SA101005
           Upper(A1_FILIAL+DTOS(A1_DTCAD))    SA101006
           Upper(A1_FILIAL+A1_FANTASI)        SA101007
           Upper(A1_FILIAL+A1_CICLI)          SA101008
           Upper(A1_FILIAL+A1_CODVEND+A1_CODCLI)
                                              SA101009
           Upper(A1_FILIAL+A1_CODVEND+A1_NOMCLI)
                                              SA101010
           Upper(A1_FILIAL+A1_ROTA)           SA101011
           Upper(A1_FILIAL+A1_UFCLI+A1_CODCLI)
                                              SA101012
           Upper(A1_FILIAL+A1_UFCLI+A1_NOMCLI)
                                              SA101013
           Upper(A1_FILIAL+A1_CODCLI+A1_EXPORTA)
                                              SA101014
           Upper(A1_FILIAL+A1_UFCLI+A1_CIDCLI+A1_NOMCLI)
                                              SA101015

     Relations in use

 28:    SF5              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            2      .F.   .F.

     Indexes in use                           TagName
        => Upper(F5_FILIAL+F5_CODIGO)         SF501001
           Upper(F5_FILIAL+F5_DESC)           SF501002

     Relations in use

 29:    SB1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B1_FILIAL+B1_CODPRO)         SB101001
           Upper(B1_FILIAL+B1_DESPRO)         SB101002
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_CODPRO)
                                              SB101003
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_DESPRO)
                                              SB101004
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_MARCA+B1_DESPRO)
                                              SB101005
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_REF)
                                              SB101006
           Upper(B1_FILIAL+B1_MARCA+B1_DESPRO+B1_REF)
                                              SB101007
           Upper(B1_FILIAL+B1_CODBARR)        SB101008
           Upper(B1_FILIAL+B1_REF)            SB101009
           Upper(B1_FILIAL+DTOS(B1_DTCAD))    SB101010
           Upper(B1_FILIAL+B1_TIPO+B1_GRUPRO+B1_SGRUPRO+B1_CODPRO)
                                              SB101011
           Upper(B1_FILIAL+B1_TAMANHO+B1_DESPRO)
                                              SB101012
           Upper(B1_FILIAL+B1_CODGRAD)        SB101013
           Upper(B1_FILIAL+B1_TECRAPI)        SB101014
           Upper(B1_FILIAL+B1_CODEMBA)        SB101015

     Relations in use

 30:    SFB              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1           26      .F.   .F.

     Indexes in use                           TagName
        => Upper(FB_FILIAL+FB_COD+FB_CODECF)  SFB01001
           Upper(FB_FILIAL+FB_CODECF+FB_COD)  SFB01002
           Upper(FB_FILIAL+FB_DESC)           SFB01003

     Relations in use

 31:    SA3              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => Upper(A3_FILIAL+A3_CODVEN)         SA301001
           Upper(A3_FILIAL+A3_NOME)           SA301002
           Upper(A3_FILIAL+STRZERO(MONTH(A3_DTNASC),2)+STRZERO(DAY(A3_DTNASC),2)+A3_NOME)
                                              SA301003
           Upper(A3_FILIAL+A3_GERENTE)        SA301004
           A3_CODVEN                          SA39999

     Relations in use

 32:    SAF              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(AF_FILIAL+AF_CODVEN)         SAF01001

     Relations in use

 33:    SF2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_CLIENTE+DTOS(F2_DTEMISS))
                                              SF201001
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_VEND+DTOS(F2_DTEMISS))
                                              SF201002
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_TRANSP+DTOS(F2_DTEMISS))
                                              SF201003
           Upper(F2_FILIAL+DTOS(F2_DTEMISS)+F2_CLIENTE+F2_SERIE+F2_DOC)
                                              SF201004
           Upper(F2_FILIAL+DTOS(F2_DTEMISS)+F2_VEND+F2_SERIE+F2_DOC)
                                              SF201005
           Upper(F2_FILIAL+F2_CLIENTE+F2_SERIE+F2_DOC+DTOS(F2_DTEMISS))
                                              SF201006
           Upper(F2_FILIAL+F2_CLIENTE+DTOS(F2_DTEMISS)+F2_SERIE+F2_DOC)
                                              SF201007
           Upper(F2_FILIAL+F2_VEND+F2_SERIE+F2_DOC+DTOS(F2_DTEMISS))
                                              SF201008
           Upper(F2_FILIAL+F2_VEND+DTOS(F2_DTEMISS)+F2_SERIE+F2_DOC)
                                              SF201009
           Upper(F2_FILIAL+DTOS(F2_DTENTRE)+F2_HORA)
                                              SF201010
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+DESCEND(F2_DOC))
                                              SF201011
           Upper(F2_FILIAL+F2_NOMCLI+DTOS(F2_DTEMISS)+F2_TIPIMP+F2_SERIE+F2_DOC)
                                              SF201012
           Upper(F2_FILIAL+F2_NFEID)          SF201013
           Upper(F2_FILIAL+F2_NSERECF+F2_LIMFECF+F2_CUPFIS)
                                              SF201014
           Upper(F2_FILIAL+F2_PEDIDO)         SF201015

     Relations in use

 34:    NFS              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(NFS_FILIAL+NFS_SERIE+NFS_DOC)
                                              NFS01001
           Upper(NFS_FILIAL+NFS_CHNFE)        NFS01002
           Upper(NFS_FILIAL+NFS_SITUAC+NFS_SERIE+NFS_DOC)
                                              NFS01003
           Upper(NFS_FILIAL+NFS_STATUS+NFS_SERIE+NFS_DOC)
                                              NFS01004
           Upper(NFS_FILIAL+NFS_TIPDOC+NFS_SERIE+NFS_DOC+NFS_CLIFOR)
                                              NFS01005
           Upper(NFS_FILIAL+NFS_STATUS+NFS_SERIE+descend(NFS_DOC))
                                              NFS01006
           Upper(NFS_FILIAL+NFS_SERIE+descend(NFS_DOC))
                                              NFS01007
           Upper(NFS_FILIAL+NFS_SITUAC+NFS_SERIE+descend(NFS_DOC))
                                              NFS01008
           Upper(NFS_FILIAL+NFS_MODEMI+NFS_SITUAC+NFS_SERIE+NFS_DOC)
                                              NFS01009
           Upper(NFS_FILIAL+DTOS(NFS_DIGITA)+NFS_SERIE+NFS_DOC)
                                              NFS01010
           Upper(NFS_FILIAL+NFS_SERIE+DTOS(NFS_AUTORI)+NFS_DOC)
                                              NFS01011

     Relations in use

 35:    SD2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_ITEM)
                                              SD201001
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+DTOS(D2_DTEMISS))
                                              SD201002
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_CLIENTE+D2_ITEM)
                                              SD201003
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_PRODUTO+D2_ALMOX+D2_LOTE)
                                              SD201004
           Upper(D2_FILIAL+DTOS(D2_DTEMISS)+D2_SERIE+D2_DOC)
                                              SD201005
           Upper(D2_FILIAL+D2_CLIENTE+D2_SERIE+D2_DOC)
                                              SD201006
           Upper(D2_FILIAL+D2_PRODUTO+D2_SERIE+D2_DOC)
                                              SD201007
           Upper(D2_FILIAL+D2_PEDIDO+D2_SERIE+D2_DOC+D2_ITEM)
                                              SD201008
           Upper(D2_FILIAL+D2_TPIMORI+D2_SERORI+D2_NFORI+D2_CLIENTE+D2_PRODUTO+D2_ALMOX+D2_LOTE)
                                              SD201009
           Upper(D2_FILIAL+D2_NSERECF+D2_LIMFECF+D2_CUPFIS+D2_ITEM)
                                              SD201010
           Upper(D2_FILIAL+D2_TIPIMP+DTOS(D2_DTEMISS))
                                              SD201011
           Upper(D2_FILIAL+D2_PRODUTO+DESCEND(DTOS(D2_DTEMISS)))
                                              SD201012

     Relations in use

 36:    SDM              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(DM_FILIAL+DM_TIPIMP+DM_SERIE+DM_DOC+DM_ITEM)
                                              SDM01001

     Relations in use

 37:    FE1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(FE_FILIAL+FE_MESANO)         FE101001
           Upper(FE_FILIAL+FE_ANO)            FE101002

     Relations in use

 38:    SB9              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B9_FILIAL+B9_CODPRO+B9_ALMOX+B9_GRADE)
                                              SB901001
           Upper(B9_FILIAL+B9_DESPRO)         SB901002
           Upper(B9_FILIAL+B9_CODBARR)        SB901003
           Upper(B9_FILIAL+B9_CODPRO+B9_COLUNA+B9_LINHA)
                                              SB901004

     Relations in use

 39:    SF4              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1           99      .F.   .F.

     Indexes in use                           TagName
        => Upper(F4_FILIAL+F4_CODFISC)        SF401001
           Upper(F4_FILIAL+F4_CFOP)           SF401002
           Upper(F4_FILIAL+F4_DESFISC)        SF401003
           Upper(F4_FILIAL+F4_SCFOP)          SF401004

     Relations in use

 40:    PCC              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          562      .F.   .F.

     Indexes in use                           TagName
        => Upper(CC_FILIAL+CC_CONTA)          PCC01001
           Upper(CC_FILIAL+CC_DESCON)         PCC01002
           Upper(CC_FILIAL+CC_CODIGO)         PCC01003

     Relations in use

 41:    SB2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B2_FILIAL+B2_CODPRO+B2_ALMOX)
                                              SB201001
           Upper(B2_FILIAL+B2_DESPRO+B2_ALMOX)
                                              SB201002
           Upper(B2_FILIAL+B2_ALMOX+B2_CODPRO)
                                              SB201003
           Upper(B2_FILIAL+B2_ALMOX+B2_DESPRO)
                                              SB201004
           Upper(B2_FILIAL+B2_GRADE)          SB201005

     Relations in use

 42:    SD3              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D3_FILIAL+D3_COD+D3_TM)      SD301001
           Upper(D3_FILIAL+D3_COD+D3_ALMOX+D3_LOTE+DTOS(D3_EMISSAO))
                                              SD301002
           Upper(D3_FILIAL+D3_COD+D3_OP+D3_SEQ)
                                              SD301003
           Upper(D3_FILIAL+D3_COD+D3_OP+D3_DOC)
                                              SD301004
           Upper(D3_FILIAL+D3_DESC)           SD301005
           Upper(D3_FILIAL+D3_TM+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301006
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301007
           Upper(D3_FILIAL+D3_COD+DTOS(D3_EMISSAO))
                                              SD301008
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_ROTINA)
                                              SD301009
           Upper(D3_FILIAL+DTOS(D3_EMISSAO)+D3_VENCOMP+D3_COD)
                                              SD301010
           Upper(D3_FILIAL+D3_REF+D3_ALMOX+D3_VENCOMP+DTOS(D3_EMISSAO))
                                              SD301011
           Upper(D3_FILIAL+D3_COD+D3_CLIFOR+DTOS(D3_EMISSAO))
                                              SD301012
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_SEQ)
                                              SD301013
           Upper(D3_FILIAL+D3_TM+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301014
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301015

     Relations in use

 43:    SE1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(E1_FILIAL+E1_PREFIXO+E1_NUMDUP+E1_NUMPARC+E1_CODCLI+E1_CODHIST+E1_CODTIPO+DTOS(E1_DTEMIS))
                                              SE101001
           Upper(E1_FILIAL+E1_PREFIXO+E1_NUMDUP+E1_CODCLI)
                                              SE101002
           Upper(E1_FILIAL+E1_CODCLI+E1_PREFIXO+E1_NUMDUP+E1_NUMPARC+DTOS(E1_DTVENC))
                                              SE101003
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTPAGO)+DTOS(E1_DTVENC))
                                              SE101004
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTVENC))
                                              SE101005
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTEMIS))
                                              SE101006
           Upper(E1_FILIAL+DTOS(E1_DTPAGO)+E1_CODTIPO)
                                              SE101007
           Upper(E1_FILIAL+DTOS(E1_DTVENC)+E1_CODTIPO)
                                              SE101008
           Upper(E1_FILIAL+DTOS(E1_DTEMIS)+E1_CODCLI)
                                              SE101009
           Upper(E1_FILIAL+E1_SITUA+DTOS(E1_DTVENC))
                                              SE101010
           Upper(E1_FILIAL+E1_VENDEDO+DTOS(E1_DTPAGO))
                                              SE101011
           Upper(E1_FILIAL+E1_NOME+DTOS(E1_DTEMIS))
                                              SE101012
           Upper(E1_FILIAL+E1_CHAVDES)        SE101013
           Upper(E1_FILIAL+E1_COMITIT)        SE101014
           Upper(E1_FILIAL+E1_BOLETON)        SE101015

     Relations in use

 44:    SF1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_FORNECE+DTOS(F1_DTEMISS))
                                              SF101001
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_COMP+DTOS(F1_DTEMISS))
                                              SF101002
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_TRANSP+DTOS(F1_DTEMISS))
                                              SF101003
           Upper(F1_FILIAL+DTOS(F1_DTEMISS)+F1_FORNECE+F1_SERIE+F1_DOC)
                                              SF101004
           Upper(F1_FILIAL+DTOS(F1_DTEMISS)+F1_COMP+F1_SERIE+F1_DOC)
                                              SF101005
           Upper(F1_FILIAL+F1_FORNECE+F1_SERIE+F1_DOC+DTOS(F1_DTEMISS))
                                              SF101006
           Upper(F1_FILIAL+F1_FORNECE+DTOS(F1_DTEMISS)+F1_SERIE+F1_DOC)
                                              SF101007
           Upper(F1_FILIAL+F1_COMP+F1_SERIE+F1_DOC+DTOS(F1_DTEMISS))
                                              SF101008
           Upper(F1_FILIAL+F1_COMP+DTOS(F1_DTEMISS)+F1_SERIE+F1_DOC)
                                              SF101009
           Upper(F1_FILIAL+DTOS(F1_DTENTRE)+F1_HORA)
                                              SF101010
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+DESCEND(F1_DOC))
                                              SF101011
           Upper(F1_FILIAL+F1_NOMFOR+DTOS(F1_DTENTRE)+F1_TIPIMP+F1_SERIE+F1_DOC)
                                              SF101012
           Upper(F1_FILIAL+F1_NFEID)          SF101013
           Upper(F1_FILIAL+DTOS(F1_DTENTRE)+F1_FORNECE+F1_SERIE+F1_DOC)
                                              SF101014
           Upper(F1_FILIAL+F1_TIPIMP+F1_DOC)  SF101015

     Relations in use

 45:    SD1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_ITEM)
                                              SD101001
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101002
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_FORNECE+D1_ITEM)
                                              SD101003
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_PRODUTO+D1_ALMOX+D1_LOTE)
                                              SD101004
           Upper(D1_FILIAL+DTOS(D1_DTEMISS)+D1_SERIE+D1_DOC+D1_FORNECE)
                                              SD101005
           Upper(D1_FILIAL+D1_FORNECE+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101006
           Upper(D1_FILIAL+D1_PRODUTO+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101007
           Upper(D1_FILIAL+D1_PEDIDO+D1_SERIE+D1_DOC+D1_ITEM)
                                              SD101008
           Upper(D1_FILIAL+D1_TPIMORI+D1_SERORI+D1_NFORI+D1_FORNECE+D1_PRODUTO+D1_ALMOX+D1_LOTE)
                                              SD101009
           Upper(D1_FILIAL+DTOS(D1_DTENTRE)+D1_SERIE+D1_DOC+D1_FORNECE)
                                              SD101010
           Upper(D1_FILIAL+D1_PRODUTO+DESCEND(DTOS(D1_DTEMISS)))
                                              SD101011
           Upper(D1_FILIAL+DTOS(D1_DTENTRE)+D1_PRODUTO)
                                              SD101012
           Upper(D1_FILIAL+D1_FORNECE+D1_PRODUTO+DESCEND(DTOS(D1_DTEMISS)))
                                              SD101013
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_FORNECE+D1_PRODUTO+D1_ITEM)
                                              SD101014

     Relations in use

 46:    LSN              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          4           68      .F.   .F.

     Indexes in use                           TagName
        => Upper(SN_FILIAL+SN_TIPIMP+SN_SERIE+SN_NUMERO)
                                              LSN01001
           Upper(SN_FILIAL+SN_TIPIMP+SN_NUMERO+SN_SERIE)
                                              LSN01002
           Upper(SN_FILIAL+SN_SERIE+SN_TIPIMP+SN_NUMERO)
                                              LSN01003
           Upper(SN_FILIAL+SN_SERIE+SN_NUMERO+SN_TIPIMP)
                                              LSN01004

     Relations in use

Classes in use:
===============
     1 ERROR
     2 HASHENTRY
     3 HBCLASS
     4 HBOBJECT
     5 HB_LOGGER
     6 HB_LOGCHANNEL
     7 HB_LOGCONSOLE
     8 HB_LOGFILE
     9 TFONT
    10 TINI
    11 TIMMERSIG
    12 TWINDOW
    13 TDIALOG
    14 TBRUSH
    15 TCONTROL
    16 TBITMAP
    17 TREG32
    18 TRECT
    19 OTBLOG
    20 TCURSOR
    21 TICON
    22 TBAR
    23 TSBUTTON
    24 TCHECKBOX
    25 TMSGBAR
    26 TMSGITEM
    27 TSTSAY
    28 TSLINES
    29 TIMAGE
    30 TVGET
    31 GET
    32 TGET
    33 TCLIPGET
    34 TCOMBOBOX
    35 TSAY
    36 TPROGRESS
    37 TIPCLIENT
    38 TIPCLIENTHTTP
    39 TURL
    40 TBTNBMP
    41 TFRXCFG
    42 TFILE
    43 TTXTFILE
    44 TXMLDOCUMENT
    45 TXMLNODE
    46 TXMLITERATOR
    47 TXMLITERATORSCAN
    48 TMENU
    49 TMENUITEM
    50 TSTRUCT

Memory Analysis
===============
      2419 Static variables

   Dynamic memory consume:
      Actual  Value:          0 bytes
      Highest Value:          0 bytes


Versao do sistema
=================
      Versao         :  7.10
      Release        :  10740
      Data Compilaçao:  06-05-2024 14:02:02
      SVN            :  7969
      Disco          :  Y: Total : 465.75 GB   Livre : 75.09 GB 
      CNPJEmp        :  
      PLANOSIS       :  1
      UpdateAuto     :  N

]]>

Code: Select all | Expand

2025-03-11 18:43:04 LogFile: Reopening file due to size limit breaking 
2025-03-11 18:43:42 INFO: Main thread terminated
2025-03-11 18:43:42 -- CompuRMT end -- 
2025-03-11 18:43:55 -- CompuRMT start -- 
2025-03-11 18:44:03 CRITICAL: *****The program has caused an internal error. Framestack: 
*****Called from: ADEL(0)  in Module: 
*****Called from: FWDELRESOURCE(37)  in Module: .\source\function\checkres.prg
*****Called from: DELETEOBJECT(0)  in Module: 
*****Called from: PALBMPFREE(2430)  in Module: SOURCE\CLASSES\TSBUTTON.PRG
*****Called from: TSBUTTON:FREEBITMAPS(1043)  in Module: SOURCE\CLASSES\TSBUTTON.PRG
*****Called from: TSBUTTON:DESTROY(955)  in Module: SOURCE\CLASSES\TSBUTTON.PRG
*****Called from: TWINDOW:HANDLEEVENT(0)  in Module: 
*****Called from: TCONTROL:HANDLEEVENT(1877)  in Module: .\source\classes\control.prg
*****Called from: TSBUTTON:HANDLEEVENT(1323)  in Module: SOURCE\CLASSES\TSBUTTON.PRG
*****Called from: _FWH(259)  in Module: .\source\classes\window.prg
*****Called from: DIALOGBOXINDIRECTW(0)  in Module: 
*****Called from: TDIALOG:ACTIVATE(325)  in Module: .\source\classes\dialog.prg
*****Called from: LOGABERT(1115)  in Module: .\PRG\CompuRmt.PRG
*****Called from: (b)MAIN(673)  in Module: .\PRG\CompuRmt.PRG
*****Called from: TWINDOW:ACTIVATE(1120)  in Module: .\source\classes\window.prg
*****Called from: MAIN(673)  in Module: .\PRG\CompuRmt.PRG
*****Internal address: 0x75F061
*****Low-level code: 0/FFFFFFFFC0000005: Memory read/write access violation

2025-03-11 18:45:01 INFO: Main thread terminated
2025-03-11 18:45:01 -- CompuRMT end -- 

Code: Select all | Expand

Empresa
======== 
  Empresa:.01 -Filial:.01
  Fantasia:.EMPRESA TESTE
  Real:.EMPRESA TESTE
  Telefone:.
  Email:.
  Cidade:.SH/PR

Application
===========
   Path and name: Y:\Sistemas\Sig_Win\CompuRMT.exe (32 bits)
   Size: ********* bytes
   Time from start: 0 hours 0 mins 10 secs 
   Error occurred at: 11/03/25, 18:44:05
   Error description: 

Stack Calls
===========
   Called from:  => ADEL(0) 
   Called from: .\source\function\checkres.prg => FWDELRESOURCE(37) 
   Called from:  => DELETEOBJECT(0) 
   Called from: SOURCE\CLASSES\TSBUTTON.PRG => PALBMPFREE(2430) 
   Called from: SOURCE\CLASSES\TSBUTTON.PRG => TSBUTTON:FREEBITMAPS(1043) 
   Called from: SOURCE\CLASSES\TSBUTTON.PRG => TSBUTTON:DESTROY(955) 
   Called from:  => TWINDOW:HANDLEEVENT(0) 
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT(1877) 
   Called from: SOURCE\CLASSES\TSBUTTON.PRG => TSBUTTON:HANDLEEVENT(1323) 
   Called from: .\source\classes\window.prg => _FWH(259) 
   Called from:  => DIALOGBOXINDIRECTW(0) 
   Called from: .\source\classes\dialog.prg => TDIALOG:ACTIVATE(325) 
   Called from: .\PRG\CompuRmt.PRG => LOGABERT(1115) 
   Called from: .\PRG\CompuRmt.PRG => (b)MAIN(673) 
   Called from: .\source\classes\window.prg => TWINDOW:ACTIVATE(1120) 
   Called from: .\PRG\CompuRmt.PRG => MAIN(673) 

System
======
   CPU type: Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz 2794 Mhz
   Hardware memory:      16290 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)
   Windows version: 6.2, Build 9200 


Variables in use
================
   Procedure     Type   Value
   ==========================
   ADEL
     Param   1:    A    Len:    42
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :         -1106633967:
                                    3          C   :MAIN(68):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :1762266102:
                                    3          C   :MAIN(208):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :         -1526068133:
                                    3          C   :MAIN(210):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :-905307912:
                                    3          C   :MAIN(211):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :-150329767:
                                    3          C   :MAIN(212):
------------------------------------------------------
                             Len:     3
                                    1          C   :ICON:
                                    2          N   : 299567517:
                                    3          C   :MAIN(549):
------------------------------------------------------
                             Len:     3
                                    1          C   :BMP:
                                    2          N   :-653980546:
                                    3          C   :TBRUSH:NEW(204)->MAIN(551):
------------------------------------------------------
                             Len:     3
                                    1          C   :BRUSH:
                                    2          N   :1661998542:
                                    3          C   :MAIN(551):
------------------------------------------------------
                             Len:     3
                                    1          C   :BMP:
                                    2          N   :         -1660611456:
                                    3          C   :TBRUSH:NEW(215)->MAIN(552):
------------------------------------------------------
                             Len:     3
                                    1          C   :BRUSH:
                                    2          N   :1745884871:
                                    3          C   :MAIN(552):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :-989195964:
                                    3          C   :MAIN(553):
------------------------------------------------------
                             Len:     3
                                    1          C   :FONT:
                                    2          N   :2131366787:
                                    3          C   :TWINDOW:GETFONT(3174)->TWINDOW:NEW(984)->MAIN(557):
------------------------------------------------------
                             Len:     3
                                    1          C   :BRUSH:
                                    2          N   : 923797512:
                                    3          C   :TBAR:SETCOLOR(2942)->TBAR:SETGRADIENTS(288)->TBAR:NEW(192)->MAIN(568):
------------------------------------------------------
                             Len:     3
                                    1          C   :BRUSH:
                                    2          N   :-955246096:
                                    3          C   :TDIALOG:SETCOLOR(2942)->TDIALOG:NEW(223)->MAIN(594):
------------------------------------------------------
                             Len:     3
                                    1          C   :BRUSH:
                                    2          N   :1594890758:
                                    3          C   :TMSGBAR:SETCOLOR(2942)->TMSGBAR:DEFAULT(296)->TMSGBAR:NEW(185)->MAIN(604):
------------------------------------------------------
                             Len:     3
                                    1          C   :BMP:
                                    2          N   :-502983143:
                                    3          C   :TMSGBAR:PAINTBAR(727)->TMSGBAR:PAINT(669)->(b)TMSGBAR:TMSGBAR(72)->TMSGBAR:DISPLAY(0)->TMSGBAR:HANDLEEVENT(1843)->_FWH(1008)->UPDATEWINDOW(0)->TWINDOW:ACTIVATE(1111)->MAIN(673):
------------------------------------------------------
Array Muito Grande Passivo De erro.
     Param   2:    N            18
     Local   1:    U    NIL
     Local   2:    U    NIL
   FWDELRESOURCE
     Param   1:    N             -1341645292
     Local   1:    N            18
   DELETEOBJECT
     Param   1:    N             -1341645292
   PALBMPFREE
     Param   1:    N        331266
     Param   2:    N             -1341645292
   TSBUTTON:FREEBITMAPS
     Local   1:    N            31
     Local   2:    O    Class: TSBUTTON
     Local   3:    N             1
     Local   4:    L    T
     Local   5:    C    ""
   TSBUTTON:DESTROY
     Local   1:    O    Class: TSBUTTON
   TWINDOW:HANDLEEVENT
     Param   1:    N             2
     Param   2:    N             0
     Param   3:    N             0
   TCONTROL:HANDLEEVENT
     Param   1:    N             2
     Param   2:    N             0
     Param   3:    N             0
     Local   1:    O    Class: TSBUTTON
     Local   2:    U    NIL
   TSBUTTON:HANDLEEVENT
     Param   1:    N             2
     Param   2:    N             0
     Param   3:    N             0
     Local   1:    O    Class: TSBUTTON
   _FWH
     Param   1:    N             0
     Param   2:    N             2
     Param   3:    N             0
     Param   4:    N             0
     Param   5:    N            25
     Local   1:    O    Class: TSBUTTON
   DIALOGBOXINDIRECTW
     Param   1:    N       5570560
     Param   2:    C    "€          Ó °     L o g i n   d e   A b e r t u r a .     ‚V        - § n T I M A G E          P    7  L 
 o T S T S A Y   D a t a   B a s e :     € P    7  -  p E D I T   1 1 / 0 3 / 2 5        P    7  , 
 q T S T S A Y   S e n h a :     € P    7 ( ( 
 r E D I T   A D M 0 3 1 1 2 5          P    d  < 
 s T S T S A Y   U s u a r i o :     € P    d ( ] 
 t E D I T                                                                      P    7 7 œ 
 u T S T S A Y   S e l e c i o n e   a   E m p r e s a :     ¡P    7 A Œ Œ v C O M B O B O X          P    7 P D 
 w T S T S A Y   A m b i e n t e :       ¡P    7 Z Œ Œ x C O M B O B O X       € P    U ‘ $  y B U T T O N       € P    ‚ ‘ $  z B U T T O N          P    7 k –  { S T A T I C         P    7 z Œ 
 | m s c t l s _ p r o g r e s s 3 2            P    x „  
 } S T A T I C   0   %       "
     Param   3:    N       6489384
     Param   4:    O    Class: TDIALOG
   TDIALOG:ACTIVATE
     Param   1:    U    NIL
     Param   2:    U    NIL
     Param   3:    B    {|| Block }
     Param   4:    L    T
     Param   5:    U    NIL
     Param   6:    L    T
     Param   7:    B    {|| Block }
     Param   8:    U    NIL
     Param   9:    U    NIL
     Param  10:    U    NIL
     Param  11:    U    NIL
     Param  12:    L    F
     Param  13:    O    Class: TDIALOG
     Param  14:    U    NIL
     Param  15:    U    NIL
     Local   1:    O    Class: TDIALOG
     Local   2:    N       6489384
     Local   3:    U    
     Local   4:    O    Class: TDIALOG
   LOGABERT
     Param   1:    L    F
     Param   2:    L    T
     Param   3:    L    T
     Param   4:    L    T
     Param   5:    L    F
     Param   6:    L    T
     Local   1:    L    T
     Local   2:    L    F
     Local   3:    O    Class: TDIALOG
     Local   4:    U    NIL
     Local   5:    U    NIL
     Local   6:    U    NIL
     Local   7:    U    NIL
     Local   8:    U    NIL
     Local   9:    U    NIL
     Local  10:    C    ""
     Local  11:    A    Len:     0
     Local  12:    C    ""
   (b)MAIN
     Param   1:    O    Class: TWINDOW
   TWINDOW:ACTIVATE
     Param   1:    C    "MAXIMIZED"
     Param   2:    U    NIL
     Param   3:    U    NIL
     Param   4:    U    NIL
     Param   5:    U    NIL
     Param   6:    U    NIL
     Param   7:    B    {|| Block }
     Param   8:    B    {|| Block }
     Param   9:    U    NIL
     Param  10:    U    NIL
     Param  11:    U    NIL
     Param  12:    U    NIL
     Param  13:    U    NIL
     Param  14:    U    NIL
     Param  15:    U    NIL
     Param  16:    U    NIL
     Param  17:    B    {|| Block }
     Param  18:    U    NIL
     Param  19:    U    NIL
     Param  20:    L    F
     Param  21:    U    NIL
     Local   1:    O    Class: TWINDOW
     Local   2:    U    NIL
     Local   3:    U    NIL
   MAIN
     Local   1:    U    NIL
     Local   2:    U    NIL
     Local   3:    U    NIL
     Local   4:    U    NIL
     Local   5:    U    NIL
     Local   6:    U    NIL
     Local   7:    C    "Release {dt}{h}: {11/03/25}{18:43:54}"
     Local   8:    C    "xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)"
     Local   9:    C    "FWH 25.01"
     Local  10:    N           656
     Local  11:    L    T
     Local  12:    L    F
     Local  13:    L    T
     Local  14:    O    Class: TCURSOR
     Local  15:    C    "10740"
     Local  16:    C    "ReleasePAF .003.000"
     Local  17:    C    "ReleasePDV .003.321"
     Local  18:    C    "ReleaseNFe .003.029"
     Local  19:    C    "ReleaseSql .003.015"
     Local  20:    A    Len:     0
     Local  21:    A    Len:     0
     Local  22:    U    NIL
     Local  23:    O    Class: TFONT

Linked RDDs
===========
   DBF
   DBFFPT
   SIXCDX
   DBFBLOB
   DBFCDX
   DBFNTX
   ADS
   ADT
   ADSVFP
   ADSCDX
   ADSNTX

DataBases in use
================

  1:    MNT              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          4            3      .F.   .T.

     Indexes in use                           TagName
        => CODUSUARIO+INICONEXAO              TAG_MNT_01
           USUREDE                            TAG_MNT_02
           HOST                               TAG_MNT_03
           IP                                 TAG_MNT_04
           INICONEXAO                         TAG_MNT_05
           AMBIENTE+USUREDE                   TAG_MNT_06
           NOMUSUARIO                         TAG_MNT_07
           FUNCAO                             TAG_MNT_08
           ROTINA                             TAG_MNT_09
           SETOR                              TAG_MNT_10
           DEPARTAMEN                         TAG_MNT_11
           COD_FIL                            TAG_MNT_12
           EMPRESA                            TAG_MNT_13
           MODULO                             TAG_MNT_14

     Relations in use

  2:    HLP              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         20           28      .F.   .F.

     Indexes in use                           TagName
        => VARIAVEL                           TAG_TOP_01
           ALIAS+VARIAVEL                     TAG_TOP_02
           FUNNAME+VARIAVEL                   TAG_TOP_03

     Relations in use

  3:    TOP              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            4      .F.   .F.

     Indexes in use                           TagName
        => ID                                 TAG_TOP_01

     Relations in use

  4:    USU              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            3      .F.   .F.

     Indexes in use                           TagName
        => CodUsu                             TAG_USU_01
           NomUsu                             TAG_USU_02
           SenUsu                             TAG_USU_03

     Relations in use

  5:    SM0              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => M0_CODIGO+M0_CODFIL                TAG_EMP_01

     Relations in use

  6:    MOD              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         16           17      .F.   .F.

     Indexes in use                           TagName
           ID                                 TAG_MOD_01
           NOME                               TAG_MOD_02
        => DESC                               TAG_MOD_03

     Relations in use

  7:    PER              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         24           23      .F.   .T.

     Indexes in use                           TagName
        => CODUSU+CODEMP+CODFIL+MODULO        TAG_PER_01
           CODUSU+CODEMP+CODFIL+ARQMNU        TAG_PER_02

     Relations in use

  8:    SX1              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            2      .F.   .F.

     Indexes in use                           TagName
        => X1_GRUPO+X1_ORDEM                  TAG_SX1_01
           X1_GRUPO+X1_VARIAVL+X1_ORDEM       TAG_SX1_02
           X1_GRUPO+X1_VARIAVL+X1_VAR01       TAG_SX1_03

     Relations in use

  9:    SX2              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          6          240      .F.   .F.

     Indexes in use                           TagName
        => X2_CHAVE                           TAG_SX2_01
           X2_ARQUIVO                         TAG_SX2_02

     Relations in use

 10:    SX3              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
       5489         5944      .F.   .F.

     Indexes in use                           TagName
        => X3_ARQUIVO+X3_ORDEM                TAG_SX3_01
           X3_CAMPO+X3_ARQUIVO                TAG_SX3_02
           X3_ARQUIVO+X3_FOLDER               TAG_SX3_03
           X3_ARQUIVO+X3_CAMPO                TAG_SX3_04

     Relations in use

 11:    SX4              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => X4_FILIAL+DTOS(X4_DATA)+X4_CODUSU  TAG_SX4_01
           X4_FILIAL+DTOS(X4_DATA)+X4_NOMUSU  TAG_SX4_02
           X4_FILIAL+DTOS(X4_DTCOMP)+X4_CODUSU
                                              TAG_SX4_03
           X4_FILIAL+X4_CODUSU+DTOS(X4_DATA)+X4_HORA
                                              TAG_SX4_04
           X4_FILIAL+DTOS(X4_DATA)+X4_HORA    TAG_SX4_05
           X4_FILIAL+X4_CODUSU+DTOS(X4_DTCOMP)+X4_HRCOMP
                                              TAG_SX4_06
           X4_FILIAL+DTOS(X4_DTCOMP)+X4_HRCOMP
                                              TAG_SX4_07
           X4_FILIAL+X4_NOMUSU                TAG_SX4_08

     Relations in use

 12:    SX6              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        201          451      .F.   .F.

     Indexes in use                           TagName
        => X6_VAR                             TAG_SX6_01

     Relations in use

 13:    SX7              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          938      .F.   .F.

     Indexes in use                           TagName
        => X7_CAMPO+X7_SEQUENC                TAG_SX6_01

     Relations in use

 14:    SIX              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        876          950      .F.   .F.

     Indexes in use                           TagName
        => INDICE+ORDEM                       TAG_SIX_01
           CHAVE                              TAG_SIX_02

     Relations in use

 15:    SIY              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          2          108      .F.   .F.

     Indexes in use                           TagName
        => INDICE+ORDEM+CAMPO                 TAG_SIY_01

     Relations in use

 16:    SXA              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         34           48      .F.   .F.

     Indexes in use                           TagName
        => XA_ALIAS+XA_ORDEM                  TAG_SXA_01

     Relations in use

 17:    SXB              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        949         1113      .F.   .F.

     Indexes in use                           TagName
        => XB_ALIAS+XB_TIPO+XB_SEQ+XB_COLUNA  TAG_SXB_01
           XB_ALIAS+XB_TIPO+XB_COLUNA+XB_SEQ  TAG_SXB_02

     Relations in use

 18:    SXC              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         12           61      .F.   .F.

     Indexes in use                           TagName
        => XC_CAMPO+XC_RAMO+XC_SEGMENT        TAG_SXC_01

     Relations in use

 19:    SXE              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            5      .F.   .F.

     Indexes in use                           TagName

     Relations in use

 20:    SXF              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => XF_FILIAL+XF_MODULO+XF_USUARIO+XF_TIPO+DESCEND(DTOS(XF_DATA))+DESCEND(XF_HORA)
                                              TAG_SXF_01
           XF_FILIAL+XF_MODULO+XF_USUARIO+XF_TIPO+XF_FUNCAO+XF_PARAMET
                                              TAG_SXF_02
           XF_FILIAL+XF_MODULO+XF_USUARIO+XF_FUNCAO+XF_PARAMET+XF_TIPO
                                              TAG_SXF_03

     Relations in use

 21:    LOG              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => CALIAS+DTOS(DATA)                  TAG_LOG_01
           USU +CALIAS+DTOS(DATA)             TAG_LOG_02
           DTOS(DATA)                         TAG_LOG_03
           USU + DTOS(DATA)                   TAG_LOG_04
           UPPER( MODU ) + DTOS(DATA)         TAG_LOG_05
           USU + UPPER( MODU ) + DTOS(DATA)   TAG_LOG_06

     Relations in use

 22: => SXG              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        132          414      .F.   .F.

     Indexes in use                           TagName
        => XG_MODULO+XG_ORDEM+XG_CODUSU       TAG_SXG_01
           XG_CODUSU+XG_FUNCAO                TAG_SXG_02
           XG_MODULO+XG_CODUSU+XG_ORDEM       TAG_SXG_03

     Relations in use

     --- Conteudo do registro corrente --------------------------
      XG_MODULO: 99
       XG_ORDEM: 01
      XG_TITULO: Atualizacao         
      XG_FUNCAO: P_CfgB120()         
      XG_PROPRI: S
       XG_USADO: S
        XG_TIPO: R
       XG_GROUP: N
      XG_BITMAP: BOT_ATUALIZACAO                                   
      XG_CODUSU: 000
     ------------------------------------------------------------

 23:    SM2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          4            4      .F.   .F.

     Indexes in use                           TagName
        => Upper(M2_FILIAL+DESCEND(DTOS(M2_DATA))+DESCEND(M2_SEQ))
                                              SM201001
           Upper(M2_FILIAL+DTOS(M2_DATA))     SM201002

     Relations in use

 24:    SX5              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1         2813      .F.   .F.

     Indexes in use                           TagName
        => Upper(X5_FILIAL+X5_TABELA+X5_CHAVE)
                                              SX501001
           Upper(X5_FILIAL+X5_TABELA+substr(X5_DESCRI,1,100))
                                              SX501002

     Relations in use

 25:    AGE              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(GE_FILIAL+GE_TIPO+DESCEND(DTOS(GE_DTAGE)))
                                              AGE01001
           Upper(GE_FILIAL+GE_TIPO+DESCEND(DTOS(GE_DTCAD)))
                                              AGE01002
           Upper(GE_FILIAL+GE_NOMCLI)         AGE01003
           Upper(GE_FILIAL+GE_CODCLI)         AGE01004
           Upper(GE_FILIAL+GE_TIPO+DTOS(GE_DTAGE))
                                              AGE01005

     Relations in use

 26:    TEL              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(EL_FILIAL+EL_NOMEFON)        TEL01001
           Upper(EL_FILIAL+EL_FONEFON)        TEL01002
           Upper(EL_FILIAL+EL_FANTASI)        TEL01003
           Upper(EL_FILIAL+EL_CODFON)         TEL01004

     Relations in use

 27:    SA1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => Upper(A1_FILIAL+A1_CODCLI)         SA101001
           Upper(A1_FILIAL+A1_NOMCLI)         SA101002
           Upper(A1_FILIAL+STRZERO(MONTH(A1_DTNASCL),2)+STRZERO(DAY(A1_DTNASCL),2)+A1_NOMCLI)
                                              SA101003
           Upper(A1_FILIAL+(STRZERO(MONTH(A1_DTNASCO),2)+STRZERO(DAY(A1_DTNASCO),2)))
                                              SA101004
           Upper(A1_FILIAL+A1_CIDCLI+A1_NOMCLI)
                                              SA101005
           Upper(A1_FILIAL+DTOS(A1_DTCAD))    SA101006
           Upper(A1_FILIAL+A1_FANTASI)        SA101007
           Upper(A1_FILIAL+A1_CICLI)          SA101008
           Upper(A1_FILIAL+A1_CODVEND+A1_CODCLI)
                                              SA101009
           Upper(A1_FILIAL+A1_CODVEND+A1_NOMCLI)
                                              SA101010
           Upper(A1_FILIAL+A1_ROTA)           SA101011
           Upper(A1_FILIAL+A1_UFCLI+A1_CODCLI)
                                              SA101012
           Upper(A1_FILIAL+A1_UFCLI+A1_NOMCLI)
                                              SA101013
           Upper(A1_FILIAL+A1_CODCLI+A1_EXPORTA)
                                              SA101014
           Upper(A1_FILIAL+A1_UFCLI+A1_CIDCLI+A1_NOMCLI)
                                              SA101015

     Relations in use

 28:    SF5              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            2      .F.   .F.

     Indexes in use                           TagName
        => Upper(F5_FILIAL+F5_CODIGO)         SF501001
           Upper(F5_FILIAL+F5_DESC)           SF501002

     Relations in use

 29:    SB1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B1_FILIAL+B1_CODPRO)         SB101001
           Upper(B1_FILIAL+B1_DESPRO)         SB101002
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_CODPRO)
                                              SB101003
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_DESPRO)
                                              SB101004
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_MARCA+B1_DESPRO)
                                              SB101005
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_REF)
                                              SB101006
           Upper(B1_FILIAL+B1_MARCA+B1_DESPRO+B1_REF)
                                              SB101007
           Upper(B1_FILIAL+B1_CODBARR)        SB101008
           Upper(B1_FILIAL+B1_REF)            SB101009
           Upper(B1_FILIAL+DTOS(B1_DTCAD))    SB101010
           Upper(B1_FILIAL+B1_TIPO+B1_GRUPRO+B1_SGRUPRO+B1_CODPRO)
                                              SB101011
           Upper(B1_FILIAL+B1_TAMANHO+B1_DESPRO)
                                              SB101012
           Upper(B1_FILIAL+B1_CODGRAD)        SB101013
           Upper(B1_FILIAL+B1_TECRAPI)        SB101014
           Upper(B1_FILIAL+B1_CODEMBA)        SB101015

     Relations in use

 30:    SFB              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1           26      .F.   .F.

     Indexes in use                           TagName
        => Upper(FB_FILIAL+FB_COD+FB_CODECF)  SFB01001
           Upper(FB_FILIAL+FB_CODECF+FB_COD)  SFB01002
           Upper(FB_FILIAL+FB_DESC)           SFB01003

     Relations in use

 31:    SA3              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => Upper(A3_FILIAL+A3_CODVEN)         SA301001
           Upper(A3_FILIAL+A3_NOME)           SA301002
           Upper(A3_FILIAL+STRZERO(MONTH(A3_DTNASC),2)+STRZERO(DAY(A3_DTNASC),2)+A3_NOME)
                                              SA301003
           Upper(A3_FILIAL+A3_GERENTE)        SA301004
           A3_CODVEN                          SA39999

     Relations in use

 32:    SAF              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(AF_FILIAL+AF_CODVEN)         SAF01001

     Relations in use

 33:    SF2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_CLIENTE+DTOS(F2_DTEMISS))
                                              SF201001
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_VEND+DTOS(F2_DTEMISS))
                                              SF201002
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_TRANSP+DTOS(F2_DTEMISS))
                                              SF201003
           Upper(F2_FILIAL+DTOS(F2_DTEMISS)+F2_CLIENTE+F2_SERIE+F2_DOC)
                                              SF201004
           Upper(F2_FILIAL+DTOS(F2_DTEMISS)+F2_VEND+F2_SERIE+F2_DOC)
                                              SF201005
           Upper(F2_FILIAL+F2_CLIENTE+F2_SERIE+F2_DOC+DTOS(F2_DTEMISS))
                                              SF201006
           Upper(F2_FILIAL+F2_CLIENTE+DTOS(F2_DTEMISS)+F2_SERIE+F2_DOC)
                                              SF201007
           Upper(F2_FILIAL+F2_VEND+F2_SERIE+F2_DOC+DTOS(F2_DTEMISS))
                                              SF201008
           Upper(F2_FILIAL+F2_VEND+DTOS(F2_DTEMISS)+F2_SERIE+F2_DOC)
                                              SF201009
           Upper(F2_FILIAL+DTOS(F2_DTENTRE)+F2_HORA)
                                              SF201010
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+DESCEND(F2_DOC))
                                              SF201011
           Upper(F2_FILIAL+F2_NOMCLI+DTOS(F2_DTEMISS)+F2_TIPIMP+F2_SERIE+F2_DOC)
                                              SF201012
           Upper(F2_FILIAL+F2_NFEID)          SF201013
           Upper(F2_FILIAL+F2_NSERECF+F2_LIMFECF+F2_CUPFIS)
                                              SF201014
           Upper(F2_FILIAL+F2_PEDIDO)         SF201015

     Relations in use

 34:    NFS              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(NFS_FILIAL+NFS_SERIE+NFS_DOC)
                                              NFS01001
           Upper(NFS_FILIAL+NFS_CHNFE)        NFS01002
           Upper(NFS_FILIAL+NFS_SITUAC+NFS_SERIE+NFS_DOC)
                                              NFS01003
           Upper(NFS_FILIAL+NFS_STATUS+NFS_SERIE+NFS_DOC)
                                              NFS01004
           Upper(NFS_FILIAL+NFS_TIPDOC+NFS_SERIE+NFS_DOC+NFS_CLIFOR)
                                              NFS01005
           Upper(NFS_FILIAL+NFS_STATUS+NFS_SERIE+descend(NFS_DOC))
                                              NFS01006
           Upper(NFS_FILIAL+NFS_SERIE+descend(NFS_DOC))
                                              NFS01007
           Upper(NFS_FILIAL+NFS_SITUAC+NFS_SERIE+descend(NFS_DOC))
                                              NFS01008
           Upper(NFS_FILIAL+NFS_MODEMI+NFS_SITUAC+NFS_SERIE+NFS_DOC)
                                              NFS01009
           Upper(NFS_FILIAL+DTOS(NFS_DIGITA)+NFS_SERIE+NFS_DOC)
                                              NFS01010
           Upper(NFS_FILIAL+NFS_SERIE+DTOS(NFS_AUTORI)+NFS_DOC)
                                              NFS01011

     Relations in use

 35:    SD2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_ITEM)
                                              SD201001
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+DTOS(D2_DTEMISS))
                                              SD201002
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_CLIENTE+D2_ITEM)
                                              SD201003
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_PRODUTO+D2_ALMOX+D2_LOTE)
                                              SD201004
           Upper(D2_FILIAL+DTOS(D2_DTEMISS)+D2_SERIE+D2_DOC)
                                              SD201005
           Upper(D2_FILIAL+D2_CLIENTE+D2_SERIE+D2_DOC)
                                              SD201006
           Upper(D2_FILIAL+D2_PRODUTO+D2_SERIE+D2_DOC)
                                              SD201007
           Upper(D2_FILIAL+D2_PEDIDO+D2_SERIE+D2_DOC+D2_ITEM)
                                              SD201008
           Upper(D2_FILIAL+D2_TPIMORI+D2_SERORI+D2_NFORI+D2_CLIENTE+D2_PRODUTO+D2_ALMOX+D2_LOTE)
                                              SD201009
           Upper(D2_FILIAL+D2_NSERECF+D2_LIMFECF+D2_CUPFIS+D2_ITEM)
                                              SD201010
           Upper(D2_FILIAL+D2_TIPIMP+DTOS(D2_DTEMISS))
                                              SD201011
           Upper(D2_FILIAL+D2_PRODUTO+DESCEND(DTOS(D2_DTEMISS)))
                                              SD201012

     Relations in use

 36:    SDM              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(DM_FILIAL+DM_TIPIMP+DM_SERIE+DM_DOC+DM_ITEM)
                                              SDM01001

     Relations in use

 37:    FE1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(FE_FILIAL+FE_MESANO)         FE101001
           Upper(FE_FILIAL+FE_ANO)            FE101002

     Relations in use

 38:    SB9              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B9_FILIAL+B9_CODPRO+B9_ALMOX+B9_GRADE)
                                              SB901001
           Upper(B9_FILIAL+B9_DESPRO)         SB901002
           Upper(B9_FILIAL+B9_CODBARR)        SB901003
           Upper(B9_FILIAL+B9_CODPRO+B9_COLUNA+B9_LINHA)
                                              SB901004

     Relations in use

 39:    SF4              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1           99      .F.   .F.

     Indexes in use                           TagName
        => Upper(F4_FILIAL+F4_CODFISC)        SF401001
           Upper(F4_FILIAL+F4_CFOP)           SF401002
           Upper(F4_FILIAL+F4_DESFISC)        SF401003
           Upper(F4_FILIAL+F4_SCFOP)          SF401004

     Relations in use

 40:    PCC              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          562      .F.   .F.

     Indexes in use                           TagName
        => Upper(CC_FILIAL+CC_CONTA)          PCC01001
           Upper(CC_FILIAL+CC_DESCON)         PCC01002
           Upper(CC_FILIAL+CC_CODIGO)         PCC01003

     Relations in use

 41:    SB2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B2_FILIAL+B2_CODPRO+B2_ALMOX)
                                              SB201001
           Upper(B2_FILIAL+B2_DESPRO+B2_ALMOX)
                                              SB201002
           Upper(B2_FILIAL+B2_ALMOX+B2_CODPRO)
                                              SB201003
           Upper(B2_FILIAL+B2_ALMOX+B2_DESPRO)
                                              SB201004
           Upper(B2_FILIAL+B2_GRADE)          SB201005

     Relations in use

 42:    SD3              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D3_FILIAL+D3_COD+D3_TM)      SD301001
           Upper(D3_FILIAL+D3_COD+D3_ALMOX+D3_LOTE+DTOS(D3_EMISSAO))
                                              SD301002
           Upper(D3_FILIAL+D3_COD+D3_OP+D3_SEQ)
                                              SD301003
           Upper(D3_FILIAL+D3_COD+D3_OP+D3_DOC)
                                              SD301004
           Upper(D3_FILIAL+D3_DESC)           SD301005
           Upper(D3_FILIAL+D3_TM+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301006
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301007
           Upper(D3_FILIAL+D3_COD+DTOS(D3_EMISSAO))
                                              SD301008
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_ROTINA)
                                              SD301009
           Upper(D3_FILIAL+DTOS(D3_EMISSAO)+D3_VENCOMP+D3_COD)
                                              SD301010
           Upper(D3_FILIAL+D3_REF+D3_ALMOX+D3_VENCOMP+DTOS(D3_EMISSAO))
                                              SD301011
           Upper(D3_FILIAL+D3_COD+D3_CLIFOR+DTOS(D3_EMISSAO))
                                              SD301012
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_SEQ)
                                              SD301013
           Upper(D3_FILIAL+D3_TM+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301014
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301015

     Relations in use

 43:    SE1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(E1_FILIAL+E1_PREFIXO+E1_NUMDUP+E1_NUMPARC+E1_CODCLI+E1_CODHIST+E1_CODTIPO+DTOS(E1_DTEMIS))
                                              SE101001
           Upper(E1_FILIAL+E1_PREFIXO+E1_NUMDUP+E1_CODCLI)
                                              SE101002
           Upper(E1_FILIAL+E1_CODCLI+E1_PREFIXO+E1_NUMDUP+E1_NUMPARC+DTOS(E1_DTVENC))
                                              SE101003
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTPAGO)+DTOS(E1_DTVENC))
                                              SE101004
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTVENC))
                                              SE101005
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTEMIS))
                                              SE101006
           Upper(E1_FILIAL+DTOS(E1_DTPAGO)+E1_CODTIPO)
                                              SE101007
           Upper(E1_FILIAL+DTOS(E1_DTVENC)+E1_CODTIPO)
                                              SE101008
           Upper(E1_FILIAL+DTOS(E1_DTEMIS)+E1_CODCLI)
                                              SE101009
           Upper(E1_FILIAL+E1_SITUA+DTOS(E1_DTVENC))
                                              SE101010
           Upper(E1_FILIAL+E1_VENDEDO+DTOS(E1_DTPAGO))
                                              SE101011
           Upper(E1_FILIAL+E1_NOME+DTOS(E1_DTEMIS))
                                              SE101012
           Upper(E1_FILIAL+E1_CHAVDES)        SE101013
           Upper(E1_FILIAL+E1_COMITIT)        SE101014
           Upper(E1_FILIAL+E1_BOLETON)        SE101015

     Relations in use

 44:    SF1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_FORNECE+DTOS(F1_DTEMISS))
                                              SF101001
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_COMP+DTOS(F1_DTEMISS))
                                              SF101002
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_TRANSP+DTOS(F1_DTEMISS))
                                              SF101003
           Upper(F1_FILIAL+DTOS(F1_DTEMISS)+F1_FORNECE+F1_SERIE+F1_DOC)
                                              SF101004
           Upper(F1_FILIAL+DTOS(F1_DTEMISS)+F1_COMP+F1_SERIE+F1_DOC)
                                              SF101005
           Upper(F1_FILIAL+F1_FORNECE+F1_SERIE+F1_DOC+DTOS(F1_DTEMISS))
                                              SF101006
           Upper(F1_FILIAL+F1_FORNECE+DTOS(F1_DTEMISS)+F1_SERIE+F1_DOC)
                                              SF101007
           Upper(F1_FILIAL+F1_COMP+F1_SERIE+F1_DOC+DTOS(F1_DTEMISS))
                                              SF101008
           Upper(F1_FILIAL+F1_COMP+DTOS(F1_DTEMISS)+F1_SERIE+F1_DOC)
                                              SF101009
           Upper(F1_FILIAL+DTOS(F1_DTENTRE)+F1_HORA)
                                              SF101010
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+DESCEND(F1_DOC))
                                              SF101011
           Upper(F1_FILIAL+F1_NOMFOR+DTOS(F1_DTENTRE)+F1_TIPIMP+F1_SERIE+F1_DOC)
                                              SF101012
           Upper(F1_FILIAL+F1_NFEID)          SF101013
           Upper(F1_FILIAL+DTOS(F1_DTENTRE)+F1_FORNECE+F1_SERIE+F1_DOC)
                                              SF101014
           Upper(F1_FILIAL+F1_TIPIMP+F1_DOC)  SF101015

     Relations in use

 45:    SD1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_ITEM)
                                              SD101001
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101002
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_FORNECE+D1_ITEM)
                                              SD101003
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_PRODUTO+D1_ALMOX+D1_LOTE)
                                              SD101004
           Upper(D1_FILIAL+DTOS(D1_DTEMISS)+D1_SERIE+D1_DOC+D1_FORNECE)
                                              SD101005
           Upper(D1_FILIAL+D1_FORNECE+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101006
           Upper(D1_FILIAL+D1_PRODUTO+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101007
           Upper(D1_FILIAL+D1_PEDIDO+D1_SERIE+D1_DOC+D1_ITEM)
                                              SD101008
           Upper(D1_FILIAL+D1_TPIMORI+D1_SERORI+D1_NFORI+D1_FORNECE+D1_PRODUTO+D1_ALMOX+D1_LOTE)
                                              SD101009
           Upper(D1_FILIAL+DTOS(D1_DTENTRE)+D1_SERIE+D1_DOC+D1_FORNECE)
                                              SD101010
           Upper(D1_FILIAL+D1_PRODUTO+DESCEND(DTOS(D1_DTEMISS)))
                                              SD101011
           Upper(D1_FILIAL+DTOS(D1_DTENTRE)+D1_PRODUTO)
                                              SD101012
           Upper(D1_FILIAL+D1_FORNECE+D1_PRODUTO+DESCEND(DTOS(D1_DTEMISS)))
                                              SD101013
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_FORNECE+D1_PRODUTO+D1_ITEM)
                                              SD101014

     Relations in use

 46:    LSN              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          4           68      .F.   .F.

     Indexes in use                           TagName
        => Upper(SN_FILIAL+SN_TIPIMP+SN_SERIE+SN_NUMERO)
                                              LSN01001
           Upper(SN_FILIAL+SN_TIPIMP+SN_NUMERO+SN_SERIE)
                                              LSN01002
           Upper(SN_FILIAL+SN_SERIE+SN_TIPIMP+SN_NUMERO)
                                              LSN01003
           Upper(SN_FILIAL+SN_SERIE+SN_NUMERO+SN_TIPIMP)
                                              LSN01004

     Relations in use

Classes in use:
===============
     1 ERROR
     2 HASHENTRY
     3 HBCLASS
     4 HBOBJECT
     5 HB_LOGGER
     6 HB_LOGCHANNEL
     7 HB_LOGCONSOLE
     8 HB_LOGFILE
     9 TFONT
    10 TINI
    11 TIMMERSIG
    12 TWINDOW
    13 TDIALOG
    14 TBRUSH
    15 TCONTROL
    16 TBITMAP
    17 TREG32
    18 TRECT
    19 OTBLOG
    20 TCURSOR
    21 TICON
    22 TBAR
    23 TSBUTTON
    24 TCHECKBOX
    25 TMSGBAR
    26 TMSGITEM
    27 TSTSAY
    28 TSLINES
    29 TIMAGE
    30 TVGET
    31 GET
    32 TGET
    33 TCLIPGET
    34 TCOMBOBOX
    35 TSAY
    36 TPROGRESS
    37 TIPCLIENT
    38 TIPCLIENTHTTP
    39 TURL
    40 TBTNBMP
    41 TFRXCFG
    42 TFILE
    43 TTXTFILE
    44 TXMLDOCUMENT
    45 TXMLNODE
    46 TXMLITERATOR
    47 TXMLITERATORSCAN
    48 TMENU
    49 TMENUITEM
    50 TSTRUCT

Memory Analysis
===============
      2419 Static variables

   Dynamic memory consume:
      Actual  Value:          0 bytes
      Highest Value:          0 bytes


Versao do sistema
=================
      Versao         :  7.10
      Release        :  10740
      Data Compilaçao:  06-05-2024 14:02:02
      SVN            :  7969
      Disco          :  Y: Total : 465.75 GB   Livre : 75.09 GB 
      CNPJEmp        :  
      PLANOSIS       :  1
      UpdateAuto     :  N

]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Switching from memo fields to files - :: Reply by Ruth]]> 2025-03-12T07:27:05-06:00 2025-03-12T07:27:05-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=44724&p=278318#p278318
today I encountered an error while working on a dbf - probably my fault as I deleted a lot of columns and added new ones etc.
Image

I have found that using the file-reference-approach instead of memo-fields is a good alternative. memo-fields and .fpt always seemed like kind of a blackbox to me...editing everything directly in a folder in a simple text editor feels very freeing and also intuitive - kind of how storing image paths instead of the full image.

But I have to say that I am working with a small dbf for a website - no experience with larger datasets in this context yet.

Kind regards to all and have a nice day
Ruth]]>

today I encountered an error while working on a dbf - probably my fault as I deleted a lot of columns and added new ones etc.
Image

I have found that using the file-reference-approach instead of memo-fields is a good alternative. memo-fields and .fpt always seemed like kind of a blackbox to me...editing everything directly in a folder in a simple text editor feels very freeing and also intuitive - kind of how storing image paths instead of the full image.

But I have to say that I am working with a small dbf for a website - no experience with larger datasets in this context yet.

Kind regards to all and have a nice day
Ruth]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Detect ESC on dialog :: Author JoséQuintas]]> 2025-03-10T13:19:47-06:00 2025-03-10T13:19:47-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278268#p278268

Code: Select all | Expand

   ::xDlg:bKeyDown := { | nKey | ;
      iif( nKey == VK_ESCAPE, ::lHitEsc := .T., Nil ), ;
      MsgExclamation( iif( ::lHitEsc, "ESC", "other" ) ) }
ESC do nothing, but other keys show "other"

What I can do about this ?]]>

Code: Select all | Expand

   ::xDlg:bKeyDown := { | nKey | ;
      iif( nKey == VK_ESCAPE, ::lHitEsc := .T., Nil ), ;
      MsgExclamation( iif( ::lHitEsc, "ESC", "other" ) ) }
ESC do nothing, but other keys show "other"

What I can do about this ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Detect ESC on dialog :: Reply by Antonio Linares]]> 2025-03-10T14:14:48-06:00 2025-03-10T14:14:48-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278269#p278269
SetDialogEsc( .F. ) should allow you to handle it, but it is not. We have to review it:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

    local oDlg 

    SetDialogEsc( .F. )

    DEFINE DIALOG oDlg 

    oDlg:bKeyDown = { | nKey | MsgInfo( "Key: " + Str( nKey ) ) }

    ACTIVATE DIALOG oDlg CENTERED VALID ( ShowCallStack(), .T. )

return nil  
]]>

SetDialogEsc( .F. ) should allow you to handle it, but it is not. We have to review it:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

    local oDlg 

    SetDialogEsc( .F. )

    DEFINE DIALOG oDlg 

    oDlg:bKeyDown = { | nKey | MsgInfo( "Key: " + Str( nKey ) ) }

    ACTIVATE DIALOG oDlg CENTERED VALID ( ShowCallStack(), .T. )

return nil  
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Detect ESC on dialog :: Reply by RAMESHBABU]]> 2025-03-10T22:37:30-06:00 2025-03-10T22:37:30-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278278#p278278
SetDialogEsc( .F. ) should allow you to handle it, but it is not. We have to review it:
SetDialogEsc( .F. ) is working fine with me.

-Ramesh Babu P]]>
SetDialogEsc( .F. ) should allow you to handle it, but it is not. We have to review it:
SetDialogEsc( .F. ) is working fine with me.

-Ramesh Babu P]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Detect ESC on dialog :: Reply by Antonio Linares]]> 2025-03-11T00:42:07-06:00 2025-03-11T00:42:07-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278279#p278279
Many thanks for you feedback :)

Is the above example working fine for you ? Do you get the VK_ESCAPE MsgInfo() ?

best regards]]>

Many thanks for you feedback :)

Is the above example working fine for you ? Do you get the VK_ESCAPE MsgInfo() ?

best regards]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Detect ESC on dialog :: Reply by Silvio.Falconi]]> 2025-03-11T04:01:19-06:00 2025-03-11T04:01:19-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278282#p278282 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Detect ESC on dialog :: Reply by Antonio Linares]]> 2025-03-11T04:18:28-06:00 2025-03-11T04:18:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278283#p278283
Silvio.Falconi wrote: Tue Mar 11, 2025 10:01 am I would be interested in blocking esc or there must be a function that when a user presses ESc the procedure must check (in case of inserting/modifying records) that the user has not modified the get/combobox/radio controls etc and the procedure must tell the user "do I have to close anyway without saving?", is there a function that does this?
ACTIVATE DIALOG oDlg VALID ... // logical value

thats what VALID is implemented for]]>
Silvio.Falconi wrote: Tue Mar 11, 2025 10:01 am I would be interested in blocking esc or there must be a function that when a user presses ESc the procedure must check (in case of inserting/modifying records) that the user has not modified the get/combobox/radio controls etc and the procedure must tell the user "do I have to close anyway without saving?", is there a function that does this?
ACTIVATE DIALOG oDlg VALID ... // logical value

thats what VALID is implemented for]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Detect ESC on dialog :: Reply by Silvio.Falconi]]> 2025-03-11T04:27:31-06:00 2025-03-11T04:27:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278284#p278284
Antonio Linares wrote: Tue Mar 11, 2025 10:18 am
Silvio.Falconi wrote: Tue Mar 11, 2025 10:01 am I would be interested in blocking esc or there must be a function that when a user presses ESc the procedure must check (in case of inserting/modifying records) that the user has not modified the get/combobox/radio controls etc and the procedure must tell the user "do I have to close anyway without saving?", is there a function that does this?
ACTIVATE DIALOG oDlg VALID ... // logical value

thats what VALID is implemented for
yes of course I have this function but sometimes not run ok

Code: Select all | Expand

VALID EXit( .f., , , oDlg )

static FUNCTION Exit( lEsc, lAsk, cMsg, oDlg )
    DEFAULT lEsc := .f., lAsk := .f., cMsg := ""
       if getkeystate( VK_ESCAPE )
          Return( lEsc )
       endif

       //aGet
       lAsk := DlgModified( oDlg )
    //   ?  lAsk
       If lAsk
          If Empty( cMsg )
             cMsg := "Do you want to exit this operation?...?"
          End
          If !MsgNoyes(cMsg,"Confirm Please...")
             Return .f.
          End
       End
       return .T.

static function DlgModified( oDlg )
return AScan( oDlg:aControls, { |o| o:IsKindOf( "TGET" ) .and. o:lChanged } ) > 0


If I have combobox or My Tbtnclr on dialog not run ok , it check only the get controls...sometimes]]>
Antonio Linares wrote: Tue Mar 11, 2025 10:18 am
Silvio.Falconi wrote: Tue Mar 11, 2025 10:01 am I would be interested in blocking esc or there must be a function that when a user presses ESc the procedure must check (in case of inserting/modifying records) that the user has not modified the get/combobox/radio controls etc and the procedure must tell the user "do I have to close anyway without saving?", is there a function that does this?
ACTIVATE DIALOG oDlg VALID ... // logical value

thats what VALID is implemented for
yes of course I have this function but sometimes not run ok

Code: Select all | Expand

VALID EXit( .f., , , oDlg )

static FUNCTION Exit( lEsc, lAsk, cMsg, oDlg )
    DEFAULT lEsc := .f., lAsk := .f., cMsg := ""
       if getkeystate( VK_ESCAPE )
          Return( lEsc )
       endif

       //aGet
       lAsk := DlgModified( oDlg )
    //   ?  lAsk
       If lAsk
          If Empty( cMsg )
             cMsg := "Do you want to exit this operation?...?"
          End
          If !MsgNoyes(cMsg,"Confirm Please...")
             Return .f.
          End
       End
       return .T.

static function DlgModified( oDlg )
return AScan( oDlg:aControls, { |o| o:IsKindOf( "TGET" ) .and. o:lChanged } ) > 0


If I have combobox or My Tbtnclr on dialog not run ok , it check only the get controls...sometimes]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Detect ESC on dialog :: Reply by RAMESHBABU]]> 2025-03-11T21:42:38-06:00 2025-03-11T21:42:38-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278312#p278312
Is the above example working fine for you ? Do you get the VK_ESCAPE MsgInfo() ?
Your above example is not working as expected Enabling/Disabling Esc Key functionality.

But 'SetDialogEsc( .T. /.F.) is working fine with Resources. All my dialogs are from Resources.
That might be reason why it is working fine with me.

Regards,
-Ramesh Babu P]]>
Is the above example working fine for you ? Do you get the VK_ESCAPE MsgInfo() ?
Your above example is not working as expected Enabling/Disabling Esc Key functionality.

But 'SetDialogEsc( .T. /.F.) is working fine with Resources. All my dialogs are from Resources.
That might be reason why it is working fine with me.

Regards,
-Ramesh Babu P]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Detect ESC on dialog :: Reply by JoséQuintas]]> 2025-03-12T07:10:22-06:00 2025-03-12T07:10:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278317#p278317 Comment about SetDialogEsc(.F.):
it changes ALL DIALOGS, may be I want to change only a specific dialog.
As example, dialog with a single browse, I want to use the ESC to exit.

Is possible to detect ESC on dialog valid ?]]>
Comment about SetDialogEsc(.F.):
it changes ALL DIALOGS, may be I want to change only a specific dialog.
As example, dialog with a single browse, I want to use the ESC to exit.

Is possible to detect ESC on dialog valid ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Detect ESC on dialog :: Reply by JoséQuintas]]> 2025-03-12T07:36:11-06:00 2025-03-12T07:36:11-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278319#p278319

Code: Select all | Expand

   VAR lHitESC    INIT .F.
I use like Inkey(), to end process first

Code: Select all | Expand

DO WHILE ! class:lHitEsc .AND. ! :eof()
   :MoveNext()
ENDDO
:CloseRecordset()
IF class:lHitEsc
   Dialog:Close()
ENDIF
ESC will not close dialog, but will be used to terminate process before close dialog.]]>

Code: Select all | Expand

   VAR lHitESC    INIT .F.
I use like Inkey(), to end process first

Code: Select all | Expand

DO WHILE ! class:lHitEsc .AND. ! :eof()
   :MoveNext()
ENDDO
:CloseRecordset()
IF class:lHitEsc
   Dialog:Close()
ENDIF
ESC will not close dialog, but will be used to terminate process before close dialog.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Detect ESC on dialog :: Reply by JoséQuintas]]> 2025-03-12T08:05:31-06:00 2025-03-12T08:05:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278323#p278323
On VB6 there exists the KeyPress(), anything like bKeyDown.
It works like harbour INKEY_FILTER.

Code: Select all | Expand

function KeyPress( KeyAscii )
   IF KeyAscii = ESC
      KeyAscii = 0
    ENDIF
    RETURN 
equivalent fivewin:

Code: Select all | Expand

dialog:bKeyDown := { | nkey | routine( @nKey ), nKey }
if fivewin uses the nKey after bkeydown, this expand possibilities, including to change the nKey value to another key.
Remembering that exists bKeyDown and bKeyChar]]>

On VB6 there exists the KeyPress(), anything like bKeyDown.
It works like harbour INKEY_FILTER.

Code: Select all | Expand

function KeyPress( KeyAscii )
   IF KeyAscii = ESC
      KeyAscii = 0
    ENDIF
    RETURN 
equivalent fivewin:

Code: Select all | Expand

dialog:bKeyDown := { | nkey | routine( @nKey ), nKey }
if fivewin uses the nKey after bkeydown, this expand possibilities, including to change the nKey value to another key.
Remembering that exists bKeyDown and bKeyChar]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Detect ESC on dialog :: Reply by JoséQuintas]]> 2025-03-12T08:37:07-06:00 2025-03-12T08:37:07-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45506&p=278324#p278324

Code: Select all | Expand

   ::xDlg:bValid := { || iif( GetKeyState( VK_ESCAPE ), ::lHitEsc := .T., Nil ), ::lCanClose }
These are 2 different things.
lCanClose - if dialog can be closed
lHitEsc - if user hit ESC, this will be used by routine

This solves my current need.]]>

Code: Select all | Expand

   ::xDlg:bValid := { || iif( GetKeyState( VK_ESCAPE ), ::lHitEsc := .T., Nil ), ::lCanClose }
These are 2 different things.
lCanClose - if dialog can be closed
lHitEsc - if user hit ESC, this will be used by routine

This solves my current need.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Friends Let us all pray for Mr Nageswarao Gunupudi :: Reply by dutch]]> 2025-03-04T19:30:54-07:00 2025-03-04T19:30:54-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45442&p=278136#p278136 Best wishes,]]> Best wishes,]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: Friends Let us all pray for Mr Nageswarao Gunupudi :: Reply by Eroni]]> 2025-03-12T10:49:52-06:00 2025-03-12T10:49:52-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45442&p=278330#p278330 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Ping several items in xHarbour :: Reply by theotokos]]> 2025-03-12T10:31:52-06:00 2025-03-12T10:31:52-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=941&p=278329#p278329 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Ping several items in xHarbour :: Reply by karinha]]> 2025-03-12T11:00:30-06:00 2025-03-12T11:00:30-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=941&p=278332#p278332
https://stackoverflow.com/questions/186 ... ip-address

https://stackoverflow.com/questions/124 ... -batch-scr

https://superuser.com/questions/1134344 ... -in-its-ow


Regards, saludos.]]>

https://stackoverflow.com/questions/186 ... ip-address

https://stackoverflow.com/questions/124 ... -batch-scr

https://superuser.com/questions/1134344 ... -in-its-ow


Regards, saludos.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Ping several items in xHarbour :: Reply by byron.hopp]]> 2025-03-12T11:18:21-06:00 2025-03-12T11:18:21-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=941&p=278333#p278333 Data nPort,nStatus,cData,cOptions,nTimeout,nElapsed,cEcho,cIp,nSeconds,cLog
Method New(cIp)
Method SendEcho()
End Class

Method New(cIpAddress) Class McsICMP
// Internet Control Message Protocol - (ICMP)
// Packed INternet Grouper - (PING)
::cIp := cIpAddress
::nPort := 0
::nStatus := 0
::cData := "12345678901234567890123456789012"
::cOptions := ""
::nTimeout := 100
::nSeconds := 0
::cEcho := Space(278)
return Self

Method SendEcho() Class McsICMP
WsaStartUp()
::cIP := GetHostByName(::cIP)
WsaCleanUp()
::nPort := IcmpCreateFile()
::nSeconds := Seconds()
::nStatus := IcmpSendEcho(::nPort,inet_addr(::cIP),::cData,Len(::cData),0,::cEcho,Len(::cEcho),::nTimeout)
::nElapsed := Seconds() - ::nSeconds
IcmpCloseHandle(::nPort)
Return (::nStatus > 0)

DLL32 FUNCTION inet_addr(cIP AS STRING) AS LONG PASCAL FROM "inet_addr" LIB "wsock32.dll"
DLL32 FUNCTION IcmpCreateFile() AS LONG PASCAL FROM "IcmpCreateFile" LIB "icmp.dll"
DLL32 FUNCTION IcmpCloseHandle(IcmpHandle AS LONG) AS LONG PASCAL FROM "IcmpCloseHandle" LIB "icmp.dll"
DLL32 FUNCTION IcmpSendEcho(IcmpHandle AS LONG,DestinationAddress AS LONG,RequestData AS STRING,RequestSize AS LONG,RequestOptions AS LONG,ReplyBuffer AS LPSTR,ReplySize AS LONG,Timeout AS LONG) AS LONG PASCAL FROM "IcmpSendEcho" LIB "icmp.dll"
DLL32 FUNCTION WSAGetLastError() AS _INT PASCAL FROM "WSAGetLastError" LIB "wsock32.dll"]]>
Data nPort,nStatus,cData,cOptions,nTimeout,nElapsed,cEcho,cIp,nSeconds,cLog
Method New(cIp)
Method SendEcho()
End Class

Method New(cIpAddress) Class McsICMP
// Internet Control Message Protocol - (ICMP)
// Packed INternet Grouper - (PING)
::cIp := cIpAddress
::nPort := 0
::nStatus := 0
::cData := "12345678901234567890123456789012"
::cOptions := ""
::nTimeout := 100
::nSeconds := 0
::cEcho := Space(278)
return Self

Method SendEcho() Class McsICMP
WsaStartUp()
::cIP := GetHostByName(::cIP)
WsaCleanUp()
::nPort := IcmpCreateFile()
::nSeconds := Seconds()
::nStatus := IcmpSendEcho(::nPort,inet_addr(::cIP),::cData,Len(::cData),0,::cEcho,Len(::cEcho),::nTimeout)
::nElapsed := Seconds() - ::nSeconds
IcmpCloseHandle(::nPort)
Return (::nStatus > 0)

DLL32 FUNCTION inet_addr(cIP AS STRING) AS LONG PASCAL FROM "inet_addr" LIB "wsock32.dll"
DLL32 FUNCTION IcmpCreateFile() AS LONG PASCAL FROM "IcmpCreateFile" LIB "icmp.dll"
DLL32 FUNCTION IcmpCloseHandle(IcmpHandle AS LONG) AS LONG PASCAL FROM "IcmpCloseHandle" LIB "icmp.dll"
DLL32 FUNCTION IcmpSendEcho(IcmpHandle AS LONG,DestinationAddress AS LONG,RequestData AS STRING,RequestSize AS LONG,RequestOptions AS LONG,ReplyBuffer AS LPSTR,ReplySize AS LONG,Timeout AS LONG) AS LONG PASCAL FROM "IcmpSendEcho" LIB "icmp.dll"
DLL32 FUNCTION WSAGetLastError() AS _INT PASCAL FROM "WSAGetLastError" LIB "wsock32.dll"]]>
<![CDATA[FiveWin for Harbour/xHarbour :: TWebView2 :: Author Ari]]> 2025-03-11T11:24:35-06:00 2025-03-11T11:24:35-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45510&p=278292#p278292
Vou tentar explicar minha dificuldade:

Estou modificando o meu ERP, e criei classes que já funcionam no GUI, e também no HTML, a mesma classe criada em GUI é redesenhada no HTML.

(quando eu modifico algo no FiveWin já refrete a modificação no desenho HTML)

E estou usando EasyUI + Javascript + Json, e conforme código abaixo e abro a primeira página e a partir dele preciso acionar uma outra classe que gera a página de um relatorio por exemplo, eu não estou sabendo criar o javascript e passar para o Harbour qual a classe criar HTML, e em seguida reapresentar a nova página, dei uma olhada no SendToFWH(), É possivel passar um nome classe por este comando ?

E dentro da página do relatório botoes para imprimir, pdf, dashboard, excel, etc. Passei olhando os exemplos e não consegui nada.

Antes tudo isso já funcionava com o mod_harbour, mas isso precisa de um servidor grande, apache, etc.. e quando vi que posso ter o Browse Edge dentro do APP achei genial. Estou modificando para simplificar as coisas

eu uso FWH 2410 e tambem tenho FWH 2501.

Code: Select all | Expand


/*========================================================================
                       SISREV INFORMATICA LTDA.
              Prestando serviços com qualidade desde 1993
                       CNPJ: 02.623.572/0001-52
                       CNPJ: 02.623.572/0002-33
                          www.sisrev.com.br
  ========================================================================
   Sistema..: Sisrev-Win 5.0
   Autor(es): Ariovaldo da Costa Foliene
   Aplicação: TVWeb
   Notas....: Abre as páginas do Sisrev-Web - Microsoft Edge WebView2
   Data.....: 10-03-2025  
  ========================================================================
   TVisual--+
            |
            +--TVisualForm--+  
                            |
                            +--TVWeb.prg
   ========================================================================                                                     
*/

#include "fivewin.ch"
#include "Objects.ch"
#include "\sis\fsql901\include\rede.ch"

* ========================================================================
CLASS TVWeb FROM TVisualForm
* ========================================================================
  DATA cPage   
  DATA oWebView
    
  METHOD New() CONSTRUCTOR
  METHOD AddControl()
  METHOD BuildMenu()
    
END CLASS

* ========================================================================
METHOD New( xcPage, xcNome ) CLASS TVWeb
* ========================================================================

#ifdef __XHARBOUR__
  
  TVWebMsg() ; return Self
  
#endif
    
  DEFAULT xcPage := ""
  DEFAULT xcNome := Empresas(1)  
  
  ::Super:New("rel")
  
  ::cNome       := xcNome
  ::cPage       := "http://localhost:3000/" + xcPage  // nodejs
  ::lToolBar    := FALSE  
  ::lTask       := FALSE
  ::lRastrear   := FALSE
   
  ::AddControl()
  
  ::oWebView:oWnd:bValid := {|| ::oWebView:Terminate(),;
                                  WndMain():Show()    ,;
                                  WndMain():SetFocus(), TRUE }
                                
return Self

* ========================================================================
METHOD AddControl() CLASS TVWeb
* ========================================================================

#ifndef __XHARBOUR__

  ::oWebView:= TWebView2():New()
  
  ::oWebView:SetTitle( WebTitle("Sisrev-Web") ) 
  ::oWebView:SetUserAgent( WebAgent() )
  ::oWebView:oWnd:bResized := {|| ::oWebView:oWnd:Maximize() }
  ::oWebView:oWnd:SetMenu( ::BuildMenu() )  
  ::oWebView:oWnd:SetColor( CLR_BLACK ,nRGB( 231, 242, 255 )  )
  ::oWebView:oWnd:l2007    := .T.
  ::oWebView:SetSize( WndWidth( ::oWebView:oWnd:hWnd ) - 15, WndHeight( ::oWebView:oWnd:hWnd ) - 58 )  
 
  ::oWebView:Navigate( ::cPage )  
  
  ::oWebView:OpenDevToolsWindow(.F.)
  ::oWebView:ShowDownloads(.F.)    
  ::oWebView:oWnd:bInit := {|| ::oWebView:oWnd:Maximize() }
                                  
  ::oWebView:Run()  
  ::oWebView:Destroy()
  
  WndMain():Hide()
 
#endif

return nil

* =========================================================================
METHOD BuildMenu() CLASS TVWeb
* =========================================================================
  local oMenu

  MENU oMenu 
     MENUITEM "Fechar" ACTION ::oWebView:oWnd:End()
  ENDMENU
   
return oMenu 

* =========================================================================
Function TVWebMsg()
return Msg("** Esta funcionidade disponível para HarBour **")  
* =========================================================================

* =========================================================================
Function WebAgent()
* =========================================================================
return "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)"+;
       " AppleWebKit/537.36 (KHTML, like Gecko)"               +;
       " Chrome/103.0.5060.53 Mobile Safari/537.36" 

]]>

Vou tentar explicar minha dificuldade:

Estou modificando o meu ERP, e criei classes que já funcionam no GUI, e também no HTML, a mesma classe criada em GUI é redesenhada no HTML.

(quando eu modifico algo no FiveWin já refrete a modificação no desenho HTML)

E estou usando EasyUI + Javascript + Json, e conforme código abaixo e abro a primeira página e a partir dele preciso acionar uma outra classe que gera a página de um relatorio por exemplo, eu não estou sabendo criar o javascript e passar para o Harbour qual a classe criar HTML, e em seguida reapresentar a nova página, dei uma olhada no SendToFWH(), É possivel passar um nome classe por este comando ?

E dentro da página do relatório botoes para imprimir, pdf, dashboard, excel, etc. Passei olhando os exemplos e não consegui nada.

Antes tudo isso já funcionava com o mod_harbour, mas isso precisa de um servidor grande, apache, etc.. e quando vi que posso ter o Browse Edge dentro do APP achei genial. Estou modificando para simplificar as coisas

eu uso FWH 2410 e tambem tenho FWH 2501.

Code: Select all | Expand


/*========================================================================
                       SISREV INFORMATICA LTDA.
              Prestando serviços com qualidade desde 1993
                       CNPJ: 02.623.572/0001-52
                       CNPJ: 02.623.572/0002-33
                          www.sisrev.com.br
  ========================================================================
   Sistema..: Sisrev-Win 5.0
   Autor(es): Ariovaldo da Costa Foliene
   Aplicação: TVWeb
   Notas....: Abre as páginas do Sisrev-Web - Microsoft Edge WebView2
   Data.....: 10-03-2025  
  ========================================================================
   TVisual--+
            |
            +--TVisualForm--+  
                            |
                            +--TVWeb.prg
   ========================================================================                                                     
*/

#include "fivewin.ch"
#include "Objects.ch"
#include "\sis\fsql901\include\rede.ch"

* ========================================================================
CLASS TVWeb FROM TVisualForm
* ========================================================================
  DATA cPage   
  DATA oWebView
    
  METHOD New() CONSTRUCTOR
  METHOD AddControl()
  METHOD BuildMenu()
    
END CLASS

* ========================================================================
METHOD New( xcPage, xcNome ) CLASS TVWeb
* ========================================================================

#ifdef __XHARBOUR__
  
  TVWebMsg() ; return Self
  
#endif
    
  DEFAULT xcPage := ""
  DEFAULT xcNome := Empresas(1)  
  
  ::Super:New("rel")
  
  ::cNome       := xcNome
  ::cPage       := "http://localhost:3000/" + xcPage  // nodejs
  ::lToolBar    := FALSE  
  ::lTask       := FALSE
  ::lRastrear   := FALSE
   
  ::AddControl()
  
  ::oWebView:oWnd:bValid := {|| ::oWebView:Terminate(),;
                                  WndMain():Show()    ,;
                                  WndMain():SetFocus(), TRUE }
                                
return Self

* ========================================================================
METHOD AddControl() CLASS TVWeb
* ========================================================================

#ifndef __XHARBOUR__

  ::oWebView:= TWebView2():New()
  
  ::oWebView:SetTitle( WebTitle("Sisrev-Web") ) 
  ::oWebView:SetUserAgent( WebAgent() )
  ::oWebView:oWnd:bResized := {|| ::oWebView:oWnd:Maximize() }
  ::oWebView:oWnd:SetMenu( ::BuildMenu() )  
  ::oWebView:oWnd:SetColor( CLR_BLACK ,nRGB( 231, 242, 255 )  )
  ::oWebView:oWnd:l2007    := .T.
  ::oWebView:SetSize( WndWidth( ::oWebView:oWnd:hWnd ) - 15, WndHeight( ::oWebView:oWnd:hWnd ) - 58 )  
 
  ::oWebView:Navigate( ::cPage )  
  
  ::oWebView:OpenDevToolsWindow(.F.)
  ::oWebView:ShowDownloads(.F.)    
  ::oWebView:oWnd:bInit := {|| ::oWebView:oWnd:Maximize() }
                                  
  ::oWebView:Run()  
  ::oWebView:Destroy()
  
  WndMain():Hide()
 
#endif

return nil

* =========================================================================
METHOD BuildMenu() CLASS TVWeb
* =========================================================================
  local oMenu

  MENU oMenu 
     MENUITEM "Fechar" ACTION ::oWebView:oWnd:End()
  ENDMENU
   
return oMenu 

* =========================================================================
Function TVWebMsg()
return Msg("** Esta funcionidade disponível para HarBour **")  
* =========================================================================

* =========================================================================
Function WebAgent()
* =========================================================================
return "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)"+;
       " AppleWebKit/537.36 (KHTML, like Gecko)"               +;
       " Chrome/103.0.5060.53 Mobile Safari/537.36" 

]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TWebView2 :: Reply by Ari]]> 2025-03-11T11:26:49-06:00 2025-03-11T11:26:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45510&p=278293#p278293
I'm modifying my ERP, and I created classes that already work in the GUI, and also in HTML, the same class created in GUI is redesigned in HTML.

(when I modify something in FiveWin, the modification is already reflected in the HTML design)

And I'm using EasyUI + Javascript + Json, and according to the code below, I open the first page and from there I need to trigger another class that generates the page of a report, for example. I don't know how to create the javascript and pass to Harbour which class to create HTML, and then re-present the new page. I took a look at SendToFWH(), is it possible to pass a class name through this command?

And within the report page, buttons to print, pdf, dashboard, excel, etc. I looked at the examples and couldn't find anything.

Before all this already worked with mod_harbour, but this requires a large server, Apache, etc. and when I saw that I can have Browse Edge inside the APP I thought it was great. I'm modifying it to simplify things

I use FWH 2410 and I also have FWH 2501.]]>

I'm modifying my ERP, and I created classes that already work in the GUI, and also in HTML, the same class created in GUI is redesigned in HTML.

(when I modify something in FiveWin, the modification is already reflected in the HTML design)

And I'm using EasyUI + Javascript + Json, and according to the code below, I open the first page and from there I need to trigger another class that generates the page of a report, for example. I don't know how to create the javascript and pass to Harbour which class to create HTML, and then re-present the new page. I took a look at SendToFWH(), is it possible to pass a class name through this command?

And within the report page, buttons to print, pdf, dashboard, excel, etc. I looked at the examples and couldn't find anything.

Before all this already worked with mod_harbour, but this requires a large server, Apache, etc. and when I saw that I can have Browse Edge inside the APP I thought it was great. I'm modifying it to simplify things

I use FWH 2410 and I also have FWH 2501.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TWebView2 :: Reply by Antonio Linares]]> 2025-03-11T12:22:13-06:00 2025-03-11T12:22:13-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45510&p=278295#p278295
Please post some screenshots to get a better idea of what you need

many thanks]]>

Please post some screenshots to get a better idea of what you need

many thanks]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TWebView2 :: Reply by Lailton]]> 2025-03-11T14:07:50-06:00 2025-03-11T14:07:50-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45510&p=278302#p278302 I have too some apps already using the webview and some HTMLs to render the screens.

Image
Image

It is awesome combine FWH with WebView + HTML/JS/CSS.
we can make nice UI and using bind call some command windows ( or any other OS ) to run procedure that normally is not
allowed by the browser. there's no limit.]]>
I have too some apps already using the webview and some HTMLs to render the screens.

Image
Image

It is awesome combine FWH with WebView + HTML/JS/CSS.
we can make nice UI and using bind call some command windows ( or any other OS ) to run procedure that normally is not
allowed by the browser. there's no limit.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TWebView2 :: Reply by vilian]]> 2025-03-12T07:49:10-06:00 2025-03-12T07:49:10-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45510&p=278321#p278321 <![CDATA[FiveWin for Harbour/xHarbour :: Re: TWebView2 :: Reply by leandro]]> 2025-03-12T07:58:49-06:00 2025-03-12T07:58:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45510&p=278322#p278322
No se si pueda ayudar

viewtopic.php?p=274665#p274665]]>

No se si pueda ayudar

viewtopic.php?p=274665#p274665]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TWebView2 [resolvido] :: Reply by Ari]]> 2025-03-12T11:37:19-06:00 2025-03-12T11:37:19-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45510&p=278334#p278334
Sisrev-Win
Image

Sisrev-Web
Image

Sisrev-Win - Exemplo de Relatório de faturamento
Image

Sisrev-Web
Image

Sisrev-Win - Exemplo de Relatório de faturamento
Image

Sisrev-Web
Image


Resolvi assim:

Code: Select all | Expand

::oWebView:= TWebView2():New()
  
  ::oWebView:SetTitle( WebTitle("Sisrev-Web") ) 
  ::oWebView:SetUserAgent( WebAgent() )
  ::oWebView:oWnd:bResized := {|| ::oWebView:oWnd:Maximize() }
  ::oWebView:oWnd:SetMenu( ::BuildMenu() )  
  ::oWebView:oWnd:SetColor( CLR_BLACK ,nRGB( 231, 242, 255 ) )
  ::oWebView:oWnd:l2007    := .T.
  ::oWebView:SetSize( WndWidth(  ::oWebView:oWnd:hWnd ) - 15,;
                      WndHeight( ::oWebView:oWnd:hWnd ) - 58 )  

  ::oWebView:Navigate( ::cPage )  

  ::oWebView:bOnBind  := { |cJson| ExecWeb(cJson) }  <<<< ----------------------- aqui
    
  ::oWebView:OpenDevToolsWindow(.F.)
  ::oWebView:ShowDownloads(.F.)    
  ::oWebView:oWnd:bInit := {|| ::oWebView:oWnd:Maximize() }
                                  
  ::oWebView:Run()  
  ::oWebView:Destroy()
JavaScript

Code: Select all | Expand

  <form id="formbut" name="formbut" autocomplete="on" accept-charset="UTF-8" onsubmit="return validateForm()">
         <div>
         <a href="#" id="barrasuperior" class="easyui-linkbutton easyui-tooltip"  data-options="iconAlign:'top',iconCls:'fechar',content:'Fechar',width:'100',height:'65'" onclick="$('#win').window('close')">Fechar</a>
         <a href="#" id="barrasuperior" class="easyui-linkbutton easyui-tooltip"  data-options="iconAlign:'top',iconCls:'start',content:'OK-confirma opção',width:'100',height:'65'" onclick="javascript:Retorno();">Executar</a>
         </div>

         <input type="hidden" id="Usuario"      name="Usuario"   value="33">
         <input type="hidden" id="cNomTBL"      name="cNomTBL"   value="">
         <input type="hidden" id="nQual"        name="nQual"     value="2">
         <input type="hidden" id="cNome"        name="cNome"     value="<b>Centro de Relatórios</b>">
         <input type="hidden" id="cSubTitle"    name="cSubTitle" value="">
         <input type="hidden" id="Classe"       name="Classe"    value="TVBREL">
         <input type="hidden" id="registro"     name="registro"  value="">
         <input type="hidden" id="cDg"          name="cDg"    value="">

        <!-- DataGridRelWeb -->
        <table id="dg" class="easyui-datagrid"   pagination="true" singleSelect="true" remoteSort="false" striped="true" norap fitcolumns="true" pageSize="20"                            
          pagePosition="top" autoRowHeight="false" emptyMsg="Não foi encontrado registros" pageList="[10,15,20,25,30,35,40,50,100]" 
		                   style="width:auto;height:auto;" url="/sisrev/json/tvbreldiversos.json" method="get">          
         <thead>
         <tr>
         <th data-options="field:'CK' , checkbox:true"></th>
         <th data-options="field:'Num', width:10, align:'center'">Opção</th>
         <th data-options="field:'Descricao', sortable:true, width:100"><b>Descrição</b></th>
         </tr>
         </thead>
         </table>
         <script>
         $('#dg').datagrid({
           onClickRow:function(index,row){
           SendToFWH('TVBREL():TVBLISOPC('+row.Num+',"'+row.Descricao+'")')  <<<<< ------------------ aqui
          	}
           })

         </script>

         <script>
            $(function(){
               var dg = $('#dg').datagrid();
               dg.datagrid('enableFilter');})

         </script>
         </form>

Code: Select all | Expand


* ========================================================================
Function ExecWeb( cData )
* ========================================================================
   
  if ValType( cData ) == "A"
     cData := HB_VALTOEXP(cData) /* converts any data type to STR Value */
     cData := strtran( cData, "{", "")
     cData := strtran( cData, "}", "")
     cData := strtran( cData, "'", "")
  Endif  

  OnGet( "&classe=" + cData )
   
return nil
]]>

Sisrev-Win
Image

Sisrev-Web
Image

Sisrev-Win - Exemplo de Relatório de faturamento
Image

Sisrev-Web
Image

Sisrev-Win - Exemplo de Relatório de faturamento
Image

Sisrev-Web
Image


Resolvi assim:

Code: Select all | Expand

::oWebView:= TWebView2():New()
  
  ::oWebView:SetTitle( WebTitle("Sisrev-Web") ) 
  ::oWebView:SetUserAgent( WebAgent() )
  ::oWebView:oWnd:bResized := {|| ::oWebView:oWnd:Maximize() }
  ::oWebView:oWnd:SetMenu( ::BuildMenu() )  
  ::oWebView:oWnd:SetColor( CLR_BLACK ,nRGB( 231, 242, 255 ) )
  ::oWebView:oWnd:l2007    := .T.
  ::oWebView:SetSize( WndWidth(  ::oWebView:oWnd:hWnd ) - 15,;
                      WndHeight( ::oWebView:oWnd:hWnd ) - 58 )  

  ::oWebView:Navigate( ::cPage )  

  ::oWebView:bOnBind  := { |cJson| ExecWeb(cJson) }  <<<< ----------------------- aqui
    
  ::oWebView:OpenDevToolsWindow(.F.)
  ::oWebView:ShowDownloads(.F.)    
  ::oWebView:oWnd:bInit := {|| ::oWebView:oWnd:Maximize() }
                                  
  ::oWebView:Run()  
  ::oWebView:Destroy()
JavaScript

Code: Select all | Expand

  <form id="formbut" name="formbut" autocomplete="on" accept-charset="UTF-8" onsubmit="return validateForm()">
         <div>
         <a href="#" id="barrasuperior" class="easyui-linkbutton easyui-tooltip"  data-options="iconAlign:'top',iconCls:'fechar',content:'Fechar',width:'100',height:'65'" onclick="$('#win').window('close')">Fechar</a>
         <a href="#" id="barrasuperior" class="easyui-linkbutton easyui-tooltip"  data-options="iconAlign:'top',iconCls:'start',content:'OK-confirma opção',width:'100',height:'65'" onclick="javascript:Retorno();">Executar</a>
         </div>

         <input type="hidden" id="Usuario"      name="Usuario"   value="33">
         <input type="hidden" id="cNomTBL"      name="cNomTBL"   value="">
         <input type="hidden" id="nQual"        name="nQual"     value="2">
         <input type="hidden" id="cNome"        name="cNome"     value="<b>Centro de Relatórios</b>">
         <input type="hidden" id="cSubTitle"    name="cSubTitle" value="">
         <input type="hidden" id="Classe"       name="Classe"    value="TVBREL">
         <input type="hidden" id="registro"     name="registro"  value="">
         <input type="hidden" id="cDg"          name="cDg"    value="">

        <!-- DataGridRelWeb -->
        <table id="dg" class="easyui-datagrid"   pagination="true" singleSelect="true" remoteSort="false" striped="true" norap fitcolumns="true" pageSize="20"                            
          pagePosition="top" autoRowHeight="false" emptyMsg="Não foi encontrado registros" pageList="[10,15,20,25,30,35,40,50,100]" 
		                   style="width:auto;height:auto;" url="/sisrev/json/tvbreldiversos.json" method="get">          
         <thead>
         <tr>
         <th data-options="field:'CK' , checkbox:true"></th>
         <th data-options="field:'Num', width:10, align:'center'">Opção</th>
         <th data-options="field:'Descricao', sortable:true, width:100"><b>Descrição</b></th>
         </tr>
         </thead>
         </table>
         <script>
         $('#dg').datagrid({
           onClickRow:function(index,row){
           SendToFWH('TVBREL():TVBLISOPC('+row.Num+',"'+row.Descricao+'")')  <<<<< ------------------ aqui
          	}
           })

         </script>

         <script>
            $(function(){
               var dg = $('#dg').datagrid();
               dg.datagrid('enableFilter');})

         </script>
         </form>

Code: Select all | Expand


* ========================================================================
Function ExecWeb( cData )
* ========================================================================
   
  if ValType( cData ) == "A"
     cData := HB_VALTOEXP(cData) /* converts any data type to STR Value */
     cData := strtran( cData, "{", "")
     cData := strtran( cData, "}", "")
     cData := strtran( cData, "'", "")
  Endif  

  OnGet( "&classe=" + cData )
   
return nil
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: TImage Class :: Author byron.hopp]]> 2025-03-11T13:21:08-06:00 2025-03-11T13:21:08-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45513&p=278299#p278299
Thanks,]]>

Thanks,]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TImage Class :: Reply by karinha]]> 2025-03-12T09:18:37-06:00 2025-03-12T09:18:37-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45513&p=278326#p278326
viewtopic.php?p=152737#p152737

viewtopic.php?f=3&t=23500&p=126264&hili ... mp#p126264

Post the code of how you are doing it, it makes it easier to help.

Gracias, tks.

Regards, saludos.]]>

viewtopic.php?p=152737#p152737

viewtopic.php?f=3&t=23500&p=126264&hili ... mp#p126264

Post the code of how you are doing it, it makes it easier to help.

Gracias, tks.

Regards, saludos.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TImage Class :: Reply by karinha]]> 2025-03-12T09:25:47-06:00 2025-03-12T09:25:47-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45513&p=278327#p278327

Code: Select all | Expand

**==========================================================================
STATIC FUNCTION GetPngMC(oImage)
**==========================================================================
LOCAL cFile,cStrBmp

cFile := cGetFile( "Bitmap (*.bmp)| *.bmp|" + ;
                    "DIB   (*.dib)| *.dib|" + ;
                    "PCX   (*.pcx)| *.pcx|" + ;
                    "JPEG  (*.jpg)| *.jpg|" + ;
                    "GIF   (*.gif)| *.gif|" + ;
                    "TARGA (*.tga)| *.tga|" + ;
                    "RLE   (*.rle)| *.rle|" + ;
                    "All Files (*.*)| *.*"    ;
                    ,"Selecione o arquivo", 4 )

IF !Empty(cFile) .and. File(cFile)
   oImage:LoadBmp( cFile )
   
   //redimenciona o tamanho da foto 256 x 194 pixel
   oImage:hBitmap := ResizeBmp( oImage:hBitmap, 256, 194, .T. ) //redimensiona
   
   cStrBmp := BmpToStr(oImage:hBitmap)      //transf de img para string
   oImage:Refresh()

	//   0 -> Bmp  //   2 -> Jpg   //  13 -> Png
   oImage:SaveImage(cNome, 13, 75)
ENDIF

RETURN NIL
Regards, saludos.]]>

Code: Select all | Expand

**==========================================================================
STATIC FUNCTION GetPngMC(oImage)
**==========================================================================
LOCAL cFile,cStrBmp

cFile := cGetFile( "Bitmap (*.bmp)| *.bmp|" + ;
                    "DIB   (*.dib)| *.dib|" + ;
                    "PCX   (*.pcx)| *.pcx|" + ;
                    "JPEG  (*.jpg)| *.jpg|" + ;
                    "GIF   (*.gif)| *.gif|" + ;
                    "TARGA (*.tga)| *.tga|" + ;
                    "RLE   (*.rle)| *.rle|" + ;
                    "All Files (*.*)| *.*"    ;
                    ,"Selecione o arquivo", 4 )

IF !Empty(cFile) .and. File(cFile)
   oImage:LoadBmp( cFile )
   
   //redimenciona o tamanho da foto 256 x 194 pixel
   oImage:hBitmap := ResizeBmp( oImage:hBitmap, 256, 194, .T. ) //redimensiona
   
   cStrBmp := BmpToStr(oImage:hBitmap)      //transf de img para string
   oImage:Refresh()

	//   0 -> Bmp  //   2 -> Jpg   //  13 -> Png
   oImage:SaveImage(cNome, 13, 75)
ENDIF

RETURN NIL
Regards, saludos.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TImage Class :: Reply by cnavarro]]> 2025-03-12T12:52:08-06:00 2025-03-12T12:52:08-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45513&p=278335#p278335
byron.hopp wrote: Tue Mar 11, 2025 7:21 pm I have been using the TImage class because my scanner hardware died, and the other scanner only produces JPG instead of BMP. However I cannot get the Method RotateImage to work it says message not found, and I cannot seem to resize the image, does this work, or am I doing something wrong.

Thanks,
There are some FreeImage DLLS in which the Rotate function does not appear and the RotateClassic function exists, so to maintain compatibility with previous versions we are going to make the following changes to the class

Code: Select all | Expand


//----------------------------------------------------------------------------//

METHOD RotateImage( nAngle ) CLASS TImage

   local hDib := DibFromBitmap( ::hBitmap )
   local cTempFile := cTempFile( , "BMP" )
   local lSaved, hBmp
   local hOldBmp  := ::hBitmap
   local hOldPal  := ::hPalette

   DibWrite( cTempFile, hDib )

   GloBalFree( hDib )

   hBmp = FIROTATEIMG( cTempFile, nAngle, Self )   // New Last parameter
   
   FErase( cTempFile )
.../...

//----------------------------------------------------------------------------//

Function FIROTATEIMG( cSrcFile, nAngle, oImg )   // Look new last parameter

   local nSrcFormat, hDib, hDib2, lOk
   local nFormat, hInfoH, hInfo, hBits, hWnd, hDC, hBmp := 0

   nSrcFormat := FIGETFILETYPE( cSrcFile, 0 )

   hDib := FILOAD( nSrcFormat, cSrcFile, 0 )

   IF hDib <> 0
      hDib2 := FIRotate( hDib, nAngle )
      // New
      if !hb_IsNumeric( hDib2 ) .or. hDib2 == 0
         hDib2 := FIRotateClassic( hDib, nAngle )
      endif
      IF hb_IsNumeric( hDib2 ) .and. hDib2 <> 0
         hInfoH  := FIGETINFOHEADER( hDib2 )
         hInfo   := FIGETINFO( hDib2 )
         hBits   := FIGETBITS( hDib2 )
         hWnd    := oImg:oWnd:hWnd  // GETDESKTOPWINDOW()
.../...

 //----------------------------------------------------------------------------//
 
 DLL32 FUNCTION FIRotate( hDib AS LONG, nAngle AS _DOUBLE, nColor AS LONG ) AS LONG ;
      PASCAL FROM If( IsExe64(), "FreeImage_Rotate", "_FreeImage_Rotate@16" ) ;
      LIB hLib

// New Function
DLL32 FUNCTION FIRotateClassic( hDib AS LONG, nAngle AS _DOUBLE ) AS LONG ;
      PASCAL FROM If( IsExe64(), "FreeImage_RotateClassic", "_FreeImage_RotateClassic@12" ) ;
      LIB hLib

I hope it works properly for you now.]]>
byron.hopp wrote: Tue Mar 11, 2025 7:21 pm I have been using the TImage class because my scanner hardware died, and the other scanner only produces JPG instead of BMP. However I cannot get the Method RotateImage to work it says message not found, and I cannot seem to resize the image, does this work, or am I doing something wrong.

Thanks,
There are some FreeImage DLLS in which the Rotate function does not appear and the RotateClassic function exists, so to maintain compatibility with previous versions we are going to make the following changes to the class

Code: Select all | Expand


//----------------------------------------------------------------------------//

METHOD RotateImage( nAngle ) CLASS TImage

   local hDib := DibFromBitmap( ::hBitmap )
   local cTempFile := cTempFile( , "BMP" )
   local lSaved, hBmp
   local hOldBmp  := ::hBitmap
   local hOldPal  := ::hPalette

   DibWrite( cTempFile, hDib )

   GloBalFree( hDib )

   hBmp = FIROTATEIMG( cTempFile, nAngle, Self )   // New Last parameter
   
   FErase( cTempFile )
.../...

//----------------------------------------------------------------------------//

Function FIROTATEIMG( cSrcFile, nAngle, oImg )   // Look new last parameter

   local nSrcFormat, hDib, hDib2, lOk
   local nFormat, hInfoH, hInfo, hBits, hWnd, hDC, hBmp := 0

   nSrcFormat := FIGETFILETYPE( cSrcFile, 0 )

   hDib := FILOAD( nSrcFormat, cSrcFile, 0 )

   IF hDib <> 0
      hDib2 := FIRotate( hDib, nAngle )
      // New
      if !hb_IsNumeric( hDib2 ) .or. hDib2 == 0
         hDib2 := FIRotateClassic( hDib, nAngle )
      endif
      IF hb_IsNumeric( hDib2 ) .and. hDib2 <> 0
         hInfoH  := FIGETINFOHEADER( hDib2 )
         hInfo   := FIGETINFO( hDib2 )
         hBits   := FIGETBITS( hDib2 )
         hWnd    := oImg:oWnd:hWnd  // GETDESKTOPWINDOW()
.../...

 //----------------------------------------------------------------------------//
 
 DLL32 FUNCTION FIRotate( hDib AS LONG, nAngle AS _DOUBLE, nColor AS LONG ) AS LONG ;
      PASCAL FROM If( IsExe64(), "FreeImage_Rotate", "_FreeImage_Rotate@16" ) ;
      LIB hLib

// New Function
DLL32 FUNCTION FIRotateClassic( hDib AS LONG, nAngle AS _DOUBLE ) AS LONG ;
      PASCAL FROM If( IsExe64(), "FreeImage_RotateClassic", "_FreeImage_RotateClassic@12" ) ;
      LIB hLib

I hope it works properly for you now.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TImage Class :: Reply by cnavarro]]> 2025-03-12T15:42:41-06:00 2025-03-12T15:42:41-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45513&p=278338#p278338

Code: Select all | Expand

#include "FiveWin.ch"

static oDlg, oBtn1, oBtn2, oImg1, oImg2, oImg, lTodo := .F.

//----------------------------------------------------------------------------//

function Main( cImgName1, cPath )

   DEFAULT cImgName1 := "d:\fwh\fwhteam\samples\splash.jpg"

   if Empty( cPath )

      DEFINE DIALOG oDlg SIZE 414, 702 // 844
      
      @ 30, 1 IMAGE oImg1 FILENAME cImgName1 SIZE 207, 300 OF oDlg PIXEL //ADJUST SCROLL
      
      ACTIVATE DIALOG oDlg ;
         ON INIT ( oDlg:SetPos( 0, ScreenWidth() - oDlg:nWidth + 2 ),  BuildButtonBar() )
   endif

return nil

//----------------------------------------------------------------------------//

function BuildButtonBar()

   local oBar, hTemp, uTemp

   DEFINE BUTTONBAR oBar SIZE 60, 60 OF oDlg //2007

   DEFINE BUTTON OF oBar RESOURCE "Replace" TOOLTIP "Rotar" ;
      PROMPT "Rotate" ACTION ( oImg1:hBitMap := oImg1:RotateImage( 90.00 ), oImg1:Refresh() )
      
   DEFINE BUTTON OF oBar RESOURCE "print" TOOLTIP "Imprimir" ;
      PROMPT "Imprimir" ACTION ( ImgPrint( @oImg1, @oImg2, @oDlg ) )

   DEFINE BUTTON OF oBar RESOURCE "exit" TOOLTIP "Salir" ;
      PROMPT "Salir" ACTION oDlg:End()

return nil

//----------------------------------------------------------------------------//

STATIC FUNCTION ImgPrint( oImg1, oImg2, oDlg )
   
   local oPrn
   
   PRINT oPrn PREVIEW
   PAGE

   @ 0, 0 PRINT TO oPrn IMAGE oImg1:cBmpFile SIZE 8.5, 11 INCHES NOTRANSPARENT //STRETCH

   ENDPAGE
   ENDPRINT
   
RETURN ( .T. )

//----------------------------------------------------------------------------//

]]>

Code: Select all | Expand

#include "FiveWin.ch"

static oDlg, oBtn1, oBtn2, oImg1, oImg2, oImg, lTodo := .F.

//----------------------------------------------------------------------------//

function Main( cImgName1, cPath )

   DEFAULT cImgName1 := "d:\fwh\fwhteam\samples\splash.jpg"

   if Empty( cPath )

      DEFINE DIALOG oDlg SIZE 414, 702 // 844
      
      @ 30, 1 IMAGE oImg1 FILENAME cImgName1 SIZE 207, 300 OF oDlg PIXEL //ADJUST SCROLL
      
      ACTIVATE DIALOG oDlg ;
         ON INIT ( oDlg:SetPos( 0, ScreenWidth() - oDlg:nWidth + 2 ),  BuildButtonBar() )
   endif

return nil

//----------------------------------------------------------------------------//

function BuildButtonBar()

   local oBar, hTemp, uTemp

   DEFINE BUTTONBAR oBar SIZE 60, 60 OF oDlg //2007

   DEFINE BUTTON OF oBar RESOURCE "Replace" TOOLTIP "Rotar" ;
      PROMPT "Rotate" ACTION ( oImg1:hBitMap := oImg1:RotateImage( 90.00 ), oImg1:Refresh() )
      
   DEFINE BUTTON OF oBar RESOURCE "print" TOOLTIP "Imprimir" ;
      PROMPT "Imprimir" ACTION ( ImgPrint( @oImg1, @oImg2, @oDlg ) )

   DEFINE BUTTON OF oBar RESOURCE "exit" TOOLTIP "Salir" ;
      PROMPT "Salir" ACTION oDlg:End()

return nil

//----------------------------------------------------------------------------//

STATIC FUNCTION ImgPrint( oImg1, oImg2, oDlg )
   
   local oPrn
   
   PRINT oPrn PREVIEW
   PAGE

   @ 0, 0 PRINT TO oPrn IMAGE oImg1:cBmpFile SIZE 8.5, 11 INCHES NOTRANSPARENT //STRETCH

   ENDPAGE
   ENDPRINT
   
RETURN ( .T. )

//----------------------------------------------------------------------------//

]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Checkboxes not transparent :: Author TimStone]]> 2025-03-12T17:10:36-06:00 2025-03-12T17:10:36-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45520&p=278340#p278340
On the current version, the text is now on a grey rectangle.

How can we get this fixed ASAP because it really does not look good and I want to release an update to my clients.

Tim]]>

On the current version, the text is now on a grey rectangle.

How can we get this fixed ASAP because it really does not look good and I want to release an update to my clients.

Tim]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Checkboxes not transparent :: Reply by cnavarro]]> 2025-03-12T18:23:16-06:00 2025-03-12T18:23:16-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45520&p=278341#p278341 viewtopic.php?p=277374#p277374]]> viewtopic.php?p=277374#p277374]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: Checkboxes not transparent :: Reply by TimStone]]> 2025-03-12T21:49:27-06:00 2025-03-12T21:49:27-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45520&p=278342#p278342
I can make the change but I hate to need to add modified FWH files to my build scripts then have to change again with future releases. It leads to coding problems.]]>

I can make the change but I hate to need to add modified FWH files to my build scripts then have to change again with future releases. It leads to coding problems.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Checkboxes not transparent :: Reply by TimStone]]> 2025-03-12T21:49:28-06:00 2025-03-12T21:49:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45520&p=278343#p278343
I can make the change but I hate to need to add modified FWH files to my build scripts then have to change again with future releases. It leads to coding problems.]]>

I can make the change but I hate to need to add modified FWH files to my build scripts then have to change again with future releases. It leads to coding problems.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Checkboxes not transparent :: Reply by Antonio Linares]]> 2025-03-13T00:12:21-06:00 2025-03-13T00:12:21-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45520&p=278344#p278344
Please download FWH again. The fix is already inluded

waiting for your feedback

best regards]]>

Please download FWH again. The fix is already inluded

waiting for your feedback

best regards]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Checkboxes not transparent :: Reply by TimStone]]> 2025-03-13T12:39:29-06:00 2025-03-13T12:39:29-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45520&p=278351#p278351
My problem is that the checkbox control on a DIALOG is no longer transparent. I rebuilt the application with the previous version of FWH from 2024, and it was correct. However, in the 2025 release, it lost it's transparency.

Yes, I did download the latest version of FWH this morning, and the problem is still there.

I checked, the dialog.prg ( and it is in the Initiate method, because there is no Initialize method ), and yes it is corrected on this version, at least in the source.

However, there must be another modification needed to resolve the problem. IT IS UNIVERSAL and occurs in ALL places in my program where the
checkbox control is used on a DIALOG.

In my .prg files, I use:

Code: Select all | Expand

	REDEFINE CHECKBOX oLabor:glstxf ID 1040 OF oDgl MESSAGE "Is this service normally taxable for your clients ?" UPDATE
And this is the RC code:

Code: Select all | Expand

    CONTROL         "Fixed prices ?",1049,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,470,110,80,13   
Tim]]>

My problem is that the checkbox control on a DIALOG is no longer transparent. I rebuilt the application with the previous version of FWH from 2024, and it was correct. However, in the 2025 release, it lost it's transparency.

Yes, I did download the latest version of FWH this morning, and the problem is still there.

I checked, the dialog.prg ( and it is in the Initiate method, because there is no Initialize method ), and yes it is corrected on this version, at least in the source.

However, there must be another modification needed to resolve the problem. IT IS UNIVERSAL and occurs in ALL places in my program where the
checkbox control is used on a DIALOG.

In my .prg files, I use:

Code: Select all | Expand

	REDEFINE CHECKBOX oLabor:glstxf ID 1040 OF oDgl MESSAGE "Is this service normally taxable for your clients ?" UPDATE
And this is the RC code:

Code: Select all | Expand

    CONTROL         "Fixed prices ?",1049,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,470,110,80,13   
Tim]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Checkboxes not transparent :: Reply by Antonio Linares]]> 2025-03-13T15:45:01-06:00 2025-03-13T15:45:01-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45520&p=278353#p278353
Many thanks for your feedback.

The problem comes from the recent fix in Class TDialog Method Initiate()

If we include TCHECKBOX here:
"TBAR;TGET;TMULTIGET;TBTNBMP;TCOMBOBOX;TWBROWSE;TCBROWSE;TXBROWSE;TLISTBOX;TDBCOMBO;TDATEPICK;TTIMEPICK"
then transparency does not work. Once removed it works fine:

tim.prg

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oDlg, lValue := .F.

   SetDlgGradient( { { 1, RGB( 199, 216, 237 ), RGB( 237, 242, 248 ) } } )

   DEFINE DIALOG oDlg RESOURCE "Test"

   REDEFINE CHECKBOX lValue ID 10 OF oDlg 

   ACTIVATE DIALOG oDlg CENTERED

return nil
tim.rc

Code: Select all | Expand

#include <winresrc.h>
#include <windows.h>

#ifndef WC_TABCONTROL
#define WC_TABCONTROL       "SysTabControl32"
#endif

#ifndef MONTHCAL_CLASS
#define MONTHCAL_CLASS      "SysMonthCal32"
#endif

#ifndef DATETIMEPICK_CLASS
#define DATETIMEPICK_CLASS  "SysDateTimePick32"
#endif

//
// Dialog resources
//
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
Test DIALOG 0, 0, 294, 156
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "Ms Shell Dlg"
{
    AUTOCHECKBOX    "Check", 10, 93, 60, 118, 23, 0, WS_EX_LEFT
}
]]>

Many thanks for your feedback.

The problem comes from the recent fix in Class TDialog Method Initiate()

If we include TCHECKBOX here:
"TBAR;TGET;TMULTIGET;TBTNBMP;TCOMBOBOX;TWBROWSE;TCBROWSE;TXBROWSE;TLISTBOX;TDBCOMBO;TDATEPICK;TTIMEPICK"
then transparency does not work. Once removed it works fine:

tim.prg

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oDlg, lValue := .F.

   SetDlgGradient( { { 1, RGB( 199, 216, 237 ), RGB( 237, 242, 248 ) } } )

   DEFINE DIALOG oDlg RESOURCE "Test"

   REDEFINE CHECKBOX lValue ID 10 OF oDlg 

   ACTIVATE DIALOG oDlg CENTERED

return nil
tim.rc

Code: Select all | Expand

#include <winresrc.h>
#include <windows.h>

#ifndef WC_TABCONTROL
#define WC_TABCONTROL       "SysTabControl32"
#endif

#ifndef MONTHCAL_CLASS
#define MONTHCAL_CLASS      "SysMonthCal32"
#endif

#ifndef DATETIMEPICK_CLASS
#define DATETIMEPICK_CLASS  "SysDateTimePick32"
#endif

//
// Dialog resources
//
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
Test DIALOG 0, 0, 294, 156
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "Ms Shell Dlg"
{
    AUTOCHECKBOX    "Check", 10, 93, 60, 118, 23, 0, WS_EX_LEFT
}
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Checkboxes not transparent :: Reply by Antonio Linares]]> 2025-03-13T15:59:21-06:00 2025-03-13T15:59:21-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45520&p=278354#p278354
thanks!]]>

thanks!]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Checkboxes not transparent :: Reply by TimStone]]> 2025-03-13T16:13:46-06:00 2025-03-13T16:13:46-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45520&p=278358#p278358
It now works correctly

Tim]]>

It now works correctly

Tim]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Send e-mail (CDO) server SMTP GMAIL with oAuth2 :: Reply by Jack]]> 2025-03-13T04:34:20-06:00 2025-03-13T04:34:20-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45399&p=278346#p278346 Any sample about this ?

Thanks,

Philippe]]>
Any sample about this ?

Thanks,

Philippe]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Send e-mail (CDO) server SMTP GMAIL with oAuth2 :: Reply by Antonio Linares]]> 2025-03-13T05:53:10-06:00 2025-03-13T05:53:10-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45399&p=278347#p278347
There is a complete example included in FWH 25.01 samples\gmail folder]]>

There is a complete example included in FWH 25.01 samples\gmail folder]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Send e-mail (CDO) server SMTP GMAIL with oAuth2 :: Reply by Silvio.Falconi]]> 2025-03-14T03:15:29-06:00 2025-03-14T03:15:29-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45399&p=278365#p278365
mauri.menabue wrote: Sun Feb 09, 2025 2:16 pm Good morning everyone
I need help to be able to send emails from one of my FiveWin 32 bit applications
through the use of one or more gmail SMTP servers with recent oAuth2 authentication.
On the English forum Antonio replies, however, the code provided is pseudo code provided by deepseek and not
I have the experience needed to turn it into production-usable code.
Thanks to everyone Maurizio Menabue
do you tried my classes ?
viewtopic.php?p=277951#p277951 ]]>
mauri.menabue wrote: Sun Feb 09, 2025 2:16 pm Good morning everyone
I need help to be able to send emails from one of my FiveWin 32 bit applications
through the use of one or more gmail SMTP servers with recent oAuth2 authentication.
On the English forum Antonio replies, however, the code provided is pseudo code provided by deepseek and not
I have the experience needed to turn it into production-usable code.
Thanks to everyone Maurizio Menabue
do you tried my classes ?
viewtopic.php?p=277951#p277951 ]]>
<![CDATA[FiveWin for Harbour/xHarbour :: xbrowse in truepixel and not Truepixel dialog :: Author Silvio.Falconi]]> 2025-03-14T03:58:36-06:00 2025-03-14T03:58:36-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45525&p=278366#p278366 the problem occurs when we use negative relative dimensions i.e. -10,-140 or size 300,-180
that is, I can't calculate the right position to place a button at the bottom of the xbrowse

For TRUEPIXEL, the correction ::nHeight := ::oWnd:nHeight - ::nTop - ::nBottomMargin works only if nBottomMargin is positive. With negative relative dimensions (eg. -140), it is not applied correctly.

For !TRUEPIXEL, nHeight is not corrected for negative relative dimensions (eg. -180).

I need to make the class to position the buttons so as not to rewrite the same lines in each procedure also because the procedures are more than 130

and they all use xbrowse with almost the same buttons

I used chagpt and grok3 without solving



Test 1: "Menu" button not beyond scroll, nRight: 617 (641 - 15 - 10).

Test 2: Buttons above browse, nTop: 0 correct, right aligned.

Test 3: Buttons below browse, nTop: 304 (60 + 241 + 3).

Test 4: Buttons below browse, nTop: 264 (20 + 241 + 3), visible.

Image]]>
the problem occurs when we use negative relative dimensions i.e. -10,-140 or size 300,-180
that is, I can't calculate the right position to place a button at the bottom of the xbrowse

For TRUEPIXEL, the correction ::nHeight := ::oWnd:nHeight - ::nTop - ::nBottomMargin works only if nBottomMargin is positive. With negative relative dimensions (eg. -140), it is not applied correctly.

For !TRUEPIXEL, nHeight is not corrected for negative relative dimensions (eg. -180).

I need to make the class to position the buttons so as not to rewrite the same lines in each procedure also because the procedures are more than 130

and they all use xbrowse with almost the same buttons

I used chagpt and grok3 without solving



Test 1: "Menu" button not beyond scroll, nRight: 617 (641 - 15 - 10).

Test 2: Buttons above browse, nTop: 0 correct, right aligned.

Test 3: Buttons below browse, nTop: 304 (60 + 241 + 3).

Test 4: Buttons below browse, nTop: 264 (20 + 241 + 3), visible.

Image]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: xbrowse in truepixel and not Truepixel dialog :: Reply by cnavarro]]> 2025-03-14T08:11:47-06:00 2025-03-14T08:11:47-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45525&p=278368#p278368 Please post basic sample]]> Please post basic sample]]> <![CDATA[FiveWin for Harbour/xHarbour :: New Networking Issues: Peer to Peer :: Author TimStone]]> 2025-03-11T12:00:15-06:00 2025-03-11T12:00:15-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45511&p=278294#p278294
It seems like we've had networking via the Microsoft Peer to Peer working forever ( well over 35 years ) under DOS and Windows. FWH handles everything beautifully.

In the past few weeks we have discovered that Microsoft made changes within Windows and now we are seeing ( at many installs ) that one or more workstations can no longer connect to the "server" where data files reside. Using Windows Explorer, suddenly on some computers the server, fully shared, password protection off, access granted to Everyone for Read/Write, can no longer be seen.

This is happening as Microsoft is now rolling out there 2025 Q1 updates.

I know this is NOT a FWH issue ... but many of us use this networking capability for the benefit of our clients.

I am asking if anyone has knowledge, or resources, on how to resolve this problem. It appears Microsoft has now moved to a new networking by software model and it is likely a "permissions" problem, but I can't see how, or where, to resolve the connection loss.

Any / All input will be greatly appreciated. We have to fix THIS new issue, not move to some alternative method of accessing the server ( ie. Remote Desktop isn't a solution ).

Tim]]>

It seems like we've had networking via the Microsoft Peer to Peer working forever ( well over 35 years ) under DOS and Windows. FWH handles everything beautifully.

In the past few weeks we have discovered that Microsoft made changes within Windows and now we are seeing ( at many installs ) that one or more workstations can no longer connect to the "server" where data files reside. Using Windows Explorer, suddenly on some computers the server, fully shared, password protection off, access granted to Everyone for Read/Write, can no longer be seen.

This is happening as Microsoft is now rolling out there 2025 Q1 updates.

I know this is NOT a FWH issue ... but many of us use this networking capability for the benefit of our clients.

I am asking if anyone has knowledge, or resources, on how to resolve this problem. It appears Microsoft has now moved to a new networking by software model and it is likely a "permissions" problem, but I can't see how, or where, to resolve the connection loss.

Any / All input will be greatly appreciated. We have to fix THIS new issue, not move to some alternative method of accessing the server ( ie. Remote Desktop isn't a solution ).

Tim]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: New Networking Issues: Peer to Peer :: Reply by Antonio Linares]]> 2025-03-11T12:26:01-06:00 2025-03-11T12:26:01-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45511&p=278296#p278296
I understand your frustration with the sudden networking issues you're experiencing, especially as they coincide with Microsoft's 2025 Q1 updates. Given that you're using Microsoft Peer-to-Peer networking (likely relying on SMB - Server Message Block - for file sharing) and that this setup has worked reliably for decades with FiveWin (FWH) and your applications, it’s reasonable to suspect that recent Windows updates—particularly those related to Windows Server 2025 or client-side updates—are introducing changes affecting visibility or connectivity to the server. Let’s break this down and explore potential causes and resolutions based on the information available and common networking behavior in Windows.

Potential Cause: SMB or Permissions Changes in 2025 Q1 Updates
Microsoft has been incrementally tightening security around SMB and networking protocols over the years, and with Windows Server 2025 (released November 1, 2024) and associated client updates rolling out in Q1 2025, it’s plausible that changes to SMB configuration, default security settings, or network discovery mechanisms are at play. Here are some likely culprits:
SMB Protocol Hardening: Windows Server 2025 includes enhanced SMB security features (e.g., SMB over QUIC, hardened firewall defaults, and protections against attacks). Even if your server isn’t yet on 2025, client machines receiving updates might enforce stricter SMB requirements (e.g., requiring encryption or signing) that your server doesn’t meet.
Network Discovery or Permissions: Updates might have altered default settings for network discovery, firewall rules, or the "Everyone" share permissions, making the server invisible in Windows Explorer despite being fully shared.
Deprecation of Legacy Features: Microsoft has a history of phasing out older, less secure networking components (e.g., SMBv1 was disabled by default years ago). Peer-to-Peer networking relying on older mechanisms might be impacted if a 2025 update further restricts legacy support.

Group Policy or Update Bugs: The unexpected upgrades to Windows Server 2025 reported in November 2024 (due to third-party tools or misclassified updates) suggest that Q1 updates might introduce similar quirks, like altered permissions or connectivity settings.
Since your setup has password protection off and "Everyone" granted Read/Write access, it’s unlikely a credential issue, but rather a discovery or protocol compatibility problem triggered by the update.
Steps to Diagnose and Resolve

Here’s a structured approach to troubleshoot and potentially fix this, keeping your Peer-to-Peer setup intact:

1. Verify Server Visibility
Ping the Server: From an affected workstation, open a Command Prompt and type ping [server IP] (e.g., ping 192.168.1.100). If it responds, the server is reachable, and the issue is likely at the SMB or Explorer level.
Manual Connection: In Windows Explorer, try manually connecting to the server by typing \\servername or \\serverIP in the address bar. If it works, the server is still accessible, but network discovery is failing.

2. Check SMB Settings
Server SMB Configuration: On the server, open PowerShell as Administrator and run:
Get-SmbServerConfiguration
Look for EnableSMB1Protocol (should be False), RequireSecuritySignature, and EncryptData. If EncryptData is True and clients don’t support it, this could block access.
Client SMB Configuration: On an affected workstation, run:
Get-SmbClientConfiguration
Check if RequireSecuritySignature or EncryptData is enabled post-update. If so, and the server doesn’t match, connectivity fails.
Temporary Fix: On the server, disable encryption (if it’s safe in your environment) with:
Set-SmbServerConfiguration -EncryptData $false
Restart the "Server" service (Restart-Service LanmanServer) and test.

3. Review Network Discovery and Firewall
Network Discovery: On both server and workstation, go to Control Panel > Network and Sharing Center > Advanced sharing settings. Ensure "Turn on network discovery" and "Turn on file and printer sharing" are enabled for the current network profile (Private or Public).
Firewall Rules: Updates might have reset firewall settings. Check Windows Defender Firewall:
Allow "File and Printer Sharing (SMB-In)" on the server.
Allow outbound SMB (ports 445, 139) on the client.
Command to check: netsh advfirewall firewall show rule name="File and Printer Sharing (SMB-In)"

4. Investigate Update Impact
Installed Updates: On an affected workstation, go to Settings > Windows Update > Update history. Look for updates installed around the time the issue began (likely KB numbers from January or February 2025, e.g., KB5051987 from February 11, 2025). Cross-reference with Microsoft’s update catalog or release notes for networking changes.
Server Updates: If the server received updates, check its update history too. Windows Server 2025’s February 11, 2025, update (KB5051987) resolved some networking issues (e.g., iSCSI boot errors), but others might persist.

5. Permissions and Sharing
Reapply Share Permissions: On the server, right-click the shared folder, go to Properties > Sharing > Advanced Sharing, and re-verify "Share this folder" with "Everyone" permissions. Then, under Security tab, ensure "Everyone" has Full Control.
Check Effective Permissions: Updates might enforce stricter NTFS permissions over share permissions. Use the "Effective Access" tool in the Security tab to confirm "Everyone" still has access.

6. Roll Back or Test Updates
Uninstall Updates: If a specific update correlates with the issue, uninstall it from an affected workstation via Settings > Windows Update > Update history > Uninstall updates. Test connectivity afterward.
Pause Updates: Temporarily pause updates (Settings > Windows Update > Pause for 1 week) to prevent further changes while troubleshooting.

7. Resources and Further Checks
Microsoft Documentation: Check "Resolved issues in Windows Server 2025" or "Windows Server 2025 update history" on Microsoft Learn/Support for notes on networking fixes (e.g., February 11, 2025, KB5051987 resolved some issues, but new ones could emerge).
Event Viewer: On the workstation, open Event Viewer (eventvwr.msc), go to Windows Logs > System, and filter for errors related to "Server," "SMB," or "Network" around the time of failure.
X Search: I can search X posts for real-time reports of similar issues. Would you like me to do this?

Hypothesis and Recommendation
Given the timing with 2025 Q1 updates and your description, I suspect a client-side update (e.g., Windows 10/11 receiving January/February 2025 patches) is enforcing SMB encryption or signing that your server (possibly still on an older version like Windows Server 2019/2022) doesn’t support by default. Alternatively, network discovery might be disrupted by tightened firewall rules or a bug in the update rollout.

Start with steps 1-3: verify reachability, check SMB settings, and ensure discovery/firewall are intact. If that doesn’t resolve it, pinpoint the update (step 4) and consider rolling back or adjusting server settings to match client expectations (e.g., enabling SMB signing if required).

Community Input
Since you’re asking for knowledge from others, I’d encourage you to share specifics (e.g., server OS version, client OS version, exact update KB installed) to get tailored advice. I don’t have direct FiveWin community insights here, but the issue aligns with broader Windows networking changes, not FWH itself.
]]>
I understand your frustration with the sudden networking issues you're experiencing, especially as they coincide with Microsoft's 2025 Q1 updates. Given that you're using Microsoft Peer-to-Peer networking (likely relying on SMB - Server Message Block - for file sharing) and that this setup has worked reliably for decades with FiveWin (FWH) and your applications, it’s reasonable to suspect that recent Windows updates—particularly those related to Windows Server 2025 or client-side updates—are introducing changes affecting visibility or connectivity to the server. Let’s break this down and explore potential causes and resolutions based on the information available and common networking behavior in Windows.

Potential Cause: SMB or Permissions Changes in 2025 Q1 Updates
Microsoft has been incrementally tightening security around SMB and networking protocols over the years, and with Windows Server 2025 (released November 1, 2024) and associated client updates rolling out in Q1 2025, it’s plausible that changes to SMB configuration, default security settings, or network discovery mechanisms are at play. Here are some likely culprits:
SMB Protocol Hardening: Windows Server 2025 includes enhanced SMB security features (e.g., SMB over QUIC, hardened firewall defaults, and protections against attacks). Even if your server isn’t yet on 2025, client machines receiving updates might enforce stricter SMB requirements (e.g., requiring encryption or signing) that your server doesn’t meet.
Network Discovery or Permissions: Updates might have altered default settings for network discovery, firewall rules, or the "Everyone" share permissions, making the server invisible in Windows Explorer despite being fully shared.
Deprecation of Legacy Features: Microsoft has a history of phasing out older, less secure networking components (e.g., SMBv1 was disabled by default years ago). Peer-to-Peer networking relying on older mechanisms might be impacted if a 2025 update further restricts legacy support.

Group Policy or Update Bugs: The unexpected upgrades to Windows Server 2025 reported in November 2024 (due to third-party tools or misclassified updates) suggest that Q1 updates might introduce similar quirks, like altered permissions or connectivity settings.
Since your setup has password protection off and "Everyone" granted Read/Write access, it’s unlikely a credential issue, but rather a discovery or protocol compatibility problem triggered by the update.
Steps to Diagnose and Resolve

Here’s a structured approach to troubleshoot and potentially fix this, keeping your Peer-to-Peer setup intact:

1. Verify Server Visibility
Ping the Server: From an affected workstation, open a Command Prompt and type ping [server IP] (e.g., ping 192.168.1.100). If it responds, the server is reachable, and the issue is likely at the SMB or Explorer level.
Manual Connection: In Windows Explorer, try manually connecting to the server by typing \\servername or \\serverIP in the address bar. If it works, the server is still accessible, but network discovery is failing.

2. Check SMB Settings
Server SMB Configuration: On the server, open PowerShell as Administrator and run:
Get-SmbServerConfiguration
Look for EnableSMB1Protocol (should be False), RequireSecuritySignature, and EncryptData. If EncryptData is True and clients don’t support it, this could block access.
Client SMB Configuration: On an affected workstation, run:
Get-SmbClientConfiguration
Check if RequireSecuritySignature or EncryptData is enabled post-update. If so, and the server doesn’t match, connectivity fails.
Temporary Fix: On the server, disable encryption (if it’s safe in your environment) with:
Set-SmbServerConfiguration -EncryptData $false
Restart the "Server" service (Restart-Service LanmanServer) and test.

3. Review Network Discovery and Firewall
Network Discovery: On both server and workstation, go to Control Panel > Network and Sharing Center > Advanced sharing settings. Ensure "Turn on network discovery" and "Turn on file and printer sharing" are enabled for the current network profile (Private or Public).
Firewall Rules: Updates might have reset firewall settings. Check Windows Defender Firewall:
Allow "File and Printer Sharing (SMB-In)" on the server.
Allow outbound SMB (ports 445, 139) on the client.
Command to check: netsh advfirewall firewall show rule name="File and Printer Sharing (SMB-In)"

4. Investigate Update Impact
Installed Updates: On an affected workstation, go to Settings > Windows Update > Update history. Look for updates installed around the time the issue began (likely KB numbers from January or February 2025, e.g., KB5051987 from February 11, 2025). Cross-reference with Microsoft’s update catalog or release notes for networking changes.
Server Updates: If the server received updates, check its update history too. Windows Server 2025’s February 11, 2025, update (KB5051987) resolved some networking issues (e.g., iSCSI boot errors), but others might persist.

5. Permissions and Sharing
Reapply Share Permissions: On the server, right-click the shared folder, go to Properties > Sharing > Advanced Sharing, and re-verify "Share this folder" with "Everyone" permissions. Then, under Security tab, ensure "Everyone" has Full Control.
Check Effective Permissions: Updates might enforce stricter NTFS permissions over share permissions. Use the "Effective Access" tool in the Security tab to confirm "Everyone" still has access.

6. Roll Back or Test Updates
Uninstall Updates: If a specific update correlates with the issue, uninstall it from an affected workstation via Settings > Windows Update > Update history > Uninstall updates. Test connectivity afterward.
Pause Updates: Temporarily pause updates (Settings > Windows Update > Pause for 1 week) to prevent further changes while troubleshooting.

7. Resources and Further Checks
Microsoft Documentation: Check "Resolved issues in Windows Server 2025" or "Windows Server 2025 update history" on Microsoft Learn/Support for notes on networking fixes (e.g., February 11, 2025, KB5051987 resolved some issues, but new ones could emerge).
Event Viewer: On the workstation, open Event Viewer (eventvwr.msc), go to Windows Logs > System, and filter for errors related to "Server," "SMB," or "Network" around the time of failure.
X Search: I can search X posts for real-time reports of similar issues. Would you like me to do this?

Hypothesis and Recommendation
Given the timing with 2025 Q1 updates and your description, I suspect a client-side update (e.g., Windows 10/11 receiving January/February 2025 patches) is enforcing SMB encryption or signing that your server (possibly still on an older version like Windows Server 2019/2022) doesn’t support by default. Alternatively, network discovery might be disrupted by tightened firewall rules or a bug in the update rollout.

Start with steps 1-3: verify reachability, check SMB settings, and ensure discovery/firewall are intact. If that doesn’t resolve it, pinpoint the update (step 4) and consider rolling back or adjusting server settings to match client expectations (e.g., enabling SMB signing if required).

Community Input
Since you’re asking for knowledge from others, I’d encourage you to share specifics (e.g., server OS version, client OS version, exact update KB installed) to get tailored advice. I don’t have direct FiveWin community insights here, but the issue aligns with broader Windows networking changes, not FWH itself.
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: New Networking Issues: Peer to Peer :: Reply by Otto]]> 2025-03-11T13:49:50-06:00 2025-03-11T13:49:50-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45511&p=278301#p278301 I have forwarded your question to all the AIs I know, and it seems that out of all the answers, this one might be the most promising.

Please keep us updated.

We've recently experienced issues with Remote Desktop due to regular timeouts, but we were able to resolve them by adjusting RDP timeout settings and disabling UDP for RDP in the Group Policies.

Best regards,
Otto
Check SMB Protocol Settings
Microsoft has been deprecating older versions of the SMB (Server Message Block) protocol, which could be causing connectivity issues.

Ensure that SMBv1 is disabled (for security reasons) but that SMBv2 and SMBv3 are enabled.

Open PowerShell or Command Prompt as Administrator and run:

shell
Copy
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
If SMBv2 is disabled, enable it with:

shell
Copy
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Verify that all machines are using compatible SMB versions.
]]>
I have forwarded your question to all the AIs I know, and it seems that out of all the answers, this one might be the most promising.

Please keep us updated.

We've recently experienced issues with Remote Desktop due to regular timeouts, but we were able to resolve them by adjusting RDP timeout settings and disabling UDP for RDP in the Group Policies.

Best regards,
Otto
Check SMB Protocol Settings
Microsoft has been deprecating older versions of the SMB (Server Message Block) protocol, which could be causing connectivity issues.

Ensure that SMBv1 is disabled (for security reasons) but that SMBv2 and SMBv3 are enabled.

Open PowerShell or Command Prompt as Administrator and run:

shell
Copy
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
If SMBv2 is disabled, enable it with:

shell
Copy
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Verify that all machines are using compatible SMB versions.
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: New Networking Issues: Peer to Peer :: Reply by TimStone]]> 2025-03-11T17:03:44-06:00 2025-03-11T17:03:44-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45511&p=278307#p278307
These computers are using Windows 11 as Servers for the network, not Windows Server. The response, therefore, is not engaging that limitation.

Otto,

I have also noticed Remote Desktop is losing the connection after a period of inactivity. My main computer is an Apple Mini ( M4 ), and I use RD to access a Beeline Windows 11 computer and an Ace Magician Windows 11 box. The first is my primary Windows programming computer and the second is a Celeron processor running Advantage Database Server ( final release ). It allows me to work on all 3 computers using my 27" Apple Studio display. The super strong resolution is easier on my aging eyes.

I will run the check on SMB Protocol settings. Thanks.

Tim]]>

These computers are using Windows 11 as Servers for the network, not Windows Server. The response, therefore, is not engaging that limitation.

Otto,

I have also noticed Remote Desktop is losing the connection after a period of inactivity. My main computer is an Apple Mini ( M4 ), and I use RD to access a Beeline Windows 11 computer and an Ace Magician Windows 11 box. The first is my primary Windows programming computer and the second is a Celeron processor running Advantage Database Server ( final release ). It allows me to work on all 3 computers using my 27" Apple Studio display. The super strong resolution is easier on my aging eyes.

I will run the check on SMB Protocol settings. Thanks.

Tim]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: New Networking Issues: Peer to Peer :: Reply by cmsoft]]> 2025-03-11T20:54:33-06:00 2025-03-11T20:54:33-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45511&p=278311#p278311 Tuve un problema similar (Conectar Windows 11 a otro Windows 7)
En mi caso se solucionó de esta manera:
1) Win + R -> gpedit.msc
2) Configuración del equipo -> Plantillas administrativas -> Red ->Estación de trabajo LANMAN
3) Activar Habilitar el acceso de invitados no seguros
No se cual es su equivalente en ingles, pero seguramente lo encontraras facilmente.
Espero que sirva]]>
Tuve un problema similar (Conectar Windows 11 a otro Windows 7)
En mi caso se solucionó de esta manera:
1) Win + R -> gpedit.msc
2) Configuración del equipo -> Plantillas administrativas -> Red ->Estación de trabajo LANMAN
3) Activar Habilitar el acceso de invitados no seguros
No se cual es su equivalente en ingles, pero seguramente lo encontraras facilmente.
Espero que sirva]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: New Networking Issues: Peer to Peer :: Reply by TimStone]]> 2025-03-13T16:18:28-06:00 2025-03-13T16:18:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45511&p=278359#p278359
The problem was created by Microsoft on their latest updates as they attempted to improve security. However, they did not provide any helpful documentation so it has created problems for many people. I have talked with several IT techs who have seen the problem with many software packages who need peer to peer networking.

The post by cmsoft points to the very best First Step. If that does not work, then the other steps outlined by Antonio's post will need to be tried. Using these, we have now managed to get everyone working again.

Tim]]>

The problem was created by Microsoft on their latest updates as they attempted to improve security. However, they did not provide any helpful documentation so it has created problems for many people. I have talked with several IT techs who have seen the problem with many software packages who need peer to peer networking.

The post by cmsoft points to the very best First Step. If that does not work, then the other steps outlined by Antonio's post will need to be tried. Using these, we have now managed to get everyone working again.

Tim]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: New Networking Issues: Peer to Peer :: Reply by cmsoft]]> 2025-03-14T08:45:19-06:00 2025-03-14T08:45:19-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45511&p=278369#p278369 <![CDATA[FiveWin for Harbour/xHarbour :: Re: New Networking Issues: Peer to Peer :: Reply by toninhofwi]]> 2025-03-14T12:14:42-06:00 2025-03-14T12:14:42-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45511&p=278373#p278373
Regards.]]>

Regards.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: New Networking Issues: Peer to Peer :: Reply by TimStone]]> 2025-03-14T17:43:59-06:00 2025-03-14T17:43:59-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45511&p=278380#p278380
Also, make sure PORT 6262 is open ( UDP ) on the server. I open it for outgoing and incoming.

In addition, make sure the Server has a STATIC IP, then create an ads.ini file on the workstations specifying that IP. There is info in the ADS docs on how to setup that file ... it's quite simple.

Tim]]>

Also, make sure PORT 6262 is open ( UDP ) on the server. I open it for outgoing and incoming.

In addition, make sure the Server has a STATIC IP, then create an ads.ini file on the workstations specifying that IP. There is info in the ADS docs on how to setup that file ... it's quite simple.

Tim]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: New Networking Issues: Peer to Peer :: Reply by toninhofwi]]> 2025-03-15T02:51:46-06:00 2025-03-15T02:51:46-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45511&p=278385#p278385
TimStone wrote: Fri Mar 14, 2025 11:43 pm It may be the same problem. On your workstations, follow the steps above.
I'll try

Thank you Tim.]]>
TimStone wrote: Fri Mar 14, 2025 11:43 pm It may be the same problem. On your workstations, follow the steps above.
I'll try

Thank you Tim.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Get\Action .. disable the field only :: Reply by dutch]]> 2025-03-13T22:27:31-06:00 2025-03-13T22:27:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=38801&p=278362#p278362
I try as this topic but the TGET:VarPut() do not accept the new value assign from ACTION. I use TGET:VarPut() and after use TGET:VarGet(), it return as Original Data before change.

Thanks for any help and suggestion.]]>

I try as this topic but the TGET:VarPut() do not accept the new value assign from ACTION. I use TGET:VarPut() and after use TGET:VarGet(), it return as Original Data before change.

Thanks for any help and suggestion.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Get\Action .. disable the field only :: Reply by Antonio Linares]]> 2025-03-14T02:52:11-06:00 2025-03-14T02:52:11-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=38801&p=278364#p278364
Here you have a working example:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oDlg, oGet, cText := "test"

   DEFINE DIALOG oDlg 

   @ 2, 2 GET oGet VAR cText ACTION ( oGet:Enable(), cText := "hello", oGet:Refresh(), oGet:Disable() ) SIZE 80, 20 READONLY

   ACTIVATE DIALOG oDlg CENTERED

return nil
]]>

Here you have a working example:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oDlg, oGet, cText := "test"

   DEFINE DIALOG oDlg 

   @ 2, 2 GET oGet VAR cText ACTION ( oGet:Enable(), cText := "hello", oGet:Refresh(), oGet:Disable() ) SIZE 80, 20 READONLY

   ACTIVATE DIALOG oDlg CENTERED

return nil
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Get\Action .. disable the field only :: Reply by dutch]]> 2025-03-15T02:59:31-06:00 2025-03-15T02:59:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=38801&p=278387#p278387
I use reuse function to use in ACTION and I prefer to use TGET:VarPut() instead of write value to Variable. I see in TGET classes and modify as below and can use TGET:VarPut() write Value to TGET.

Code: Select all | Expand

  METHOD VarPut( uVal ) INLINE  If( ValType( ::bSetGet ) == "B", ; // .and. ! ::lReadOnly,; // Remark for use VarPut with READONLY 
                                     Eval( ::bSetGet, uVal ),)
Thank you so much,
Antonio Linares wrote: Fri Mar 14, 2025 8:52 am Dear Dutch,

Here you have a working example:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oDlg, oGet, cText := "test"

   DEFINE DIALOG oDlg 

   @ 2, 2 GET oGet VAR cText ACTION ( oGet:Enable(), cText := "hello", oGet:Refresh(), oGet:Disable() ) SIZE 80, 20 READONLY

   ACTIVATE DIALOG oDlg CENTERED

return nil
]]>

I use reuse function to use in ACTION and I prefer to use TGET:VarPut() instead of write value to Variable. I see in TGET classes and modify as below and can use TGET:VarPut() write Value to TGET.

Code: Select all | Expand

  METHOD VarPut( uVal ) INLINE  If( ValType( ::bSetGet ) == "B", ; // .and. ! ::lReadOnly,; // Remark for use VarPut with READONLY 
                                     Eval( ::bSetGet, uVal ),)
Thank you so much,
Antonio Linares wrote: Fri Mar 14, 2025 8:52 am Dear Dutch,

Here you have a working example:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oDlg, oGet, cText := "test"

   DEFINE DIALOG oDlg 

   @ 2, 2 GET oGet VAR cText ACTION ( oGet:Enable(), cText := "hello", oGet:Refresh(), oGet:Disable() ) SIZE 80, 20 READONLY

   ACTIVATE DIALOG oDlg CENTERED

return nil
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Get\Action .. disable the field only :: Reply by Antonio Linares]]> 2025-03-15T03:15:41-06:00 2025-03-15T03:15:41-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=38801&p=278388#p278388

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oDlg, oGet, cText := "test"

   DEFINE DIALOG oDlg 

   @ 2, 2 GET oGet VAR cText ACTION ( oGet:lReadOnly := .F., oGet:VarPut( "hello" ), oGet:lReadOnly := .T. ) SIZE 80, 20 READONLY

   ACTIVATE DIALOG oDlg CENTERED

return nil
]]>

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oDlg, oGet, cText := "test"

   DEFINE DIALOG oDlg 

   @ 2, 2 GET oGet VAR cText ACTION ( oGet:lReadOnly := .F., oGet:VarPut( "hello" ), oGet:lReadOnly := .T. ) SIZE 80, 20 READONLY

   ACTIVATE DIALOG oDlg CENTERED

return nil
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Get\Action .. disable the field only :: Reply by dutch]]> 2025-03-15T10:27:37-06:00 2025-03-15T10:27:37-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=38801&p=278395#p278395
Yes, I got it. Thank you so much.]]>

Yes, I got it. Thank you so much.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Embeddings for Harbour/xHarbour !!! :: Author Antonio Linares]]> 2025-03-17T01:46:54-06:00 2025-03-17T01:46:54-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45535&p=278408#p278408 :!:

Included in next FWH build! Thanks to my son Lolo for his inspiration and for explaining it to me! <3

This class uses HuggingFace free embeddings API (378 values for each embedding) or OpenAI commercial embeddings API (3.072 values for each embedding). We convert those values to a json string that can be saved into a DBF, TXT, INI, etc.

tembeddings.prg

Code: Select all | Expand

#include "FiveWin.ch"
#include "hbcurl.ch"

//----------------------------------------------------------------------------//

CLASS TEmbeddings
    
   DATA   cModel
   DATA   cPrompt
   DATA   cResponse
   DATA   cUrl
   DATA   cKey
   DATA   hCurl
   DATA   nError     INIT 0
   DATA   nHttpCode  INIT 0
   DATA   aEmbeddings

   METHOD New( cModel, cKey )
   METHOD Distance( aVector2, lCosine )
   METHOD DistanceFrom( oEmbeddings ) INLINE ::Distance( oEmbeddings:aEmbeddings ) 
   METHOD End() 
   METHOD GetEmbeddings( cPrompt )    
   METHOD IsOpenAI() INLINE ( "openai" $ Lower( ::cModel ) .or. "text-embedding-" $ ::cModel )
   OPERATOR "-" ARG oEmbeddings INLINE ::DistanceFrom( oEmbeddings )  
   DESTRUCTOR Destroy()    

ENDCLASS        

//----------------------------------------------------------------------------//

METHOD New( cModel, cKey ) CLASS TEmbeddings

   DEFAULT cModel := "sentence-transformers/all-MiniLM-L6-v2"  // Default to Hugging Face
   DEFAULT cKey   := hb_GetEnv( "HF_API_KEY" )               // Try Hugging Face first

   if Empty( cKey )
      cKey := hb_GetEnv( "OPENAI_API_KEY" )  // If no HF_API_KEY, try OPENAI_API_KEY
   endif

   ::cModel = cModel
   ::cKey   = cKey
   ::hCurl  = curl_easy_init()

   // Set the endpoint based on the model
   if ::IsOpenAI()
      ::cUrl = "https://api.openai.com/v1/embeddings"
   else
      ::cUrl = "https://api-inference.huggingface.co/pipeline/feature-extraction/" + ::cModel  // Feature extraction for embeddings
   endif
    
   if Empty( ::cKey )
      MsgAlert( "API key is required! Set it via parameter or HF_API_KEY/OPENAI_API_KEY environment variables." )
   endif

return Self    

//----------------------------------------------------------------------------//

METHOD End() CLASS TEmbeddings

    curl_easy_cleanup( ::hCurl )
    ::hCurl = nil

return nil    

//----------------------------------------------------------------------------//

METHOD GetEmbeddings( cPrompt ) CLASS TEmbeddings 

   local aHeaders, cJson, hRequest := { => }, hResponse, uValue

   if ! Empty( cPrompt )
      ::cPrompt = cPrompt
   endif   

   curl_easy_setopt( ::hCurl, HB_CURLOPT_POST, .T. )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_URL, ::cUrl )

   aHeaders := { ;
      "Content-Type: application/json", ;
      "Authorization: Bearer " + ::cKey ;
   }

   curl_easy_setopt( ::hCurl, HB_CURLOPT_HTTPHEADER, aHeaders )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_USERNAME, '' )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_DL_BUFF_SETUP )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )

   if ::IsOpenAI()
      hRequest[ "model" ] = ::cModel
      hRequest[ "input" ] = ::cPrompt  // OpenAI uses "input" instead of "inputs"
   else
      // Hugging Face: Correct structure for feature-extraction pipeline
      hRequest[ "inputs" ] = ::cPrompt
   endif

   cJson = hb_jsonEncode( hRequest )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_POSTFIELDS, cJson )

   ::nError = curl_easy_perform( ::hCurl )
   curl_easy_getinfo( ::hCurl, HB_CURLINFO_RESPONSE_CODE, @::nHttpCode )

   if ::nError == HB_CURLE_OK
      ::cResponse = curl_easy_dl_buff_get( ::hCurl )
   else
      ::cResponse := "Error code " + Str( ::nError )
   endif

   hb_jsonDecode( ::cResponse, @hResponse )

   if ::IsOpenAI()
      TRY 
         uValue = hResponse[ "data" ][ 1 ][ "embedding" ]  // OpenAI returns embeddings in "data[0].embedding"
         ::aEmbeddings = uValue
      CATCH
         uValue = hResponse[ "error" ][ "message" ]
         ::aEmbeddings = nil
      END   
   else  // Hugging Face
      TRY 
         uValue = hResponse  // HF feature-extraction returns the vector directly as an array
         ::aEmbeddings = uValue
      CATCH
         uValue = hResponse[ "error" ]
         ::aEmbeddings = nil
      END   
   endif   
    
return uValue

//----------------------------------------------------------------------------//

PROCEDURE Destroy() CLASS TEmbeddings

   if ::hCurl != nil
      ::End()
   endif

return    

//----------------------------------------------------------------------------//

METHOD Distance( aVector2, lCosine ) CLASS TEmbeddings

    local nDistance, nSum, nNorm1, nNorm2, nDotProduct, nI

    DEFAULT lCosine := .T.  // Default to cosine distance
 
    if Empty( ::aEmbeddings )
       return -1  // Error: No embeddings stored in ::aEmbeddings
    endif
 
    if Len( ::aEmbeddings ) != Len( aVector2 )
       return -1  // Error: vectors must have the same length
    endif
 
    if lCosine
       // Calculate dot product and norms for cosine similarity
       nDotProduct := 0
       nNorm1 := 0
       nNorm2 := 0
       for nI := 1 to Len( ::aEmbeddings )
          nDotProduct += ::aEmbeddings[nI] * aVector2[nI]
          nNorm1 += ::aEmbeddings[nI] ^ 2
          nNorm2 += aVector2[nI] ^ 2
       next
       nNorm1 := Sqrt( nNorm1 )
       nNorm2 := Sqrt( nNorm2 )
       
       // Avoid division by zero
       if nNorm1 == 0 .OR. nNorm2 == 0
          return 1  // Maximum distance if one vector is zero
       endif
       
       // Cosine similarity and distance
       nDistance := 1 - ( nDotProduct / ( nNorm1 * nNorm2 ) )
    else
       // Euclidean distance
       nSum := 0
       for nI := 1 to Len( ::aEmbeddings )
          nSum += ( ::aEmbeddings[nI] - aVector2[nI] ) ^ 2
       next
       nDistance := Sqrt( nSum )
    endif
 
 return nDistance
 
//----------------------------------------------------------------------------//
Samples:

embeddings1.prg

Code: Select all | Expand

// Please remember to set HF_API_KEY=hf_... or OPENAI_API_KEY=... in your environment

#include "FiveWin.ch"

function Main()

    local oEmbeddings1 := TEmbeddings():New()
    local oEmbeddings2 := TEmbeddings():New()
    local oEmbeddings3 := TEmbeddings():New()
    
    oEmbeddings1:GetEmbeddings( "Me siento muy bien" )
    oEmbeddings2:GetEmbeddings( "¿ Como estás ?" )
    oEmbeddings3:GetEmbeddings( "he visto a Pepe" )

    ? oEmbeddings1 - oEmbeddings2
    ? oEmbeddings1 - oEmbeddings3
    
return nil    
embeddings2.prg

Code: Select all | Expand

// Please remember to set HF_API_KEY=hf_... or OPENAI_API_KEY=... in your environment

#include "FiveWin.ch"

function Main()

    local oEmbeddings := TEmbeddings():New()
    local cJson, cSentence := "Hello how are you ?" 
    
    oEmbeddings:GetEmbeddings( cSentence )
    
    cJson = hb_jsonEncode( oEmbeddings:aEmbeddings )

    if ! File( "embeddings.dbf" )
       DbCreate( "embeddings", { { "id", "+", 4, 0 },;
                                 { "sentence", "M", 10, 0 },;
                                 { "vectors", "M", 10 , 0 } } ) 
    endif
    
    USE embeddings 
    APPEND BLANK
    REPLACE sentence WITH cSentence
    REPLACE vectors WITH cJson
    XBrowse()
    USE
    
return nil    
]]>
:!:

Included in next FWH build! Thanks to my son Lolo for his inspiration and for explaining it to me! <3

This class uses HuggingFace free embeddings API (378 values for each embedding) or OpenAI commercial embeddings API (3.072 values for each embedding). We convert those values to a json string that can be saved into a DBF, TXT, INI, etc.

tembeddings.prg

Code: Select all | Expand

#include "FiveWin.ch"
#include "hbcurl.ch"

//----------------------------------------------------------------------------//

CLASS TEmbeddings
    
   DATA   cModel
   DATA   cPrompt
   DATA   cResponse
   DATA   cUrl
   DATA   cKey
   DATA   hCurl
   DATA   nError     INIT 0
   DATA   nHttpCode  INIT 0
   DATA   aEmbeddings

   METHOD New( cModel, cKey )
   METHOD Distance( aVector2, lCosine )
   METHOD DistanceFrom( oEmbeddings ) INLINE ::Distance( oEmbeddings:aEmbeddings ) 
   METHOD End() 
   METHOD GetEmbeddings( cPrompt )    
   METHOD IsOpenAI() INLINE ( "openai" $ Lower( ::cModel ) .or. "text-embedding-" $ ::cModel )
   OPERATOR "-" ARG oEmbeddings INLINE ::DistanceFrom( oEmbeddings )  
   DESTRUCTOR Destroy()    

ENDCLASS        

//----------------------------------------------------------------------------//

METHOD New( cModel, cKey ) CLASS TEmbeddings

   DEFAULT cModel := "sentence-transformers/all-MiniLM-L6-v2"  // Default to Hugging Face
   DEFAULT cKey   := hb_GetEnv( "HF_API_KEY" )               // Try Hugging Face first

   if Empty( cKey )
      cKey := hb_GetEnv( "OPENAI_API_KEY" )  // If no HF_API_KEY, try OPENAI_API_KEY
   endif

   ::cModel = cModel
   ::cKey   = cKey
   ::hCurl  = curl_easy_init()

   // Set the endpoint based on the model
   if ::IsOpenAI()
      ::cUrl = "https://api.openai.com/v1/embeddings"
   else
      ::cUrl = "https://api-inference.huggingface.co/pipeline/feature-extraction/" + ::cModel  // Feature extraction for embeddings
   endif
    
   if Empty( ::cKey )
      MsgAlert( "API key is required! Set it via parameter or HF_API_KEY/OPENAI_API_KEY environment variables." )
   endif

return Self    

//----------------------------------------------------------------------------//

METHOD End() CLASS TEmbeddings

    curl_easy_cleanup( ::hCurl )
    ::hCurl = nil

return nil    

//----------------------------------------------------------------------------//

METHOD GetEmbeddings( cPrompt ) CLASS TEmbeddings 

   local aHeaders, cJson, hRequest := { => }, hResponse, uValue

   if ! Empty( cPrompt )
      ::cPrompt = cPrompt
   endif   

   curl_easy_setopt( ::hCurl, HB_CURLOPT_POST, .T. )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_URL, ::cUrl )

   aHeaders := { ;
      "Content-Type: application/json", ;
      "Authorization: Bearer " + ::cKey ;
   }

   curl_easy_setopt( ::hCurl, HB_CURLOPT_HTTPHEADER, aHeaders )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_USERNAME, '' )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_DL_BUFF_SETUP )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )

   if ::IsOpenAI()
      hRequest[ "model" ] = ::cModel
      hRequest[ "input" ] = ::cPrompt  // OpenAI uses "input" instead of "inputs"
   else
      // Hugging Face: Correct structure for feature-extraction pipeline
      hRequest[ "inputs" ] = ::cPrompt
   endif

   cJson = hb_jsonEncode( hRequest )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_POSTFIELDS, cJson )

   ::nError = curl_easy_perform( ::hCurl )
   curl_easy_getinfo( ::hCurl, HB_CURLINFO_RESPONSE_CODE, @::nHttpCode )

   if ::nError == HB_CURLE_OK
      ::cResponse = curl_easy_dl_buff_get( ::hCurl )
   else
      ::cResponse := "Error code " + Str( ::nError )
   endif

   hb_jsonDecode( ::cResponse, @hResponse )

   if ::IsOpenAI()
      TRY 
         uValue = hResponse[ "data" ][ 1 ][ "embedding" ]  // OpenAI returns embeddings in "data[0].embedding"
         ::aEmbeddings = uValue
      CATCH
         uValue = hResponse[ "error" ][ "message" ]
         ::aEmbeddings = nil
      END   
   else  // Hugging Face
      TRY 
         uValue = hResponse  // HF feature-extraction returns the vector directly as an array
         ::aEmbeddings = uValue
      CATCH
         uValue = hResponse[ "error" ]
         ::aEmbeddings = nil
      END   
   endif   
    
return uValue

//----------------------------------------------------------------------------//

PROCEDURE Destroy() CLASS TEmbeddings

   if ::hCurl != nil
      ::End()
   endif

return    

//----------------------------------------------------------------------------//

METHOD Distance( aVector2, lCosine ) CLASS TEmbeddings

    local nDistance, nSum, nNorm1, nNorm2, nDotProduct, nI

    DEFAULT lCosine := .T.  // Default to cosine distance
 
    if Empty( ::aEmbeddings )
       return -1  // Error: No embeddings stored in ::aEmbeddings
    endif
 
    if Len( ::aEmbeddings ) != Len( aVector2 )
       return -1  // Error: vectors must have the same length
    endif
 
    if lCosine
       // Calculate dot product and norms for cosine similarity
       nDotProduct := 0
       nNorm1 := 0
       nNorm2 := 0
       for nI := 1 to Len( ::aEmbeddings )
          nDotProduct += ::aEmbeddings[nI] * aVector2[nI]
          nNorm1 += ::aEmbeddings[nI] ^ 2
          nNorm2 += aVector2[nI] ^ 2
       next
       nNorm1 := Sqrt( nNorm1 )
       nNorm2 := Sqrt( nNorm2 )
       
       // Avoid division by zero
       if nNorm1 == 0 .OR. nNorm2 == 0
          return 1  // Maximum distance if one vector is zero
       endif
       
       // Cosine similarity and distance
       nDistance := 1 - ( nDotProduct / ( nNorm1 * nNorm2 ) )
    else
       // Euclidean distance
       nSum := 0
       for nI := 1 to Len( ::aEmbeddings )
          nSum += ( ::aEmbeddings[nI] - aVector2[nI] ) ^ 2
       next
       nDistance := Sqrt( nSum )
    endif
 
 return nDistance
 
//----------------------------------------------------------------------------//
Samples:

embeddings1.prg

Code: Select all | Expand

// Please remember to set HF_API_KEY=hf_... or OPENAI_API_KEY=... in your environment

#include "FiveWin.ch"

function Main()

    local oEmbeddings1 := TEmbeddings():New()
    local oEmbeddings2 := TEmbeddings():New()
    local oEmbeddings3 := TEmbeddings():New()
    
    oEmbeddings1:GetEmbeddings( "Me siento muy bien" )
    oEmbeddings2:GetEmbeddings( "¿ Como estás ?" )
    oEmbeddings3:GetEmbeddings( "he visto a Pepe" )

    ? oEmbeddings1 - oEmbeddings2
    ? oEmbeddings1 - oEmbeddings3
    
return nil    
embeddings2.prg

Code: Select all | Expand

// Please remember to set HF_API_KEY=hf_... or OPENAI_API_KEY=... in your environment

#include "FiveWin.ch"

function Main()

    local oEmbeddings := TEmbeddings():New()
    local cJson, cSentence := "Hello how are you ?" 
    
    oEmbeddings:GetEmbeddings( cSentence )
    
    cJson = hb_jsonEncode( oEmbeddings:aEmbeddings )

    if ! File( "embeddings.dbf" )
       DbCreate( "embeddings", { { "id", "+", 4, 0 },;
                                 { "sentence", "M", 10, 0 },;
                                 { "vectors", "M", 10 , 0 } } ) 
    endif
    
    USE embeddings 
    APPEND BLANK
    REPLACE sentence WITH cSentence
    REPLACE vectors WITH cJson
    XBrowse()
    USE
    
return nil    
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: webview menu :: Author MGA]]> 2025-03-18T11:50:05-06:00 2025-03-18T11:50:05-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45544&p=278433#p278433
How to create a menu in html, like the example below: index.html (I couldn't find it)

https://www.fivetechsupport.com/forums/ ... ew#p267520]]>

How to create a menu in html, like the example below: index.html (I couldn't find it)

https://www.fivetechsupport.com/forums/ ... ew#p267520]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Webview2 + GRAPHIC :: Author MGA]]> 2025-03-18T07:39:24-06:00 2025-03-18T07:39:24-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45540&p=278425#p278425
Thanks]]>

Thanks]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Webview2 + GRAPHIC :: Reply by Antonio Linares]]> 2025-03-18T07:51:01-06:00 2025-03-18T07:51:01-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45540&p=278426#p278426

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oWnd, oWebView 

   DEFINE WINDOW oWnd TITLE "Dashboard"

   oWebView = TWebView2():New( oWnd )

   oWebView:SetHtml( memoRead( "dashboard.html" ) )

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

return nil      
dashboard.html

Code: Select all | Expand

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Professional Dashboard with Charts</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: Arial, sans-serif;
        }

        body {
            background: #f0f2f5;
            color: #333;
            line-height: 1.6;
        }

        .container {
            display: flex;
            min-height: 100vh;
        }

        .sidebar {
            width: 250px;
            background: #2c3e50;
            color: white;
            position: fixed;
            height: 100%;
            padding: 20px;
        }

        .sidebar h2 {
            font-size: 24px;
            margin-bottom: 30px;
            text-align: center;
        }

        .sidebar ul {
            list-style: none;
        }

        .sidebar ul li {
            margin: 20px 0;
        }

        .sidebar ul li a {
            color: white;
            text-decoration: none;
            display: flex;
            align-items: center;
            padding: 10px;
            border-radius: 5px;
            transition: background 0.3s;
        }

        .sidebar ul li a:hover {
            background: #34495e;
        }

        .sidebar ul li a i {
            margin-right: 10px;
            font-size: 18px;
        }

        .main-content {
            flex: 1;
            margin-left: 250px;
            padding: 20px;
        }

        .dashboard-container {
            max-width: 1400px;
            margin: 0 auto;
        }

        .header {
            background: #2c3e50;
            color: white;
            padding: 20px;
            border-radius: 10px;
            margin-bottom: 20px;
        }

        .header h1 {
            font-size: 24px;
        }

        .grid-container {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
        }

        .card {
            background: white;
            border-radius: 10px;
            padding: 20px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
            transition: transform 0.3s;
        }

        .card:hover {
            transform: translateY(-5px);
        }

        .card h3 {
            margin-bottom: 15px;
            color: #2c3e50;
        }

        .stats-card {
            display: flex;
            align-items: center;
            gap: 15px;
        }

        .stats-icon {
            width: 50px;
            height: 50px;
            background: #3498db;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 24px;
        }

        .chart-container {
            height: 200px;
            position: relative;
        }

        .progress-bar {
            width: 100%;
            height: 20px;
            background: #eee;
            border-radius: 10px;
            overflow: hidden;
            margin-top: 10px;
        }

        .progress {
            height: 100%;
            background: #2ecc71;
            width: 0;
        }

        .progress-75 { width: 75%; }
        .progress-50 { width: 50%; }
        .progress-25 { width: 25%; }

        @media (max-width: 768px) {
            .sidebar {
                width: 200px;
            }

            .main-content {
                margin-left: 200px;
            }

            .grid-container {
                grid-template-columns: 1fr;
            }
        }

        @media (max-width: 480px) {
            .sidebar {
                width: 70px;
            }

            .sidebar h2,
            .sidebar ul li a span {
                display: none;
            }

            .main-content {
                margin-left: 70px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="sidebar">
            <h2>Menu</h2>
            <ul>
                <li><a href="#"><i>🏠</i><span>Dashboard</span></a></li>
                <li><a href="#"><i>📊</i><span>Analytics</span></a></li>
                <li><a href="#"><i>👥</i><span>Users</span></a></li>
                <li><a href="#"><i>⚙️</i><span>Settings</span></a></li>
                <li><a href="#"><i>🚪</i><span>Logout</span></a></li>
            </ul>
        </div>

        <div class="main-content">
            <div class="dashboard-container">
                <div class="header">
                    <h1>Dashboard Overview</h1>
                </div>

                <div class="grid-container">
                    <div class="card stats-card">
                        <div class="stats-icon">📊</div>
                        <div>
                            <h3>Revenue</h3>
                            <p>$24,500</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">👥</div>
                        <div>
                            <h3>Users</h3>
                            <p>1,234</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">⭐</div>
                        <div>
                            <h3>Rating</h3>
                            <p>4.8/5</p>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Sales Trend (Monthly)</h3>
                        <div class="chart-container">
                            <canvas id="salesChart"></canvas>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Project Progress</h3>
                        <p>Development</p>
                        <div class="progress-bar"><div class="progress progress-75"></div></div>
                        <p>Design</p>
                        <div class="progress-bar"><div class="progress progress-50"></div></div>
                        <p>Testing</p>
                        <div class="progress-bar"><div class="progress progress-25"></div></div>
                    </div>

                    <div class="card">
                        <h3>User Distribution</h3>
                        <div class="chart-container">
                            <canvas id="userChart"></canvas>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script>
        // Sales Trend Line Chart
        const salesCtx = document.getElementById('salesChart').getContext('2d');
        new Chart(salesCtx, {
            type: 'line',
            data: {
                labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
                datasets: [{
                    label: 'Sales ($)',
                    data: [12000, 19000, 15000, 25000, 22000, 30000],
                    borderColor: '#3498db',
                    backgroundColor: 'rgba(52, 152, 219, 0.2)',
                    fill: true,
                    tension: 0.4
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });

        // User Distribution Bar Chart
        const userCtx = document.getElementById('userChart').getContext('2d');
        new Chart(userCtx, {
            type: 'bar',
            data: {
                labels: ['New', 'Returning', 'Inactive'],
                datasets: [{
                    label: 'Users',
                    data: [500, 600, 134],
                    backgroundColor: [
                        '#2ecc71',
                        '#3498db',
                        '#e74c3c'
                    ]
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });
    </script>
</body>
</html>
]]>

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oWnd, oWebView 

   DEFINE WINDOW oWnd TITLE "Dashboard"

   oWebView = TWebView2():New( oWnd )

   oWebView:SetHtml( memoRead( "dashboard.html" ) )

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

return nil      
dashboard.html

Code: Select all | Expand

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Professional Dashboard with Charts</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: Arial, sans-serif;
        }

        body {
            background: #f0f2f5;
            color: #333;
            line-height: 1.6;
        }

        .container {
            display: flex;
            min-height: 100vh;
        }

        .sidebar {
            width: 250px;
            background: #2c3e50;
            color: white;
            position: fixed;
            height: 100%;
            padding: 20px;
        }

        .sidebar h2 {
            font-size: 24px;
            margin-bottom: 30px;
            text-align: center;
        }

        .sidebar ul {
            list-style: none;
        }

        .sidebar ul li {
            margin: 20px 0;
        }

        .sidebar ul li a {
            color: white;
            text-decoration: none;
            display: flex;
            align-items: center;
            padding: 10px;
            border-radius: 5px;
            transition: background 0.3s;
        }

        .sidebar ul li a:hover {
            background: #34495e;
        }

        .sidebar ul li a i {
            margin-right: 10px;
            font-size: 18px;
        }

        .main-content {
            flex: 1;
            margin-left: 250px;
            padding: 20px;
        }

        .dashboard-container {
            max-width: 1400px;
            margin: 0 auto;
        }

        .header {
            background: #2c3e50;
            color: white;
            padding: 20px;
            border-radius: 10px;
            margin-bottom: 20px;
        }

        .header h1 {
            font-size: 24px;
        }

        .grid-container {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
        }

        .card {
            background: white;
            border-radius: 10px;
            padding: 20px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
            transition: transform 0.3s;
        }

        .card:hover {
            transform: translateY(-5px);
        }

        .card h3 {
            margin-bottom: 15px;
            color: #2c3e50;
        }

        .stats-card {
            display: flex;
            align-items: center;
            gap: 15px;
        }

        .stats-icon {
            width: 50px;
            height: 50px;
            background: #3498db;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 24px;
        }

        .chart-container {
            height: 200px;
            position: relative;
        }

        .progress-bar {
            width: 100%;
            height: 20px;
            background: #eee;
            border-radius: 10px;
            overflow: hidden;
            margin-top: 10px;
        }

        .progress {
            height: 100%;
            background: #2ecc71;
            width: 0;
        }

        .progress-75 { width: 75%; }
        .progress-50 { width: 50%; }
        .progress-25 { width: 25%; }

        @media (max-width: 768px) {
            .sidebar {
                width: 200px;
            }

            .main-content {
                margin-left: 200px;
            }

            .grid-container {
                grid-template-columns: 1fr;
            }
        }

        @media (max-width: 480px) {
            .sidebar {
                width: 70px;
            }

            .sidebar h2,
            .sidebar ul li a span {
                display: none;
            }

            .main-content {
                margin-left: 70px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="sidebar">
            <h2>Menu</h2>
            <ul>
                <li><a href="#"><i>🏠</i><span>Dashboard</span></a></li>
                <li><a href="#"><i>📊</i><span>Analytics</span></a></li>
                <li><a href="#"><i>👥</i><span>Users</span></a></li>
                <li><a href="#"><i>⚙️</i><span>Settings</span></a></li>
                <li><a href="#"><i>🚪</i><span>Logout</span></a></li>
            </ul>
        </div>

        <div class="main-content">
            <div class="dashboard-container">
                <div class="header">
                    <h1>Dashboard Overview</h1>
                </div>

                <div class="grid-container">
                    <div class="card stats-card">
                        <div class="stats-icon">📊</div>
                        <div>
                            <h3>Revenue</h3>
                            <p>$24,500</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">👥</div>
                        <div>
                            <h3>Users</h3>
                            <p>1,234</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">⭐</div>
                        <div>
                            <h3>Rating</h3>
                            <p>4.8/5</p>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Sales Trend (Monthly)</h3>
                        <div class="chart-container">
                            <canvas id="salesChart"></canvas>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Project Progress</h3>
                        <p>Development</p>
                        <div class="progress-bar"><div class="progress progress-75"></div></div>
                        <p>Design</p>
                        <div class="progress-bar"><div class="progress progress-50"></div></div>
                        <p>Testing</p>
                        <div class="progress-bar"><div class="progress progress-25"></div></div>
                    </div>

                    <div class="card">
                        <h3>User Distribution</h3>
                        <div class="chart-container">
                            <canvas id="userChart"></canvas>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script>
        // Sales Trend Line Chart
        const salesCtx = document.getElementById('salesChart').getContext('2d');
        new Chart(salesCtx, {
            type: 'line',
            data: {
                labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
                datasets: [{
                    label: 'Sales ($)',
                    data: [12000, 19000, 15000, 25000, 22000, 30000],
                    borderColor: '#3498db',
                    backgroundColor: 'rgba(52, 152, 219, 0.2)',
                    fill: true,
                    tension: 0.4
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });

        // User Distribution Bar Chart
        const userCtx = document.getElementById('userChart').getContext('2d');
        new Chart(userCtx, {
            type: 'bar',
            data: {
                labels: ['New', 'Returning', 'Inactive'],
                datasets: [{
                    label: 'Users',
                    data: [500, 600, 134],
                    backgroundColor: [
                        '#2ecc71',
                        '#3498db',
                        '#e74c3c'
                    ]
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });
    </script>
</body>
</html>
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Webview2 + GRAPHIC :: Reply by MGA]]> 2025-03-18T08:23:01-06:00 2025-03-18T08:23:01-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45540&p=278429#p278429 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Webview2 + GRAPHIC :: Reply by Antonio Linares]]> 2025-03-18T14:53:08-06:00 2025-03-18T14:53:08-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45540&p=278438#p278438 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Webview2 + GRAPHIC :: Reply by MGA]]> 2025-03-19T05:15:15-06:00 2025-03-19T05:15:15-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45540&p=278450#p278450 <![CDATA[FiveWin for Harbour/xHarbour :: webview google graph subtitle :: Author MGA]]> 2025-03-18T14:54:04-06:00 2025-03-18T14:54:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45546&p=278439#p278439 When I set title: 'test', the subtitle will have the same value. I would like to be able to configure both.

Image

//part of a function taken from the forum:
cFuncion := cFuncion + " ]);"+;
"var options = { "+;
" title: '"+cTitulo+"',"+;
" hAxis: {title: '" + Alltrim(cHorTitle) + "'},"+;
" vAxis: {prefix:'R$', format: 'R$ #,##0.00', title: '" + Alltrim(cVerTitle) + "'},"+;
" widht: '100%',"+;
" height: 300, "+;
" isStacked: true, "+;
" is3D: " + IIf(lIs3D,"true ","false ")+;
"};"+;
"var chart = new google.visualization."+cTipo+"(document.getElementById('"+cNombre+"'));"+;
"chart.draw(data, options);"+;
"var formatter = new google.visualization.NumberFormat({ prefix: 'R$ ', decimalSymbol: ',', groupingSymbol: '.' }); formatter.format(data, 0); formatter.format(data, 1);"+;
"}"+;]]>
When I set title: 'test', the subtitle will have the same value. I would like to be able to configure both.

Image

//part of a function taken from the forum:
cFuncion := cFuncion + " ]);"+;
"var options = { "+;
" title: '"+cTitulo+"',"+;
" hAxis: {title: '" + Alltrim(cHorTitle) + "'},"+;
" vAxis: {prefix:'R$', format: 'R$ #,##0.00', title: '" + Alltrim(cVerTitle) + "'},"+;
" widht: '100%',"+;
" height: 300, "+;
" isStacked: true, "+;
" is3D: " + IIf(lIs3D,"true ","false ")+;
"};"+;
"var chart = new google.visualization."+cTipo+"(document.getElementById('"+cNombre+"'));"+;
"chart.draw(data, options);"+;
"var formatter = new google.visualization.NumberFormat({ prefix: 'R$ ', decimalSymbol: ',', groupingSymbol: '.' }); formatter.format(data, 0); formatter.format(data, 1);"+;
"}"+;]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview google graph subtitle :: Reply by Antonio Linares]]> 2025-03-18T22:09:03-06:00 2025-03-18T22:09:03-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45546&p=278443#p278443 <![CDATA[FiveWin for Harbour/xHarbour :: Re: webview google graph subtitle :: Reply by cmsoft]]> 2025-03-19T04:29:49-06:00 2025-03-19T04:29:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45546&p=278447#p278447 https://www.fivetechsupport.com/forums/ ... 75#p273775]]> https://www.fivetechsupport.com/forums/ ... 75#p273775]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: webview google graph subtitle :: Reply by MGA]]> 2025-03-19T05:14:33-06:00 2025-03-19T05:14:33-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45546&p=278449#p278449
I am basing myself on your code, it is being very useful. Thank you very much.
Cesar, the title provided below is the same as the subtitle, I would like to have a new parameter: cSubTitle

METHOD AddGraph (cNombre, cTitulo, cTipo, aColumnsData, aData, cColor )


METHOD AddGraph (cNombre, cTitulo, cTipo, aColumnsData, aData, cColor )
Local cGraph, cFuncion, cId, i
cGraph := cNombre+'();//AgregarChar'
::cHtml := strtran(::cHtml,"//AgregarChar",cGraph)
cFuncion := "function "+cNombre+"() { "+;
"var data = google.visualization.arrayToDataTable(["+;
" ['"+aColumnsData[1]+"', '"+aColumnsData[2]+"'], "
for i := 1 to len(aData)
cFuncion := cFuncion + "['"+aData[i,1]+"', "+STR(aData[i,2])+"],"
next i
cFuncion := cFuncion + " ]);"+;
"var options = { "+;
" title: '"+cTitulo+"',"+;
" widht: '100%',"+;
" height: 300, "+;
" is3D: true "+;
"};"+;
"var chart = new google.visualization."+cTipo+"(document.getElementById('"+cNombre+"'));"+;
"chart.draw(data, options);"+;
"}"+;
"//FuncionGrafico"
::cHtml := strtran(::cHtml,"//FuncionGrafico",cFuncion)
cId := '<div class="bg-white shadow-md p-6 rounded-lg">'+;
'<h2 class="text-xl font-bold mb-4 text-'+cColor+'-500">'+cTitulo+'</h2>'+;
'<div id="'+cNombre+'"></div>'+;
'</div>'+;
'<!-- idgrafico -->'
::cHtml := strtran(::cHtml,"<!-- idgrafico -->",cId)
return Self]]>

I am basing myself on your code, it is being very useful. Thank you very much.
Cesar, the title provided below is the same as the subtitle, I would like to have a new parameter: cSubTitle

METHOD AddGraph (cNombre, cTitulo, cTipo, aColumnsData, aData, cColor )


METHOD AddGraph (cNombre, cTitulo, cTipo, aColumnsData, aData, cColor )
Local cGraph, cFuncion, cId, i
cGraph := cNombre+'();//AgregarChar'
::cHtml := strtran(::cHtml,"//AgregarChar",cGraph)
cFuncion := "function "+cNombre+"() { "+;
"var data = google.visualization.arrayToDataTable(["+;
" ['"+aColumnsData[1]+"', '"+aColumnsData[2]+"'], "
for i := 1 to len(aData)
cFuncion := cFuncion + "['"+aData[i,1]+"', "+STR(aData[i,2])+"],"
next i
cFuncion := cFuncion + " ]);"+;
"var options = { "+;
" title: '"+cTitulo+"',"+;
" widht: '100%',"+;
" height: 300, "+;
" is3D: true "+;
"};"+;
"var chart = new google.visualization."+cTipo+"(document.getElementById('"+cNombre+"'));"+;
"chart.draw(data, options);"+;
"}"+;
"//FuncionGrafico"
::cHtml := strtran(::cHtml,"//FuncionGrafico",cFuncion)
cId := '<div class="bg-white shadow-md p-6 rounded-lg">'+;
'<h2 class="text-xl font-bold mb-4 text-'+cColor+'-500">'+cTitulo+'</h2>'+;
'<div id="'+cNombre+'"></div>'+;
'</div>'+;
'<!-- idgrafico -->'
::cHtml := strtran(::cHtml,"<!-- idgrafico -->",cId)
return Self]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview google graph subtitle :: Reply by cmsoft]]> 2025-03-19T09:59:43-06:00 2025-03-19T09:59:43-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45546&p=278459#p278459

Code: Select all | Expand

METHOD AddGraph (cNombre, cTitulo, cTipo, aColumnsData, aData, cColor)


METHOD AddGraph (cNombre, cTitulo, cTipo, aColumnsData, aData, cColor,cSubTitulo) // Cambiar aca
Local cGraph, cFuncion, cId, i
cGraph := cNombre+'();//AgregarChar'
::cHtml := strtran(::cHtml,"//AgregarChar",cGraph)
cFuncion := "function "+cNombre+"() { "+;
"var data = google.visualization.arrayToDataTable(["+;
" ['"+aColumnsData[1]+"', '"+aColumnsData[2]+"'], "
for i := 1 to len(aData)
cFuncion := cFuncion + "['"+aData[i,1]+"', "+STR(aData[i,2])+"],"
next i
cFuncion := cFuncion + " ]);"+;
"var options = { "+;
" title: '"+cSubTitulo+"',"+; //Cambiar Aca
" widht: '100%',"+;
" height: 300, "+;
" is3D: true "+;
"};"+;
"var chart = new google.visualization."+cTipo+"(document.getElementById('"+cNombre+"'));"+;
"chart.draw(datos, opciones);"+;
"}"+;
"//FuncionGrafico"
::cHtml := strtran(::cHtml,"//FuncionGrafico",cFuncion)
cId := '<div class="bg-white shadow-md p-6 rounded-lg">'+;
'<h2 class="text-xl font-bold mb-4 text-'+cColor+'-500">'+cTitulo+'</h2>'+;
'<div id="'+cNombre+'"></div>'+;
'</div>'+;
'<!-- idgrafico -->'
::cHtml := strtran(::cHtml,"<!-- idgrafico -->",cId)
return Self
]]>

Code: Select all | Expand

METHOD AddGraph (cNombre, cTitulo, cTipo, aColumnsData, aData, cColor)


METHOD AddGraph (cNombre, cTitulo, cTipo, aColumnsData, aData, cColor,cSubTitulo) // Cambiar aca
Local cGraph, cFuncion, cId, i
cGraph := cNombre+'();//AgregarChar'
::cHtml := strtran(::cHtml,"//AgregarChar",cGraph)
cFuncion := "function "+cNombre+"() { "+;
"var data = google.visualization.arrayToDataTable(["+;
" ['"+aColumnsData[1]+"', '"+aColumnsData[2]+"'], "
for i := 1 to len(aData)
cFuncion := cFuncion + "['"+aData[i,1]+"', "+STR(aData[i,2])+"],"
next i
cFuncion := cFuncion + " ]);"+;
"var options = { "+;
" title: '"+cSubTitulo+"',"+; //Cambiar Aca
" widht: '100%',"+;
" height: 300, "+;
" is3D: true "+;
"};"+;
"var chart = new google.visualization."+cTipo+"(document.getElementById('"+cNombre+"'));"+;
"chart.draw(datos, opciones);"+;
"}"+;
"//FuncionGrafico"
::cHtml := strtran(::cHtml,"//FuncionGrafico",cFuncion)
cId := '<div class="bg-white shadow-md p-6 rounded-lg">'+;
'<h2 class="text-xl font-bold mb-4 text-'+cColor+'-500">'+cTitulo+'</h2>'+;
'<div id="'+cNombre+'"></div>'+;
'</div>'+;
'<!-- idgrafico -->'
::cHtml := strtran(::cHtml,"<!-- idgrafico -->",cId)
return Self
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview google graph subtitle :: Reply by MGA]]> 2025-03-19T12:18:28-06:00 2025-03-19T12:18:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45546&p=278461#p278461 ]]> ]]> <![CDATA[FiveWin for Harbour/xHarbour :: Debug :: Author vinpug]]> 2025-03-20T01:03:47-06:00 2025-03-20T01:03:47-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45552&p=278471#p278471 Grazie per l'aiuto]]> Grazie per l'aiuto]]> <![CDATA[FiveWin for Harbour/xHarbour :: insert a line on a Group :: Author Silvio.Falconi]]> 2025-03-20T03:10:52-06:00 2025-03-20T03:10:52-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45553&p=278474#p278474

I want to insert a black line between the group header and the first record of the group,

The vertical position (oRep:nRow) is not updated correctly.

even if I do it this way

Code: Select all | Expand

oRep:bPostGroup := { || oRep:Line(oRep:nRow + 5, 0, oRep:nRow + 5, oRep:nWidth, 1, CLR_BLACK) }
nothing happens]]>


I want to insert a black line between the group header and the first record of the group,

The vertical position (oRep:nRow) is not updated correctly.

even if I do it this way

Code: Select all | Expand

oRep:bPostGroup := { || oRep:Line(oRep:nRow + 5, 0, oRep:nRow + 5, oRep:nWidth, 1, CLR_BLACK) }
nothing happens]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: insert a line on a Group :: Reply by Silvio.Falconi]]> 2025-03-20T03:43:18-06:00 2025-03-20T03:43:18-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45553&p=278476#p278476
Image

Code: Select all | Expand

 oRep:bStartGroup := { |oGroup| oRep:Say(oRep:nMargin, Replicate("-", oRep:nWidth / 10), 1, RPT_LEFT, oRep:nRow + 5, , , CLR_BLACK),;
                                     oRep:nRow := oRep:nRow + 10 }
]]>

Image

Code: Select all | Expand

 oRep:bStartGroup := { |oGroup| oRep:Say(oRep:nMargin, Replicate("-", oRep:nWidth / 10), 1, RPT_LEFT, oRep:nRow + 5, , , CLR_BLACK),;
                                     oRep:nRow := oRep:nRow + 10 }
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Unresolved externals with FWH 25.01 and xHarbour Prof. :: Author driessen]]> 2025-03-18T08:39:41-06:00 2025-03-18T08:39:41-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45542&p=278430#p278430
When building my application with xHarbour Professional, I get this message:

xLINK: warning: Multiple '.CRT$XIC' sections found with different attributes (0x40000040 and 0xc0000040).
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHCM.lib(winexec.obj)->_HB_FUN_SLEEP previously defined at (FGEGTL1.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHCM.lib(mem.obj)->_HB_FUN_NEXTMEM previously defined at (JUDA.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(filename.obj)->_HB_FUN_MOVEFILE previously defined at (FGEGTL2.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(getsysin.obj)->_HB_FUN_GETSYSFONT previously defined at (FGEGTL1.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(harbour.obj)->_HB_FUN_OLEINVOKE previously defined at (MAKEIND.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(harbour.obj)->_HB_FUN_OLESETPROPERTY previously defined at (MAKEIND.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(harbour.obj)->_HB_FUN_OLEGETPROPERTY previously defined at (MAKEIND.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(brush.obj)->_HB_FUN_GRADIENTBRUSH previously defined at (FGEGTL2.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\xHarbour\lib\xHB.lib(xhbrtl.obj)->__dosmaperr previously defined at C:\SOFTWARE\FwHarb-lib\libcmt.lib(dosmap.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\xHarbour\c_lib\crt.lib(exit.obj)->_exit previously defined at C:\SOFTWARE\FwHarb-lib\libcmt.lib(crt0dat.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\xHarbour\c_lib\crt.lib(localeconv.obj)->_localeconv previously defined at C:\SOFTWARE\FwHarb-lib\libcmt.lib(lconv.obj)' is multiply defined.
Creating object: C:\SOFTWARE\JUDA\JUDA_2_D.EXP
Creating library: C:\SOFTWARE\JUDA\JUDA_2_D.LIB
xLINK: error: Unresolved external symbol '_SetWindowLongPtr referenced from FiveHCM.lib(ffdlgprc.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_RATIO referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_HOLLOWTEXT referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FILLRECT referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FONTSTYLE referenced from FiveHMX.lib(font.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWARROW referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCAPTURERECTWND referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DELETEIMAGE referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPMESURETXT referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSBMPEMPTY referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICSIMG referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXT referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEGRAPHICS referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWTEXT referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_SAYIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_RINGGRAD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_CLONEIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_GETHBITMAP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FROMHBITMAP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FROMRESOURCE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEFROMFILE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEFROMSTR referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEINFO referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_ZOOM referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_NEWALPHABMP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_SAVEIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGTOIMG24 referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGECREATETHUMB referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMG2BLOB referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_CROP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_ROTATE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWSHAPES referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_GRAD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_PIE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGETOCLIPBOARD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DELETEBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_COLORBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWIMAGE referenced from FiveHMX.lib(ximage.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSHBITMAPTOCLIPBOARD referenced from FiveHMX.lib(ximage.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSHIGHQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNORMALQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWLINE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWRECT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWELLIPSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWARC referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSFILLPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCLEARCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSETSMOOTHINGGRAPHICS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHTRASLATETRANSFORM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHROTATETRANSFORM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHSCALE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_SETPAGEUNIT2PIXEL referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICSWND referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHICSFROMIMG referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXTFONT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXTLF referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSISINREGION referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEREGIONFROMGPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEPEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSETCLR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSALIGN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSETLINEJOIN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNOALIGN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSIZE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWPEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSTYLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWSOLIDBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRADIENTBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSANGLEGRADIENTBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSTARTUP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSHUTDOWN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDARC referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDELLIPSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDLINE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDRECTANGLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHCLOSEFIGURE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHSTARTFIGURE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSROTATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSROTATECENTERPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSCALEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSTRANSLATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDSTRING referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEIMAGEFROMRES referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEMATRIXTOGRAY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETALPHA referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETBLUE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEGETPIXCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPIXISCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEHBITMAPIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETGREEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGETHEIGHTBITMAP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETRED referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGETWIDTHBITMAP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEIS32BITS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEROTATEANGLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADPNGFROMSTR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEROTATEFLIP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESET32BITS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESETPIXCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXTOGRAYCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEMATRIXCUSTOM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESETPIXHCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPIXELCOLORTOALPHA referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESCALE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADPNGFROMRESOURCES referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADCACHEDFILE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESAVEQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESAVE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEDISPOSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGERESIZE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSEMFTOJPG referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGECROP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSEMFTOBMP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSLOADDIRECTIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGGETFRAMECOUNT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGGETFRAME referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: fatal error: 123 unresolved external(s).

Any idea what is wrong?

Using Harbour is doing fine. I need xHarbour Professional for debugging reasongs.

Thanks a lot in advance.]]>

When building my application with xHarbour Professional, I get this message:

xLINK: warning: Multiple '.CRT$XIC' sections found with different attributes (0x40000040 and 0xc0000040).
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHCM.lib(winexec.obj)->_HB_FUN_SLEEP previously defined at (FGEGTL1.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHCM.lib(mem.obj)->_HB_FUN_NEXTMEM previously defined at (JUDA.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(filename.obj)->_HB_FUN_MOVEFILE previously defined at (FGEGTL2.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(getsysin.obj)->_HB_FUN_GETSYSFONT previously defined at (FGEGTL1.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(harbour.obj)->_HB_FUN_OLEINVOKE previously defined at (MAKEIND.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(harbour.obj)->_HB_FUN_OLESETPROPERTY previously defined at (MAKEIND.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(harbour.obj)->_HB_FUN_OLEGETPROPERTY previously defined at (MAKEIND.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\FwHarb\lib\FiveHMX.lib(brush.obj)->_HB_FUN_GRADIENTBRUSH previously defined at (FGEGTL2.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\xHarbour\lib\xHB.lib(xhbrtl.obj)->__dosmaperr previously defined at C:\SOFTWARE\FwHarb-lib\libcmt.lib(dosmap.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\xHarbour\c_lib\crt.lib(exit.obj)->_exit previously defined at C:\SOFTWARE\FwHarb-lib\libcmt.lib(crt0dat.obj)' is multiply defined.
xLINK: warning: Symbol 'C:\SOFTWARE\xHarbour\c_lib\crt.lib(localeconv.obj)->_localeconv previously defined at C:\SOFTWARE\FwHarb-lib\libcmt.lib(lconv.obj)' is multiply defined.
Creating object: C:\SOFTWARE\JUDA\JUDA_2_D.EXP
Creating library: C:\SOFTWARE\JUDA\JUDA_2_D.LIB
xLINK: error: Unresolved external symbol '_SetWindowLongPtr referenced from FiveHCM.lib(ffdlgprc.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_RATIO referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_HOLLOWTEXT referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FILLRECT referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FONTSTYLE referenced from FiveHMX.lib(font.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWARROW referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCAPTURERECTWND referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DELETEIMAGE referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPMESURETXT referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSBMPEMPTY referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICSIMG referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXT referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEGRAPHICS referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWTEXT referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_SAYIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_RINGGRAD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_CLONEIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_GETHBITMAP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FROMHBITMAP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FROMRESOURCE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEFROMFILE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEFROMSTR referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEINFO referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_ZOOM referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_NEWALPHABMP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_SAVEIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGTOIMG24 referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGECREATETHUMB referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMG2BLOB referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_CROP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_ROTATE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWSHAPES referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_GRAD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_PIE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGETOCLIPBOARD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DELETEBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_COLORBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWIMAGE referenced from FiveHMX.lib(ximage.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSHBITMAPTOCLIPBOARD referenced from FiveHMX.lib(ximage.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSHIGHQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNORMALQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWLINE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWRECT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWELLIPSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWARC referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSFILLPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCLEARCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSETSMOOTHINGGRAPHICS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHTRASLATETRANSFORM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHROTATETRANSFORM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHSCALE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_SETPAGEUNIT2PIXEL referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICSWND referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHICSFROMIMG referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXTFONT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXTLF referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSISINREGION referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEREGIONFROMGPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEPEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSETCLR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSALIGN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSETLINEJOIN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNOALIGN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSIZE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWPEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSTYLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWSOLIDBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRADIENTBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSANGLEGRADIENTBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSTARTUP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSHUTDOWN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDARC referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDELLIPSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDLINE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDRECTANGLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHCLOSEFIGURE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHSTARTFIGURE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSROTATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSROTATECENTERPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSCALEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSTRANSLATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDSTRING referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEIMAGEFROMRES referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEMATRIXTOGRAY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETALPHA referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETBLUE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEGETPIXCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPIXISCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEHBITMAPIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETGREEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGETHEIGHTBITMAP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETRED referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGETWIDTHBITMAP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEIS32BITS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEROTATEANGLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADPNGFROMSTR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEROTATEFLIP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESET32BITS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESETPIXCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXTOGRAYCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEMATRIXCUSTOM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESETPIXHCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPIXELCOLORTOALPHA referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESCALE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADPNGFROMRESOURCES referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADCACHEDFILE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESAVEQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESAVE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEDISPOSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGERESIZE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSEMFTOJPG referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGECROP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSEMFTOBMP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSLOADDIRECTIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGGETFRAMECOUNT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGGETFRAME referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: fatal error: 123 unresolved external(s).

Any idea what is wrong?

Using Harbour is doing fine. I need xHarbour Professional for debugging reasongs.

Thanks a lot in advance.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Unresolved externals with FWH 25.01 and xHarbour Prof. :: Reply by Antonio Linares]]> 2025-03-19T23:22:47-06:00 2025-03-19T23:22:47-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45542&p=278470#p278470
We had to disable GDI+ support for VC98 (the version that we use of Visual C that is PellesC compatible) as there were many errors

If you need it, we will do our best to find a solution for you.

In the meantime, in case that you don't need GDI+ you can add dummy functions for those symbols.]]>

We had to disable GDI+ support for VC98 (the version that we use of Visual C that is PellesC compatible) as there were many errors

If you need it, we will do our best to find a solution for you.

In the meantime, in case that you don't need GDI+ you can add dummy functions for those symbols.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Unresolved externals with FWH 25.01 and xHarbour Prof. :: Reply by driessen]]> 2025-03-20T02:01:00-06:00 2025-03-20T02:01:00-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45542&p=278472#p278472 Thanks for you answer.
So, I need to make 123 dummies?
That is a lot.
But I try do to it.]]>
Thanks for you answer.
So, I need to make 123 dummies?
That is a lot.
But I try do to it.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Unresolved externals with FWH 25.01 and xHarbour Prof. :: Reply by driessen]]> 2025-03-20T02:17:22-06:00 2025-03-20T02:17:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45542&p=278473#p278473 I succeeded in making dummies for all the GDI-functions, except one

xLINK: error: Unresolved external symbol '_SetWindowLongPtr referenced from FiveHCM.lib(ffdlgprc.obj)'.

How do I make a dummy for this?

Thanks.]]>
I succeeded in making dummies for all the GDI-functions, except one

xLINK: error: Unresolved external symbol '_SetWindowLongPtr referenced from FiveHCM.lib(ffdlgprc.obj)'.

How do I make a dummy for this?

Thanks.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Unresolved externals with FWH 25.01 and xHarbour Prof. :: Reply by Antonio Linares]]> 2025-03-20T03:26:30-06:00 2025-03-20T03:26:30-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45542&p=278475#p278475
https://github.com/FiveTechSoft/FWH_too ... er/xfw.lib]]>

https://github.com/FiveTechSoft/FWH_too ... er/xfw.lib]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Unresolved externals with FWH 25.01 and xHarbour Prof. :: Reply by driessen]]> 2025-03-20T05:12:05-06:00 2025-03-20T05:12:05-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45542&p=278479#p278479
Thanks a lot.

For the time being, the problems are solved.]]>

Thanks a lot.

For the time being, the problems are solved.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: -xbrowse not run correcly on a touchscreen :: Author Silvio.Falconi]]> 2025-03-17T14:56:55-06:00 2025-03-17T14:56:55-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45538&p=278416#p278416

Code: Select all | Expand

WITH OBJECT oBrw
      :bChange := {|| RefreshCont(aBtnBrow[4], oBrw)}
      :lHScroll := .F.
      :CreateFromCode()
   END
if I use the vertical scroll the counter works (it scrolls through the records)

If I use my finger because I'm using a touchscreen I can scroll through the records but the counter doesn't change

see this video Please

Image

how is this possible ?
do i have to use another command ?]]>

Code: Select all | Expand

WITH OBJECT oBrw
      :bChange := {|| RefreshCont(aBtnBrow[4], oBrw)}
      :lHScroll := .F.
      :CreateFromCode()
   END
if I use the vertical scroll the counter works (it scrolls through the records)

If I use my finger because I'm using a touchscreen I can scroll through the records but the counter doesn't change

see this video Please

Image

how is this possible ?
do i have to use another command ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: -xbrowse not run correcly on a touchscreen :: Reply by MGA]]> 2025-03-18T06:38:46-06:00 2025-03-18T06:38:46-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45538&p=278424#p278424 oBrw:lHoverSelect := .t.]]> oBrw:lHoverSelect := .t.]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: -xbrowse not run correcly on a touchscreen :: Reply by Silvio.Falconi]]> 2025-03-19T13:53:51-06:00 2025-03-19T13:53:51-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45538&p=278462#p278462
MGA wrote: Tue Mar 18, 2025 12:38 pm Hello Silvio, try
oBrw:lHoverSelect := .t.
Sorry not run ok here I use a lenovo Ideapad Miix 320 10 inch]]>
MGA wrote: Tue Mar 18, 2025 12:38 pm Hello Silvio, try
oBrw:lHoverSelect := .t.
Sorry not run ok here I use a lenovo Ideapad Miix 320 10 inch]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: -xbrowse not run correcly on a touchscreen :: Reply by Jimmy]]> 2025-03-20T04:28:46-06:00 2025-03-20T04:28:46-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45538&p=278477#p278477
Silvio.Falconi wrote: Wed Mar 19, 2025 7:53 pm Sorry not run ok here I use a lenovo Ideapad Miix 320 10 inch
did you run the App under Windows 10 ?

have you try Mouse Option : Image]]>
Silvio.Falconi wrote: Wed Mar 19, 2025 7:53 pm Sorry not run ok here I use a lenovo Ideapad Miix 320 10 inch
did you run the App under Windows 10 ?

have you try Mouse Option : Image]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: -xbrowse not run correcly on a touchscreen :: Reply by Silvio.Falconi]]> 2025-03-20T06:04:02-06:00 2025-03-20T06:04:02-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45538&p=278481#p278481
Jimmy wrote: Thu Mar 20, 2025 10:28 am hi Silvio,
Silvio.Falconi wrote: Wed Mar 19, 2025 7:53 pm Sorry not run ok here I use a lenovo Ideapad Miix 320 10 inch
did you run the App under Windows 10 ?

have you try Mouse Option : Image
Image]]>
Jimmy wrote: Thu Mar 20, 2025 10:28 am hi Silvio,
Silvio.Falconi wrote: Wed Mar 19, 2025 7:53 pm Sorry not run ok here I use a lenovo Ideapad Miix 320 10 inch
did you run the App under Windows 10 ?

have you try Mouse Option : Image
Image]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Place click event on TITLETEXT :: Author oliveiros junior]]> 2025-03-19T14:57:48-06:00 2025-03-19T14:57:48-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45551&p=278464#p278464
I would like to know if it is possible to place a click event on TITLETEXT?

Kind regards,

Oliveiros Junior]]>

I would like to know if it is possible to place a click event on TITLETEXT?

Kind regards,

Oliveiros Junior]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Place click event on TITLETEXT :: Reply by Antonio Linares]]> 2025-03-19T23:17:02-06:00 2025-03-19T23:17:02-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45551&p=278468#p278468
If you refer to Class TTitle then you can use oTitle:bLButtonUp = { | nRow, nCol | ... }]]>

If you refer to Class TTitle then you can use oTitle:bLButtonUp = { | nRow, nCol | ... }]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Place click event on TITLETEXT :: Reply by oliveiros junior]]> 2025-03-20T07:23:50-06:00 2025-03-20T07:23:50-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45551&p=278484#p278484
Obrigado pela resposta. Vou testar aqui.

Oliveiros Junior]]>

Obrigado pela resposta. Vou testar aqui.

Oliveiros Junior]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Place click event on TITLETEXT :: Reply by oliveiros junior]]> 2025-03-20T07:34:04-06:00 2025-03-20T07:34:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45551&p=278485#p278485
Funcionou. Obrigado!

Oliveros Junior]]>

Funcionou. Obrigado!

Oliveros Junior]]>
<![CDATA[FiveWin for Harbour/xHarbour :: ADSODBC and OpenSSL :: Author reinaldocrespo]]> 2025-03-20T13:54:21-06:00 2025-03-20T13:54:21-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45554&p=278487#p278487
Is anyone connecting to an Advantage Database data dictionary using ODBC?

I'm having problems trying to connect using an ODBC DNS entry. I'm using ADSODBC and ADSODBC64 from ADS ver 10.10. Here is the error:
Connection failed: [iAnywhere Solutions][Advantage SQL][ASA] Error 7160: Unable to find or load one of the OpenSSL libraries. axServerConnect
The help file describes 7160 error as:
Problem: Advantage Database Server was not able to load the OpenSSL libraries. In order to use AES encryption or TLS communications, you must have the FIPS Encryption Security Option available.
Solution: If the libraries are available, verify that they are in a path location that the server can access.
Obviously the connect function is not finding the appropriate SSL .dlls but I have no idea which version is it that works or where to place these files.

Can someone help?

Thank you.]]>

Is anyone connecting to an Advantage Database data dictionary using ODBC?

I'm having problems trying to connect using an ODBC DNS entry. I'm using ADSODBC and ADSODBC64 from ADS ver 10.10. Here is the error:
Connection failed: [iAnywhere Solutions][Advantage SQL][ASA] Error 7160: Unable to find or load one of the OpenSSL libraries. axServerConnect
The help file describes 7160 error as:
Problem: Advantage Database Server was not able to load the OpenSSL libraries. In order to use AES encryption or TLS communications, you must have the FIPS Encryption Security Option available.
Solution: If the libraries are available, verify that they are in a path location that the server can access.
Obviously the connect function is not finding the appropriate SSL .dlls but I have no idea which version is it that works or where to place these files.

Can someone help?

Thank you.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: ADSODBC and OpenSSL :: Reply by Antonio Linares]]> 2025-03-21T16:32:39-06:00 2025-03-21T16:32:39-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45554&p=278509#p278509
Place the OpenSSL DLLs in a location where the system or ADSODBC driver can find them. Here are some common locations to check:
The same directory as the ODBC driver (adsodbc.dll).
A system-wide location like C:\Windows\System32\ for 64-bit or C:\Windows\SysWow64\ for 32-bit.
Alternatively, you can add the directory containing the OpenSSL DLLs to your system's PATH environment variable.
Ensure that you're using a version of OpenSSL that's compatible with Advantage Database Server (ADS) 10.10. The OpenSSL libraries should match the version that ADS expects for encryption (AES, TLS, etc.).
Advantage Database typically uses OpenSSL 1.0.x, so using a newer or incompatible version (like OpenSSL 1.1.x or OpenSSL 3.x) could cause issues.
For ADS 10.10, you need OpenSSL libraries in the 0.9.8 series (similar to what's used in ADS 11.10)
]]>
Place the OpenSSL DLLs in a location where the system or ADSODBC driver can find them. Here are some common locations to check:
The same directory as the ODBC driver (adsodbc.dll).
A system-wide location like C:\Windows\System32\ for 64-bit or C:\Windows\SysWow64\ for 32-bit.
Alternatively, you can add the directory containing the OpenSSL DLLs to your system's PATH environment variable.
Ensure that you're using a version of OpenSSL that's compatible with Advantage Database Server (ADS) 10.10. The OpenSSL libraries should match the version that ADS expects for encryption (AES, TLS, etc.).
Advantage Database typically uses OpenSSL 1.0.x, so using a newer or incompatible version (like OpenSSL 1.1.x or OpenSSL 3.x) could cause issues.
For ADS 10.10, you need OpenSSL libraries in the 0.9.8 series (similar to what's used in ADS 11.10)
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: ADSODBC and OpenSSL :: Reply by Giovany Vecchi]]> 2025-03-21T19:35:54-06:00 2025-03-21T19:35:54-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45554&p=278511#p278511 Look at this link which has options to connect to the AdvantageDatabase Server in several ways.

https://www.connectionstrings.com/sybase-advantage/]]>
Look at this link which has options to connect to the AdvantageDatabase Server in several ways.

https://www.connectionstrings.com/sybase-advantage/]]>
<![CDATA[FiveWin for Harbour/xHarbour :: FiveLinux repositories :: Author Antonio Linares]]> 2025-03-22T02:05:43-06:00 2025-03-22T02:05:43-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45557&p=278514#p278514 https://github.com/FiveTechSoft/FiveLinux2

FiveLinux based on GTK 3.0
https://github.com/FiveTechSoft/FiveLinux3]]>
https://github.com/FiveTechSoft/FiveLinux2

FiveLinux based on GTK 3.0
https://github.com/FiveTechSoft/FiveLinux3]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Parameterized queries with MariaDB :: Author reinaldocrespo]]> 2025-03-22T12:26:04-06:00 2025-03-22T12:26:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45559&p=278522#p278522
Parameterized queries are key to preventing SQL injection in any SQL including MariaDB. However, in MariaDB (and MySQL), the parameterization itself is handled at the level of the client application, not in SQL syntax directly.

Parameterized queries are also a lot faster when executed inside a loop many times, as the server only parses the SQL once.

Here is a sample code using PHP of a parameterized query with MariaDB.

Code: Select all | Expand

$mysqli = new mysqli("localhost", "user", "password", "database");

$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username); // 's' means string
$username = "rcrespo";
$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    print_r($row);
}
Does fwh maria class supports parameterized queries?

Thank you.]]>

Parameterized queries are key to preventing SQL injection in any SQL including MariaDB. However, in MariaDB (and MySQL), the parameterization itself is handled at the level of the client application, not in SQL syntax directly.

Parameterized queries are also a lot faster when executed inside a loop many times, as the server only parses the SQL once.

Here is a sample code using PHP of a parameterized query with MariaDB.

Code: Select all | Expand

$mysqli = new mysqli("localhost", "user", "password", "database");

$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username); // 's' means string
$username = "rcrespo";
$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    print_r($row);
}
Does fwh maria class supports parameterized queries?

Thank you.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Parameterized queries with MariaDB :: Reply by cnavarro]]> 2025-03-22T17:38:04-06:00 2025-03-22T17:38:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45559&p=278525#p278525

Code: Select all | Expand

cSql     := "SHOW FULL TABLES IN `?` LIKE ?"
oMysql:Execute( cSql, { npar1, npar2 } )    // Example with two parameters
]]>

Code: Select all | Expand

cSql     := "SHOW FULL TABLES IN `?` LIKE ?"
oMysql:Execute( cSql, { npar1, npar2 } )    // Example with two parameters
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: TPanel Left click mouse is possbible? :: Author MGA]]> 2025-03-20T14:35:56-06:00 2025-03-20T14:35:56-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45555&p=278489#p278489

Code: Select all | Expand

DEFINE WINDOW oWnd TITLE "Dashboard " 
   *** Paneles
      
   oPanelWeb := TPanel():New( 0, 281, oWnd:nHeight, oWnd:nWidth, oWnd ) 
  
   oPanelWeb:blclicked := {|| msginfo("test")}  <---------
   
   oWebView := TWebView2():New(oPanelWeb)      
   oWebView:SetUserAgent( "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Mobile Safari/537.36" )   
   oWebView:SetHtml( MiHtml(1) ) 
   oWebView:Run()   

ACTIVATE WINDOW oWnd MAXIMIZED ON RESIZE
]]>

Code: Select all | Expand

DEFINE WINDOW oWnd TITLE "Dashboard " 
   *** Paneles
      
   oPanelWeb := TPanel():New( 0, 281, oWnd:nHeight, oWnd:nWidth, oWnd ) 
  
   oPanelWeb:blclicked := {|| msginfo("test")}  <---------
   
   oWebView := TWebView2():New(oPanelWeb)      
   oWebView:SetUserAgent( "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Mobile Safari/537.36" )   
   oWebView:SetHtml( MiHtml(1) ) 
   oWebView:Run()   

ACTIVATE WINDOW oWnd MAXIMIZED ON RESIZE
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TPanel Left click mouse is possbible? :: Reply by karinha]]> 2025-03-21T10:53:18-06:00 2025-03-21T10:53:18-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45555&p=278502#p278502

Code: Select all | Expand

// C:\FWH\SAMPLES\BIRAPAN.PRG

#include "FiveWin.ch"

STATIC oWnd, OPANELWEB, OWEBVIEW

FUNCTION Main()

   DEFINE WINDOW oWnd TITLE "Dashboard " // ** Paneles

   oPanelWeb := TPanel():New( 0, 281, oWnd:nHeight, oWnd:nWidth, oWnd )

   WITH OBJECT oPanelWeb

      oWnd:bRClicked := { || ( FUNDOBIRA() ) } // Mouse Direito

      oWnd:bLClicked := { || ( FUNDOBIRA() ) } // Mouse Esquerdo

   END

   oWebView := TWebView2():New( oPanelWeb )
   oWebView:SetUserAgent( "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Mobile Safari/537.36" )
   oWebView:SetHtml( MiHtml( 1 ) ) // ?? Mostre isso Bira, fiquei curioso.
   oWebView:Run()

   ACTIVATE WINDOW oWnd MAXIMIZED // ON RESIZE ??

RETURN NIL

FUNCTION FUNDOBIRA()

   ? [AQUI ESTOU BIRA]

RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>

Code: Select all | Expand

// C:\FWH\SAMPLES\BIRAPAN.PRG

#include "FiveWin.ch"

STATIC oWnd, OPANELWEB, OWEBVIEW

FUNCTION Main()

   DEFINE WINDOW oWnd TITLE "Dashboard " // ** Paneles

   oPanelWeb := TPanel():New( 0, 281, oWnd:nHeight, oWnd:nWidth, oWnd )

   WITH OBJECT oPanelWeb

      oWnd:bRClicked := { || ( FUNDOBIRA() ) } // Mouse Direito

      oWnd:bLClicked := { || ( FUNDOBIRA() ) } // Mouse Esquerdo

   END

   oWebView := TWebView2():New( oPanelWeb )
   oWebView:SetUserAgent( "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Mobile Safari/537.36" )
   oWebView:SetHtml( MiHtml( 1 ) ) // ?? Mostre isso Bira, fiquei curioso.
   oWebView:Run()

   ACTIVATE WINDOW oWnd MAXIMIZED // ON RESIZE ??

RETURN NIL

FUNCTION FUNDOBIRA()

   ? [AQUI ESTOU BIRA]

RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TPanel Left click mouse is possbible? :: Reply by MGA]]> 2025-03-21T15:04:08-06:00 2025-03-21T15:04:08-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45555&p=278508#p278508
não funciona.]]>

não funciona.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TPanel Left click mouse is possbible? :: Reply by Antonio Linares]]> 2025-03-21T16:44:32-06:00 2025-03-21T16:44:32-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45555&p=278510#p278510
Use a javascript event called function that jumps to FWH using javascript SendToFWH()

If you provide function MiHtml() source code then we can help you to implement it]]>

Use a javascript event called function that jumps to FWH using javascript SendToFWH()

If you provide function MiHtml() source code then we can help you to implement it]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TPanel Left click mouse is possbible? :: Reply by Silvio.Falconi]]> 2025-03-24T03:44:17-06:00 2025-03-24T03:44:17-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45555&p=278538#p278538
Antonio Linares wrote: Fri Mar 21, 2025 10:44 pm The WebView control covers all the window parent area so you can not use bRClicked

Use a javascript event called function that jumps to FWH using javascript SendToFWH()

If you provide function MiHtml() source code then we can help you to implement it
Antonio ,
a long time ago I used a simple html without the Twebview class, I connected to an html page that I had on a server, the page was formed as a dashboard with all the icons, if I pressed a button or the writings I could open the procedures that were in the program without using javascript, I have to find the example again and I'll show it to you

run also on local

look the video
Image

I use a simply activex

oActiveX := TActiveX():New( oWndBrowser, "Shell.Explorer" )
oActiveX:bOnEvent := { | event, aParams, pParams | EventInfo( event, aParams, pParams, oActiveX ) }

on Eventinfo I insert

Code: Select all | Expand

 
  if ( "index.html" $ cParam .and. "#" $ cParam )

            cCommand := SubStr( cParam, At( "#", cParam ) + 1 )

            if !Empty( cCommand )
                            &cCommand
                        end if
                        
sample on html

Code: Select all | Expand

<ul class="post-content-button">
                            			<li class="post-contenido-button"><img src="img/gc_document_text_user.png" class="imagen"></li>
                                		<li class="post-contenido-button"><font class="tituloboton"><a href="index.html#AppFacCli()">A&ntilde;adir nueva factura</a></font></li>
                            		</ul>
when I click on "A&ntilde;adir nueva factura" I open the procedure index.html#AppFacCli()


I not Know TwebView or TwebView2 because I never use these object classes, exist a codeblock to insert as bonEvent ?]]>
Antonio Linares wrote: Fri Mar 21, 2025 10:44 pm The WebView control covers all the window parent area so you can not use bRClicked

Use a javascript event called function that jumps to FWH using javascript SendToFWH()

If you provide function MiHtml() source code then we can help you to implement it
Antonio ,
a long time ago I used a simple html without the Twebview class, I connected to an html page that I had on a server, the page was formed as a dashboard with all the icons, if I pressed a button or the writings I could open the procedures that were in the program without using javascript, I have to find the example again and I'll show it to you

run also on local

look the video
Image

I use a simply activex

oActiveX := TActiveX():New( oWndBrowser, "Shell.Explorer" )
oActiveX:bOnEvent := { | event, aParams, pParams | EventInfo( event, aParams, pParams, oActiveX ) }

on Eventinfo I insert

Code: Select all | Expand

 
  if ( "index.html" $ cParam .and. "#" $ cParam )

            cCommand := SubStr( cParam, At( "#", cParam ) + 1 )

            if !Empty( cCommand )
                            &cCommand
                        end if
                        
sample on html

Code: Select all | Expand

<ul class="post-content-button">
                            			<li class="post-contenido-button"><img src="img/gc_document_text_user.png" class="imagen"></li>
                                		<li class="post-contenido-button"><font class="tituloboton"><a href="index.html#AppFacCli()">A&ntilde;adir nueva factura</a></font></li>
                            		</ul>
when I click on "A&ntilde;adir nueva factura" I open the procedure index.html#AppFacCli()


I not Know TwebView or TwebView2 because I never use these object classes, exist a codeblock to insert as bonEvent ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TPanel Left click mouse is possbible? :: Reply by Silvio.Falconi]]> 2025-03-24T06:44:45-06:00 2025-03-24T06:44:45-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45555&p=278540#p278540
mihtml.html

Code: Select all | Expand


<!DOCTYPE html>
<html lang="it">
<head>
    <meta charset="UTF-8">
    <title>Test TWebView</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            background-color: #f0f0f0;
        }
        .post-content-button {
            list-style: none;
            padding: 0;
            display: flex;
            align-items: center;
            background-color: #ffffff;
            border: 1px solid #ccc;
            border-radius: 5px;
            box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
        }
        .post-contenido-button {
            margin: 10px;
        }
        .imagen {
            width: 24px;
            height: 24px;
            vertical-align: middle;
        }
        .tituloboton {
            font-size: 16px;
            color: #333;
        }
        a {
            text-decoration: none;
            color: #0078d7;
        }
        a:hover {
            text-decoration: underline;
            color: #005bb5;
        }
    </style>
</head>
<body>
    <ul class="post-content-button">
        <li class="post-contenido-button">
            <img src="img/test.png" class="imagen" alt="Image">
        </li>
        <li class="post-contenido-button">
            <font class="tituloboton">
                <a href="#" onclick="callHarbourFunction('AppFacCli'); return false;">Añadir nueva factura</a>
            </font>
        </li>
    </ul>

    <script>
        function callHarbourFunction(funcName) {
            if (window.chrome && window.chrome.webview) {
                window.chrome.webview.postMessage(funcName); 
                alert("Messaggio inviato a Harbour: " + funcName); 
            } else {
                alert("WebView2 non è disponibile!");
            }
        }
    </script>
</body>
</html>



test.prg

Code: Select all | Expand


#include "FiveWin.ch"

FUNCTION Main()
   LOCAL oWebView := TWebView():New( 0, 0, 800, 600 ) // Create the WebView control
   LOCAL cHtml := MemoRead("mihtml.html")   // Upload your HTML

   // Set up binding to receive messages from the web
   oWebView:bOnBind := {|cMessage| ExecuteFunction(cMessage) }

   // Load the HTML
   oWebView:SetHtml(cHtml)
   oWebView:Run()

RETURN NIL

FUNCTION ExecuteFunction(cFuncName)
   IF cFuncName == "AppFacCli"
      AppFacCli() // Call your Harbour function
   ENDIF
RETURN NIL

FUNCTION AppFacCli()
   MsgInfo("here your harbour/fwh  codes!")
RETURN NIL
]]>

mihtml.html

Code: Select all | Expand


<!DOCTYPE html>
<html lang="it">
<head>
    <meta charset="UTF-8">
    <title>Test TWebView</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            background-color: #f0f0f0;
        }
        .post-content-button {
            list-style: none;
            padding: 0;
            display: flex;
            align-items: center;
            background-color: #ffffff;
            border: 1px solid #ccc;
            border-radius: 5px;
            box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
        }
        .post-contenido-button {
            margin: 10px;
        }
        .imagen {
            width: 24px;
            height: 24px;
            vertical-align: middle;
        }
        .tituloboton {
            font-size: 16px;
            color: #333;
        }
        a {
            text-decoration: none;
            color: #0078d7;
        }
        a:hover {
            text-decoration: underline;
            color: #005bb5;
        }
    </style>
</head>
<body>
    <ul class="post-content-button">
        <li class="post-contenido-button">
            <img src="img/test.png" class="imagen" alt="Image">
        </li>
        <li class="post-contenido-button">
            <font class="tituloboton">
                <a href="#" onclick="callHarbourFunction('AppFacCli'); return false;">Añadir nueva factura</a>
            </font>
        </li>
    </ul>

    <script>
        function callHarbourFunction(funcName) {
            if (window.chrome && window.chrome.webview) {
                window.chrome.webview.postMessage(funcName); 
                alert("Messaggio inviato a Harbour: " + funcName); 
            } else {
                alert("WebView2 non è disponibile!");
            }
        }
    </script>
</body>
</html>



test.prg

Code: Select all | Expand


#include "FiveWin.ch"

FUNCTION Main()
   LOCAL oWebView := TWebView():New( 0, 0, 800, 600 ) // Create the WebView control
   LOCAL cHtml := MemoRead("mihtml.html")   // Upload your HTML

   // Set up binding to receive messages from the web
   oWebView:bOnBind := {|cMessage| ExecuteFunction(cMessage) }

   // Load the HTML
   oWebView:SetHtml(cHtml)
   oWebView:Run()

RETURN NIL

FUNCTION ExecuteFunction(cFuncName)
   IF cFuncName == "AppFacCli"
      AppFacCli() // Call your Harbour function
   ENDIF
RETURN NIL

FUNCTION AppFacCli()
   MsgInfo("here your harbour/fwh  codes!")
RETURN NIL
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TPanel Left click mouse is possbible? :: Reply by Silvio.Falconi]]> 2025-03-24T07:16:19-06:00 2025-03-24T07:16:19-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45555&p=278541#p278541 Please why it make error ?

Code: Select all | Expand

#include "FiveWin.ch"

FUNCTION Main()
   LOCAL oWebView := TWebView():New()

   oWebView:SetHtml( Html() )
   oWebView:SetTitle( "Test AppFacCli" )
   oWebView:SetSize( 800, 600 )
   oWebView:Bind( "SendToFWH" )
   oWebView:bOnBind := {|cJson, cCalls| ExecuteFunction(cJson, cCalls, oWebView) }
   oWebView:Run()
   oWebView:Destroy()

RETURN NIL

FUNCTION ExecuteFunction(cJson, cCalls, oWebView)
   LOCAL hData

   // Decodifica il JSON ricevuto dal JavaScript
   hb_jsonDecode(cJson, @hData)

   // Controlla il contenuto del JSON
   IF hb_HHasKey(hData, "function") .AND. hData["function"] == "AppFacCli"
      AppFacCli()
      oWebView:Return(cCalls, 0, "{ 'result': 'AppFacCli eseguita con successo!' }")
   ELSE
      oWebView:Return(cCalls, 0, "{ 'result': 'Funzione non riconosciuta' }")
   ENDIF

RETURN NIL

FUNCTION AppFacCli()
   MsgInfo("my codes!")
RETURN NIL

FUNCTION Html()
   LOCAL cHtml

   TEXT INTO cHtml
   <!DOCTYPE html>
   <html lang="it">
   <head>
       <meta charset="UTF-8">
       <title>Test TWebView</title>
       <style>
           body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background-color: #f0f0f0; }
           .post-content-button { list-style: none; padding: 0; display: flex; align-items: center; background-color: #ffffff; border: 1px solid #ccc; border-radius: 5px; box-shadow: 2px 2px 5px rgba(0,0,0,0.1); }
           .post-contenido-button { margin: 10px; }
           .imagen { width: 24px; height: 24px; vertical-align: middle; }
           .tituloboton { font-size: 16px; color: #333; }
           a { text-decoration: none; color: #0078d7; }
           a:hover { text-decoration: underline; color: #005bb5; }
       </style>
   </head>
   <body>
       <ul class="post-content-button">
           <li class="post-contenido-button"><img src="img/test.png" class="imagen" alt="Icona"></li>
           <li class="post-contenido-button">
               <font class="tituloboton">
                   <a href="#" onclick="callHarbourFunction('AppFacCli'); return false;">Añadir nueva factura</a>
               </font>
           </li>
       </ul>

       <script>
           function callHarbourFunction(funcName) {
               var data = { function: funcName };
               var s = SendToFWH(data).then(s => { 
                   alert(s.result);
               }).catch(err => {
                   alert("Errore: " + err); 
               });
           }
       </script>
   </body>
   </html>
   ENDTEXT

RETURN cHtm
]]>
Please why it make error ?

Code: Select all | Expand

#include "FiveWin.ch"

FUNCTION Main()
   LOCAL oWebView := TWebView():New()

   oWebView:SetHtml( Html() )
   oWebView:SetTitle( "Test AppFacCli" )
   oWebView:SetSize( 800, 600 )
   oWebView:Bind( "SendToFWH" )
   oWebView:bOnBind := {|cJson, cCalls| ExecuteFunction(cJson, cCalls, oWebView) }
   oWebView:Run()
   oWebView:Destroy()

RETURN NIL

FUNCTION ExecuteFunction(cJson, cCalls, oWebView)
   LOCAL hData

   // Decodifica il JSON ricevuto dal JavaScript
   hb_jsonDecode(cJson, @hData)

   // Controlla il contenuto del JSON
   IF hb_HHasKey(hData, "function") .AND. hData["function"] == "AppFacCli"
      AppFacCli()
      oWebView:Return(cCalls, 0, "{ 'result': 'AppFacCli eseguita con successo!' }")
   ELSE
      oWebView:Return(cCalls, 0, "{ 'result': 'Funzione non riconosciuta' }")
   ENDIF

RETURN NIL

FUNCTION AppFacCli()
   MsgInfo("my codes!")
RETURN NIL

FUNCTION Html()
   LOCAL cHtml

   TEXT INTO cHtml
   <!DOCTYPE html>
   <html lang="it">
   <head>
       <meta charset="UTF-8">
       <title>Test TWebView</title>
       <style>
           body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background-color: #f0f0f0; }
           .post-content-button { list-style: none; padding: 0; display: flex; align-items: center; background-color: #ffffff; border: 1px solid #ccc; border-radius: 5px; box-shadow: 2px 2px 5px rgba(0,0,0,0.1); }
           .post-contenido-button { margin: 10px; }
           .imagen { width: 24px; height: 24px; vertical-align: middle; }
           .tituloboton { font-size: 16px; color: #333; }
           a { text-decoration: none; color: #0078d7; }
           a:hover { text-decoration: underline; color: #005bb5; }
       </style>
   </head>
   <body>
       <ul class="post-content-button">
           <li class="post-contenido-button"><img src="img/test.png" class="imagen" alt="Icona"></li>
           <li class="post-contenido-button">
               <font class="tituloboton">
                   <a href="#" onclick="callHarbourFunction('AppFacCli'); return false;">Añadir nueva factura</a>
               </font>
           </li>
       </ul>

       <script>
           function callHarbourFunction(funcName) {
               var data = { function: funcName };
               var s = SendToFWH(data).then(s => { 
                   alert(s.result);
               }).catch(err => {
                   alert("Errore: " + err); 
               });
           }
       </script>
   </body>
   </html>
   ENDTEXT

RETURN cHtm
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TPanel Left click mouse is possbible? :: Reply by Silvio.Falconi]]> 2025-03-24T07:33:49-06:00 2025-03-24T07:33:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45555&p=278542#p278542 Now run ok

the procedure call RightClickEvent() , this is opened when I click on right click of the mouse into webview

Code: Select all | Expand

#include "FiveWin.ch"

FUNCTION Main()
   LOCAL oWebView := TWebView():New()

   oWebView:SetHtml( Html() )
   oWebView:SetTitle( "Test AppFacCli" )
   oWebView:SetSize( 800, 600 )
   oWebView:Bind( "SendToFWH" )
   oWebView:bOnBind := {|cJson, cCalls| ExecuteFunction(cJson, cCalls, oWebView) }
   oWebView:Run()
   oWebView:Destroy()

RETURN NIL

FUNCTION ExecuteFunction(cJson, cCalls, oWebView)
   LOCAL hData, cFuncName

   // Debug: mostra il JSON ricevuto
   MsgInfo("JSON ricevuto: " + cJson)

   // Decodifica il JSON
   hb_jsonDecode(cJson, @hData)

   // Se hData è un array, prendi il primo elemento
   IF ValType(hData) == "A" .AND. Len(hData) > 0
      hData := hData[1]
   ENDIF

   // Estrai il nome della funzione
   cFuncName := hb_HGetDef(hData, "function", "Nessuna funzione")
   MsgInfo("Funzione estratta: " + cFuncName)

   // Esegui la funzione corrispondente
   IF Upper(cFuncName) == "APPFACCLI"
      AppFacCli()
      oWebView:Return(cCalls, 0, "{ 'result': 'AppFacCli eseguita con successo!' }")
   ELSE
      oWebView:Return(cCalls, 0, "{ 'result': 'Funzione non riconosciuta: " + cFuncName + "' }")
   ENDIF

   RETURN NIL

FUNCTION AppFacCli()
   MsgInfo("my codes!")
   RETURN NIL

Function RightClickEvent()     // this is opened when  I click on right click of the mouse into webview
         MsgInfo("right click!")
   return nil




   FUNCTION Html()
   LOCAL cHtml

   TEXT INTO cHtml
   <!DOCTYPE html>
   <html lang="it">
   <head>
       <meta charset="UTF-8">
       <title>Test TWebView</title>
       <style>
           body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background-color: #f0f0f0; }
           .post-content-button { list-style: none; padding: 0; display: flex; align-items: center; background-color: #ffffff; border: 1px solid #ccc; border-radius: 5px; box-shadow: 2px 2px 5px rgba(0,0,0,0.1); }
           .post-contenido-button { margin: 10px; }
           .imagen { width: 24px; height: 24px; vertical-align: middle; }
           .tituloboton { font-size: 16px; color: #333; }
           a { text-decoration: none; color: #0078d7; }
           a:hover { text-decoration: underline; color: #005bb5; }
       </style>
   </head>
   <body>
       <ul class="post-content-button">
           <li class="post-contenido-button"><img src="img/test.png" class="imagen" alt="Icona"></li>
           <li class="post-contenido-button">
               <font class="tituloboton">
                   <a href="#" onclick="callHarbourFunction('AppFacCli'); return false;">Aggiungi nuova fattura</a>
               </font>
           </li>
       </ul>

       <script>
           // Funzione per chiamare Harbour
           function callHarbourFunction(funcName) {
               var data = { function: funcName };
               SendToFWH(data).then(s => { 
                   alert(s.result);
               }).catch(err => {
                   alert("Errore: " + err); 
               });
           }

           // Intercetta il clic destro e invia l'evento a Harbour
           document.addEventListener("contextmenu", function(event) {
               event.preventDefault(); // Evita il menu di default del browser
               var data = { function: "RightClickEvent" };
               SendToFWH(data);
           });
       </script>
   </body>
   </html>
   ENDTEXT

RETURN cHtml

]]>
Now run ok

the procedure call RightClickEvent() , this is opened when I click on right click of the mouse into webview

Code: Select all | Expand

#include "FiveWin.ch"

FUNCTION Main()
   LOCAL oWebView := TWebView():New()

   oWebView:SetHtml( Html() )
   oWebView:SetTitle( "Test AppFacCli" )
   oWebView:SetSize( 800, 600 )
   oWebView:Bind( "SendToFWH" )
   oWebView:bOnBind := {|cJson, cCalls| ExecuteFunction(cJson, cCalls, oWebView) }
   oWebView:Run()
   oWebView:Destroy()

RETURN NIL

FUNCTION ExecuteFunction(cJson, cCalls, oWebView)
   LOCAL hData, cFuncName

   // Debug: mostra il JSON ricevuto
   MsgInfo("JSON ricevuto: " + cJson)

   // Decodifica il JSON
   hb_jsonDecode(cJson, @hData)

   // Se hData è un array, prendi il primo elemento
   IF ValType(hData) == "A" .AND. Len(hData) > 0
      hData := hData[1]
   ENDIF

   // Estrai il nome della funzione
   cFuncName := hb_HGetDef(hData, "function", "Nessuna funzione")
   MsgInfo("Funzione estratta: " + cFuncName)

   // Esegui la funzione corrispondente
   IF Upper(cFuncName) == "APPFACCLI"
      AppFacCli()
      oWebView:Return(cCalls, 0, "{ 'result': 'AppFacCli eseguita con successo!' }")
   ELSE
      oWebView:Return(cCalls, 0, "{ 'result': 'Funzione non riconosciuta: " + cFuncName + "' }")
   ENDIF

   RETURN NIL

FUNCTION AppFacCli()
   MsgInfo("my codes!")
   RETURN NIL

Function RightClickEvent()     // this is opened when  I click on right click of the mouse into webview
         MsgInfo("right click!")
   return nil




   FUNCTION Html()
   LOCAL cHtml

   TEXT INTO cHtml
   <!DOCTYPE html>
   <html lang="it">
   <head>
       <meta charset="UTF-8">
       <title>Test TWebView</title>
       <style>
           body { font-family: Arial, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background-color: #f0f0f0; }
           .post-content-button { list-style: none; padding: 0; display: flex; align-items: center; background-color: #ffffff; border: 1px solid #ccc; border-radius: 5px; box-shadow: 2px 2px 5px rgba(0,0,0,0.1); }
           .post-contenido-button { margin: 10px; }
           .imagen { width: 24px; height: 24px; vertical-align: middle; }
           .tituloboton { font-size: 16px; color: #333; }
           a { text-decoration: none; color: #0078d7; }
           a:hover { text-decoration: underline; color: #005bb5; }
       </style>
   </head>
   <body>
       <ul class="post-content-button">
           <li class="post-contenido-button"><img src="img/test.png" class="imagen" alt="Icona"></li>
           <li class="post-contenido-button">
               <font class="tituloboton">
                   <a href="#" onclick="callHarbourFunction('AppFacCli'); return false;">Aggiungi nuova fattura</a>
               </font>
           </li>
       </ul>

       <script>
           // Funzione per chiamare Harbour
           function callHarbourFunction(funcName) {
               var data = { function: funcName };
               SendToFWH(data).then(s => { 
                   alert(s.result);
               }).catch(err => {
                   alert("Errore: " + err); 
               });
           }

           // Intercetta il clic destro e invia l'evento a Harbour
           document.addEventListener("contextmenu", function(event) {
               event.preventDefault(); // Evita il menu di default del browser
               var data = { function: "RightClickEvent" };
               SendToFWH(data);
           });
       </script>
   </body>
   </html>
   ENDTEXT

RETURN cHtml

]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: TPanel Left click mouse is possbible? :: Reply by Antonio Linares]]> 2025-03-24T13:54:33-06:00 2025-03-24T13:54:33-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45555&p=278546#p278546
Better use FWH Class TWebView2 instead of Class TWebView as it is much more advanced and it does not require an external DLL

thanks!]]>

Better use FWH Class TWebView2 instead of Class TWebView as it is much more advanced and it does not require an external DLL

thanks!]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Lost connection to MySQL server during query :: Reply by ssbbs]]> 2025-03-25T01:52:57-06:00 2025-03-25T01:52:57-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=43528&p=278553#p278553
vilian wrote: Mon Dec 30, 2024 2:09 pm Yes,
You can use bOnLostServer

* FWMariaConnection:
Reconnection logic improved when the app loses connection to the server.
New data bOnLostServer: If this codeblock is specified, it is called when the
application loses connection with the server.
PAUL SIMM wrote:Is there any way I can change the error message "Lost Connection to MySql server during query" to only log the error to a text file end return false to the calling fintion. At the moment the error is a MsgInfo and the process which is automatic with a Timer blocks the aplication.

This code do'snt do this

oCon:Execute(cQwery)

if oCon:nError != 0
MSGWAIT("Error executando query","Line 10961")
oCon:Close()
RETURN .F.
endif

I used to work with Eagle I could define what to do when an MySql error occured with this funcion.
FUNCTION MyMsgError(cArg1,cArg2 )
MSGWAIT(cArg1,cArg2+" Web2Reco")
YMENSCEN(cArg1+ " "+cArg2) //log error
RETURN NIL
******************************************************************************
mysql.c add:

Code: Select all | Expand

HB_FUNC(SQLPING)
{
   _retnl((long) mysql_ping( (MYSQL *)_parnl(1) ) );
}
tMySQL.prg
CLASS TMySQLServer
add:

Code: Select all | Expand

METHOD   Ping()               INLINE sqlping( ::nSocket )
your prg use TTimer to run SQL:ping() every 180 seconds.
I've been using this method for over ten years!]]>
vilian wrote: Mon Dec 30, 2024 2:09 pm Yes,
You can use bOnLostServer

* FWMariaConnection:
Reconnection logic improved when the app loses connection to the server.
New data bOnLostServer: If this codeblock is specified, it is called when the
application loses connection with the server.
PAUL SIMM wrote:Is there any way I can change the error message "Lost Connection to MySql server during query" to only log the error to a text file end return false to the calling fintion. At the moment the error is a MsgInfo and the process which is automatic with a Timer blocks the aplication.

This code do'snt do this

oCon:Execute(cQwery)

if oCon:nError != 0
MSGWAIT("Error executando query","Line 10961")
oCon:Close()
RETURN .F.
endif

I used to work with Eagle I could define what to do when an MySql error occured with this funcion.
FUNCTION MyMsgError(cArg1,cArg2 )
MSGWAIT(cArg1,cArg2+" Web2Reco")
YMENSCEN(cArg1+ " "+cArg2) //log error
RETURN NIL
******************************************************************************
mysql.c add:

Code: Select all | Expand

HB_FUNC(SQLPING)
{
   _retnl((long) mysql_ping( (MYSQL *)_parnl(1) ) );
}
tMySQL.prg
CLASS TMySQLServer
add:

Code: Select all | Expand

METHOD   Ping()               INLINE sqlping( ::nSocket )
your prg use TTimer to run SQL:ping() every 180 seconds.
I've been using this method for over ten years!]]>
<![CDATA[FiveWin for Harbour/xHarbour :: open a function from a link inserted in an html (oWebview) RESOLVED :: Author Silvio.Falconi]]> 2025-03-26T10:08:00-06:00 2025-03-26T15:38:59-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45566&p=278578#p278578

Code: Select all | Expand

 <div class="quick-item" onclick="callHarbourFunction('Clienti')">
                                <img src="{IMGCLIENTI}" alt="Clienti">
                                <span>Clienti</span>
                            </div>
callHarbourFunction is on a javascritpt script

Code: Select all | Expand

<script>
                function callHarbourFunction(funcName) {
                    var data = { function: funcName };
                    var s = SendToFWH(data).then(s => {
                        alert(s.result);
                    }).catch(err => {
                        alert("Errore: " + err);
                    });
                }
            </script>

When I click on a link give me a message box with the text "array"

Image

and not open the function clienti()

How I can resolve ?]]>

Code: Select all | Expand

 <div class="quick-item" onclick="callHarbourFunction('Clienti')">
                                <img src="{IMGCLIENTI}" alt="Clienti">
                                <span>Clienti</span>
                            </div>
callHarbourFunction is on a javascritpt script

Code: Select all | Expand

<script>
                function callHarbourFunction(funcName) {
                    var data = { function: funcName };
                    var s = SendToFWH(data).then(s => {
                        alert(s.result);
                    }).catch(err => {
                        alert("Errore: " + err);
                    });
                }
            </script>

When I click on a link give me a message box with the text "array"

Image

and not open the function clienti()

How I can resolve ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: open a function from a link inserted in an html (oWebview) :: Reply by Silvio.Falconi]]> 2025-03-26T12:03:35-06:00 2025-03-26T12:03:35-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45566&p=278585#p278585
oWebView:bOnBind := {|cJson, cCalls| ExecuteFunction(cJson, cCalls, oWebView) }

but not arrive nothing on cJson]]>

oWebView:bOnBind := {|cJson, cCalls| ExecuteFunction(cJson, cCalls, oWebView) }

but not arrive nothing on cJson]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: open a function from a link inserted in an html (oWebview) :: Reply by Ari]]> 2025-03-26T15:14:00-06:00 2025-03-26T15:14:00-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45566&p=278594#p278594
How is your function that opens the WebView?

Post an example]]>

How is your function that opens the WebView?

Post an example]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: open a function from a link inserted in an html (oWebview) :: Reply by Antonio Linares]]> 2025-03-26T15:28:15-06:00 2025-03-26T15:28:15-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45566&p=278598#p278598
Please use XBrowse( data ) instead of MsgInfo( data )]]>

Please use XBrowse( data ) instead of MsgInfo( data )]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: open a function from a link inserted in an html (oWebview) :: Reply by Silvio.Falconi]]> 2025-03-26T15:38:26-06:00 2025-03-26T15:38:26-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45566&p=278603#p278603 I resolved

oWebView:bOnBind := {|hData| ExecuteFunction(hData, oWebView) }

Code: Select all | Expand

 FUNCTION Extract(cString)
    LOCAL aData
    LOCAL cValue
    aData := (cString)
    cValue := aData[1]["function"]
    RETURN cValue

Code: Select all | Expand

Function ExecuteFunction(hData, oWebView)
   local  cFuncName  := Extract(hData)


   DO CASE
      CASE cFuncName == "Bacheca"
         Bacheca(oWebView)
        CASE cFuncName = "Clienti"
         Clienti()
              ENDCASE
   RETURN NIL
because the string returned by bOnBind is not a valid hash but seem as an array]]>
I resolved

oWebView:bOnBind := {|hData| ExecuteFunction(hData, oWebView) }

Code: Select all | Expand

 FUNCTION Extract(cString)
    LOCAL aData
    LOCAL cValue
    aData := (cString)
    cValue := aData[1]["function"]
    RETURN cValue

Code: Select all | Expand

Function ExecuteFunction(hData, oWebView)
   local  cFuncName  := Extract(hData)


   DO CASE
      CASE cFuncName == "Bacheca"
         Bacheca(oWebView)
        CASE cFuncName = "Clienti"
         Clienti()
              ENDCASE
   RETURN NIL
because the string returned by bOnBind is not a valid hash but seem as an array]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Harbour debugging under IIS :: Author don lowenstein]]> 2025-03-26T06:31:20-06:00 2025-03-26T06:31:20-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45564&p=278568#p278568
Is there a way to have access to a debugger for the Harbour exe when running under IIS?]]>

Is there a way to have access to a debugger for the Harbour exe when running under IIS?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Harbour debugging under IIS :: Reply by cnavarro]]> 2025-03-26T07:40:31-06:00 2025-03-26T07:40:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45564&p=278569#p278569
#pragma DEBUGINFO=ON
]]>
#pragma DEBUGINFO=ON
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Harbour debugging under IIS :: Reply by don lowenstein]]> 2025-03-26T09:56:19-06:00 2025-03-26T09:56:19-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45564&p=278575#p278575
Does the debugger appear when it hits an altd()?]]>

Does the debugger appear when it hits an altd()?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Harbour debugging under IIS :: Reply by don lowenstein]]> 2025-03-26T09:57:13-06:00 2025-03-26T09:57:13-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45564&p=278576#p278576 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Harbour debugging under IIS :: Reply by Antonio Linares]]> 2025-03-26T14:54:23-06:00 2025-03-26T14:54:23-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45564&p=278593#p278593
a CGI app can not use the GUI interface so you can only generate a log file (ascii file) with some usefull info for debugging

Afaik, there is no way to use the debugger from it]]>

a CGI app can not use the GUI interface so you can only generate a log file (ascii file) with some usefull info for debugging

Afaik, there is no way to use the debugger from it]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Harbour debugging under IIS :: Reply by Lailton]]> 2025-03-26T18:25:45-06:00 2025-03-26T18:25:45-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45564&p=278608#p278608
File hbd_debug.c

Code: Select all | Expand

#include "windows.h"
#include "hbapi.h"

HB_FUNC( HB_DEBUG_STRING )
{
	OutputDebugString( hb_parcx( 1 ) );
}
then from your prg

Code: Select all | Expand

hb_debug_string( "your string message" )
then from app "DebugView++.exe"
https://github.com/CobaltFusion/DebugVi ... -win64.zip

I hope can be useful 8)]]>

File hbd_debug.c

Code: Select all | Expand

#include "windows.h"
#include "hbapi.h"

HB_FUNC( HB_DEBUG_STRING )
{
	OutputDebugString( hb_parcx( 1 ) );
}
then from your prg

Code: Select all | Expand

hb_debug_string( "your string message" )
then from app "DebugView++.exe"
https://github.com/CobaltFusion/DebugVi ... -win64.zip

I hope can be useful 8)]]>
<![CDATA[FiveWin for Harbour/xHarbour :: SendToFWH() - TWebView2 :: Author Ari]]> 2025-03-26T15:54:38-06:00 2025-03-26T15:54:38-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45569&p=278605#p278605
HTML see <script>

Code: Select all | Expand

  
  <!DOCTYPE html>
  <html lang="pt-br">
  <head>
  
  <meta charset="UTF-8">
  <title>Menu</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
  <link rel="stylesheet" href="/easyui/themes/color.css">
  <link rel="stylesheet" href="/easyui/themes/metro/easyui.css">
  <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
  <script src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
      
    
  <script>

    function ExecMenu(opcao){
    
         alert("Executando ExecMenu: " + opcao);              <<<< ----- ok
         
         window.chrome.webview.postmessage(opcao);            <<<< ---- :-( não funciona
		 SendToFWH( opcao );                                  <<<< ---- :-( não funciona 
   	}
 
  </script>
  
  <style>
   
  body {
    font-family: "Segoe UI", sans-serif;
    padding: 20px;
    background: #f4f6f9;
  }
 
  .menu-card {
    padding: 0;
    padding-bottom: 12px;
    background: #fff;
    border: 1px solid #d0d7de;
    border-radius: 6px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.05);
    margin-bottom: 20px;
  }
 
  h3.menu-titulo {
    margin: 0;
    padding: 8px 12px;
    background-color: 'f6f6f6;
    color: '0078d4;
    font-size: 16px;
    font-weight: bold;
    border-bottom: 1px solid 'ddd;
    border-radius: 6px 6px 0 0;
  }
 
  ul {
    margin: 2px 0;
    padding: 0;
  }
 
  li, li a {
    list-style: none;
    margin: 0;
    padding: 0;
    border: none;
    line-height: 1.2;
  }
 
  .menu-card li {
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
 
  .menu-card li:hover {
    background: #B0E2FF;
  }
 
  li a {
    color: #0078d4;
    text-decoration: underline;
    display: block;
    padding: 2px 2px;
  }
 
  li a:hover {
    text-decoration: none;
  }
  
  li span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  }
  
  li img, li i {
    vertical-align: middle;
    display: inline-block;
    margin-right: 6px;  
  }
    
  </style>
    
  </head>
  <body>
  

   <div class="menu-container" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px;">

   <div class="menu-card" style="background:#fff; border:1px solid #d0d7de;   border-radius:6px; padding:12px; box-shadow:0 1px 3px rgba(0,0,0,0.05);">
   <h3 style="margin:0; color: white; font-size:16px; border-bottom:1px solid #eee; border-radius: 6px 6px 0 0;border-bottom: 1px solid #ddd; font-weight: bold;padding: 8px 12px;padding-bottom:4px; background-color: #004080;">Arquivos</h3>
   <ul style="list-style:none; padding:0; margin:0; white-space: nowrap;">
     <li><span><i class="fas fa-dollar-sign" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVPla000():New( ::oWnd )'); return false;">Captura lista de preços</a></span></li>
     <li><span><i class="fas fa-box" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm087():New(::oWnd)'); return false;">Gerar arquivo de produtos (Global)</a></span></li>
     <li><span><i class="fas fa-envelope" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('EnviaLista()'); return false;">Enviar lista de preco por email</a></span></li>
     <li><span><i class="fas fa-cog" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCfg():New(::oWnd)'); return false;">Configurações Gerais</a></span></li>
     <li><span><i class="fas fa-user" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm046():New(::oWnd, ::oWnd:oMenu)'); return false;">Vendedor/Usuário/Representante</a></span></li>
     <li><span><i class="fas fa-user-lock" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm124():New(::oWnd)'); return false;">Ligar/Desligar direitos para vários usuários</a></span></li>
    </ul>
</div>

   <div class="menu-card" style="background:#fff; border:1px solid #d0d7de; border-radius:6px; padding:12px; box-shadow:0 1px 3px rgba(0,0,0,0.05);">

   <h3 style="margin:0; color: white; font-size:16px; border-bottom:1px solid #eee; border-radius: 6px 6px 0 0;border-bottom: 1px solid #ddd; font-weight: bold;padding: 8px 12px;padding-bottom:4px; background-color: #004080;">Processos especiais</h3>

   <ul style="list-style:none; padding:0; margin:0;">
     <li><span><i class="fas fa-database" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('Msg("Solicite informações para restaurar copias de segurança")'); return false;">Restaurar Cópias de Segurança</a></span></li>
     <li><span><i class="fas fa-table" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckTab():New(.T., ::oWnd)'); return false;">Conferência das tabelas</a></span></li>
     <li><span><i class="fas fa-table" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| RecnoTab(oMeter) },"aguarde","processando")'); return false;">Recupera tabela-especial</a></span></li>
     <li><span><i class="fas fa-exchange-alt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TrocaTbl()'); return false;">Troca de tabela - manutenção</a></span></li>
     <li><span><i class="fas fa-upload" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TMigra():New(.T.,,,.T.)'); return false;">Carrega tabela de dados - manutenção</a></span></li>
     <li><span><i class="fas fa-file-archive" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TBackup():New(2, ::oWnd)'); return false;">Backup dos Arquivos XML-NFe</a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TBackup():New(3, ::oWnd)'); return false;">Enviar todos os XML-NFe por Cliente</a></span></li>
     <li><span><i class="fas fa-terminal" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('ManutencaoQuery()'); return false;">Manutenção por query</a></span></li>
     <li><span><i class="fas fa-wrench" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('ManutencaoPorFuncao()'); return false;">Manutenção por função</a></span></li>
     <li><span><i class="fas fa-terminal" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('CriaManutencaoQuery()'); return false;">Cria Manutenção por query</a></span></li>
     <li><span><i class="fas fa-tools" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('CriaManutencaoPorFuncao()'); return false;">Cria Manutenção por função</a></span></li>
     <li><span><i class="fas fa-folder-open" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm086():New()'); return false;">Organizar Arquivos</a></span></li>
     <li><span><i class="fas fa-file-medical" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('ManTableFrm086()'); return false;">Manutenção arquivos - corrigir integridade</a></span></li>
     <li><span><i class="fas fa-tools" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('Reparar()'); return false;">Manutenção de tabela</a></span></li>
     <li><span><i class="fas fa-circle" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():Ler(::oWnd)'); return false;">Registros de eventos</a></span></li>
     <li><span><i class="fas fa-history" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():LerPed(::oWnd)'); return false;">Histórico de pedidos de venda</a></span></li>
     <li><span><i class="fas fa-history" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():LerPedComp(::oWnd)'); return false;">Histórico de pedidos de compra</a></span></li>
     <li><span><i class="fas fa-history" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():LerPedCompDiversos(::oWnd)'); return false;">Histórico de pedidos de compra - diversos</a></span></li>
     <li><span><i class="fas fa-receipt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():VerDuplicata(1,::oWnd)'); return false;">Histórico de duplicatas - Contas a pagar</a></span></li>
     <li><span><i class="fas fa-receipt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():VerDuplicata(2,::oWnd)'); return false;">Histórico de duplicatas - Contas a receber</a></span></li>
     <li><span><i class="fas fa-share-square" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('SuporteSis()'); return false;">Enviar informações do sistema</a></span></li>
     <li><span><i class="fas fa-user" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TUser():New(::oWnd)'); return false;">Usuários conectados</a></span></li>
     <li><span><i class="fas fa-database" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TSysInfo():New(::oWnd)'); return false;">Informações do MySQL</a></span></li>
     <li><span><i class="fas fa-cloud-upload-alt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgRun("Verificando versão no Servidor FTP", "Sisrev Informática Ltda.", {|oMsg| ChamaGoFTP()} )'); return false;">Atualizar versão do Sistema por FTP</a></span></li>
     <li><span><i class="fas fa-cloud-upload-alt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVMan233():New(::oWnd)'); return false;">Atualizar NFe_Util por FTP</a></span></li>
     <li><span><i class="fas fa-cloud-upload-alt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVMan234():New(::oWnd)'); return false;">Atualizar Fontes do Danfe por FTP</a></span></li>
     <li><span><i class="fas fa-sync" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgRun("Verificando versão no Servidor Web", "Sisrev Informática Ltda.", {|oMsg| ChamaGoWeb(1)} )'); return false;">Atualizar versão via Servidor Web</a></span></li>
     <li><span><i class="fas fa-sync-alt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgRun("Verificando versão no Servidor Web", "Sisrev Informática Ltda.", {|oMsg| ChamaGoWeb(2)} )'); return false;">Substituir versão (mesmo número) via Servidor Web</a></span></li>
   </ul></div>

   <div class="menu-card" style="background:#fff; border:1px solid #d0d7de; border-radius:6px; padding:12px; box-shadow:0 1px 3px rgba(0,0,0,0.05);">

   <h3 style="margin:0; color: white; font-size:16px; border-bottom:1px solid #eee; border-radius: 6px 6px 0 0;border-bottom: 1px solid #ddd; font-weight: bold;padding: 8px 12px;padding-bottom:4px; background-color: #004080;">Arquivos de contabilidade</h3>

   <ul style="list-style:none; padding:0; margin:0;">
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TFolhaMNovo():New(.F.)'); return false;">Gerar arquivo Folhamatic layout 1.9 </a></span></li>
     <li><span><i class="fas fa-file-invoice-dollar" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVMan210():New(::oWnd)'); return false;">Gerar arquivo de recebimentos</a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TFolha20():New(.T.)'); return false;">Gerar arquivo Folhamatic layout 2.0 (2009) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TContMatic():New(1)'); return false;">Gerar arquivo Contmatic (Entradas/Saidas) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TContMatic():New(2)'); return false;">Gerar arquivo Contmatic (Lançtos.Contabeis: Pagos/Recebidos) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter( {|oMeter|TSintegra2009():TxtInventario_Contmatic(oMeter)},"Processando","Aguarde")'); return false;">Gerar arquivo Contmatic (Inventário) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TFolhaMCompra():New()'); return false;">Gerar arquivo Folhamatic layout 2.0 (Notas de Compras) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TFolha20():New(.T., .T.)'); return false;">Gerar arquivo Folhamatic layout 2.0.06 </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TFolhaMCompra():New(.T.)'); return false;">Gerar arquivo Folhamatic layout 2.0.06 (Notas de Compras) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVArq001():New()'); return false;">Gerar arquivo Prosoft (Lançtos.Contabeis: Pagos/Recebidos) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter( {|oMeter|TSintegra2009():TxtInventario_Prosoft(oMeter)},"Processando","Aguarde")'); return false;">Gerar arquivo Prosoft (Inventário) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVArq002():New()'); return false;">Gerar arquivo Questor (Lançtos.Contabeis: Pagos/Recebidos) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVArq003():New()'); return false;">Gerar arquivo Folhamatic (Lançtos.Contabeis: Pagos/Recebidos) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVArq004():New()'); return false;">Gerar Arquivo para o Sistema Domínio (Lançamentos Contábeis: Pagos/Recebidos) </a></span></li>
     <li><span><i class="fas fa-folder" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| TNfeMonitor():GeraNfe(oMeter,1)},"Processando","Aguarde")'); return false;">Arquivos NFe (gera XML das notas-saídas)</a></span></li>
     <li><span><i class="fas fa-file-code" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| TNfeMonitor():GeraNfe(oMeter,2)},"Processando","Aguarde")'); return false;">Arquivos NFe (gera XML das notas-por cliente)</a></span></li>
     <li><span><i class="fas fa-file-import" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| TNfeMonitor():GeraNfeEnt(oMeter,1)},"Processando","Aguarde")'); return false;">Arquivos NFe (gera XML das notas-entradas)</a></span></li>
     <li><span><i class="fas fa-file-import" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| TNfeMonitor():GeraNfeEnt(oMeter,2)},"Processando","Aguarde")'); return false;">Arquivos NFe (gera XML das notas-entradas-por fornecedor)</a></span></li>
     <li><span><i class="fas fa-file-invoice" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVRLis256():New(::oWnd)'); return false;">Relatório de Conferência de XML de Notas de Entrada</a></span></li>
     <li><span><i class="fas fa-file-signature" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| TNFeMonitor():GeraCartas(oMeter)},"Processando","Aguarde")'); return false;">Arquivos de Carta de Correção (gera XML das cartas)</a></span></li>
     <li><span><i class="fas fa-table" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TEContab():New(2)'); return false;">Tabela de Produtos para Sistema E-Contab </a></span></li>
     <li><span><i class="fas fa-file-invoice-dollar" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVRlis260():New(::oWnd)'); return false;">Escritório '1 - 100 clientes     (contabilidade)</a></span></li>
     <li><span><i class="fas fa-file-invoice-dollar" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVRlis261():New(::oWnd)'); return false;">Escritório '2 - 100 fornecedores (contabilidade)</a></span></li>
     <li><span><i class="fas fa-box" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVRlis262():New(::oWnd)'); return false;">Escritório '3 - 100 produtos (saídas)(contabilidade)</a></span></li>
     <li><span><i class="fas fa-box" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVRlis263():New(::oWnd)'); return false;">Escritório '4 - 100 produtos (entrada)(contabilidade)</a></span></li>
   </ul></div>

   <div class="menu-card" style="background:#fff; border:1px solid #d0d7de; border-radius:6px; padding:12px; box-shadow:0 1px 3px rgba(0,0,0,0.05);">

   <h3 style="margin:0; color: white; font-size:16px; border-bottom:1px solid #eee; border-radius: 6px 6px 0 0;border-bottom: 1px solid #ddd; font-weight: bold;padding: 8px 12px;padding-bottom:4px; background-color: #004080;">Arquivos Fiscais</h3>

   <ul style="list-style:none; padding:0; margin:0;">
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TSintegra2009():New()'); return false;">Gerar Sintegra 2009 (a partir 01-05-2009)</a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TSintegra2009():Registro88()'); return false;">Gerar Sintegra 2009 (registro 88)</a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter( {|oMeter|TSintegra2009():Processa74(oMeter,,,,,,,.T.)},"Processando","Aguarde")'); return false;">Gerar Sintegra 2009 (somente - registro 74)</a></span></li>
     <li><span><i class="fas fa-file-invoice" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm040():New()'); return false;">SPED Fiscal - Cadastro do Contador</a></span></li>
     <li><span><i class="fas fa-file-invoice" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm045():New(::oWnd)'); return false;">SPED Fiscal - Gerar arquivo fiscal</a></span></li>
     <li><span><i class="fas fa-folder" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm044():New(::oWnd)'); return false;">SPED PIS/COFINS - Gerar arquivo</a></span></li>
   </ul></div>
   </div>

</body>
</html>

This is TWebView2() is not getting the HTML option

Code: Select all | Expand

/*========================================================================
                       SISREV INFORMATICA LTDA.
              Prestando serviços com qualidade desde 1993
                       CNPJ: 02.623.572/0001-52
                       CNPJ: 02.623.572/0002-33
                          www.sisrev.com.br
  ========================================================================
   Sistema..: Sisrev-Win 5.0
   Autor(es): Ariovaldo da Costa Foliene
   Aplicação: TVWeb
   Notas....: Abre as páginas do Sisrev-Web - Microsoft Edge WebView2
   Data.....: 10-03-2025  
  ========================================================================
   TVisual--+
            |
            +--TVisualForm--+  
                            |
                            +--TVWeb.prg
   ========================================================================
    
*/

#include "fivewin.ch"
#include "Objects.ch"
#include "\sis\fsql901\include\rede.ch"

STATIC oWV

* ========================================================================
CLASS TVWeb FROM TVisualForm
* ========================================================================
  DATA cPage, oWebView
  
  METHOD New() CONSTRUCTOR
  METHOD AddControl()
  METHOD BuildMenu()
    
END CLASS

* ========================================================================
METHOD New( xcPage, xcNome ) CLASS TVWeb
* ========================================================================

#ifdef __XHARBOUR__
  
  TVWebMsg() ; return Self
  
#endif
    
  DEFAULT xcPage := ""
  DEFAULT xcNome := Empresas(1)  
  
  ::Super:New("rel")
  
  ::cNome       := xcNome
  ::cPage       := "http://localhost:3000/" + xcPage  
  ::lToolBar    := FALSE  
  ::lTask       := FALSE
  ::lRastrear   := FALSE
   
  ::AddControl()
  
  ::oWebView:oWnd:bValid := {|| ::oWebView:Terminate(),;
                                 WndMain():Show()     ,;
                                 WndMain():SetFocus() ,;
                                 TRUE                 }
                                
return Self

* ========================================================================
METHOD AddControl() CLASS TVWeb
* ========================================================================

#ifndef __XHARBOUR__

  ::oWebView:= TWebView2():New()
  
  ::oWebView:SetTitle( WebTitle("Sisrev-Web" + ::cNome ) ) 
  ::oWebView:oWnd:bResized := {|| ::oWebView:oWnd:Maximize() }
  ::oWebView:oWnd:SetMenu( ::BuildMenu() )  
  ::oWebView:oWnd:SetColor( CLR_BLACK ,nRGB( 231, 242, 255 ) )
  ::oWebView:oWnd:l2007    := .T.
  ::oWebView:SetSize( WndWidth(  ::oWebView:oWnd:hWnd ) - 15,;
                      WndHeight( ::oWebView:oWnd:hWnd ) - 58 )  

  ::oWebView:SetUserAgent( WebAgent())                                            
  ::oWebView:Navigate( ::cPage )                     
  
  ::oWebView:bOnBind  := { |cJson| ExecWeb(cJson) }   
  
  ::oWebView:OpenDevToolsWindow(.F.)
  ::oWebView:ShowDownloads(.F.)    
  ::oWebView:oWnd:bInit := {|| ::oWebView:oWnd:Maximize() }
                                    
  ::oWebView:Run()  
  ::oWebView:Destroy()
    
  WndMain():Hide()  
 
#endif

return nil

* ========================================================================
Function ExecWeb( cData )
* ========================================================================
  local cEndPoint := ""
    
  if ValType( cData ) == "A"
  
#ifdef __HARBOUR__  
     cData := HB_VALTOEXP(cData) /* converts any data type to STR Value */
     cData := strtran( cData, "{", "")
     cData := strtran( cData, "}", "")
     cData := strtran( cData, "'", "")
#endif

  Endif  
  
  cEndPoint:= substr( cData, aT(":", cData ) + 1 , 100 )    
  cData    := strtran("#classe=" + cData +"#EndPoint="+cEndPoint, "#", "&" )
   
  OnGet( cData  )
  
return nil

* =========================================================================
Function StartTVWeb(cFileName) 
* =========================================================================

 if IfExist(oWV)
    oWV:oWebView:Navigate("http://localhost:3000/" + cFileName) 
 Else 
    oWV := TVWeb():New(cFileName)
 Endif
 
return nil

* =========================================================================
METHOD BuildMenu() CLASS TVWeb
* =========================================================================
  local oMenu

  MENU oMenu 
     MENUITEM "Fechar" ACTION ::oWebView:oWnd:End()
  ENDMENU
   
return oMenu 

* =========================================================================
Function TVWebMsg()
return Msg("** Esta funcionidade somente para HarBour **")  
* =========================================================================

* =========================================================================
Function WebAgent()
* =========================================================================
return "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)"+;
       " AppleWebKit/537.36 (KHTML, like Gecko)"               +;
       " Chrome/103.0.5060.53 Mobile Safari/537.36" 
       
]]>

HTML see <script>

Code: Select all | Expand

  
  <!DOCTYPE html>
  <html lang="pt-br">
  <head>
  
  <meta charset="UTF-8">
  <title>Menu</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
  <link rel="stylesheet" href="/easyui/themes/color.css">
  <link rel="stylesheet" href="/easyui/themes/metro/easyui.css">
  <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
  <script src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
      
    
  <script>

    function ExecMenu(opcao){
    
         alert("Executando ExecMenu: " + opcao);              <<<< ----- ok
         
         window.chrome.webview.postmessage(opcao);            <<<< ---- :-( não funciona
		 SendToFWH( opcao );                                  <<<< ---- :-( não funciona 
   	}
 
  </script>
  
  <style>
   
  body {
    font-family: "Segoe UI", sans-serif;
    padding: 20px;
    background: #f4f6f9;
  }
 
  .menu-card {
    padding: 0;
    padding-bottom: 12px;
    background: #fff;
    border: 1px solid #d0d7de;
    border-radius: 6px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.05);
    margin-bottom: 20px;
  }
 
  h3.menu-titulo {
    margin: 0;
    padding: 8px 12px;
    background-color: 'f6f6f6;
    color: '0078d4;
    font-size: 16px;
    font-weight: bold;
    border-bottom: 1px solid 'ddd;
    border-radius: 6px 6px 0 0;
  }
 
  ul {
    margin: 2px 0;
    padding: 0;
  }
 
  li, li a {
    list-style: none;
    margin: 0;
    padding: 0;
    border: none;
    line-height: 1.2;
  }
 
  .menu-card li {
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
 
  .menu-card li:hover {
    background: #B0E2FF;
  }
 
  li a {
    color: #0078d4;
    text-decoration: underline;
    display: block;
    padding: 2px 2px;
  }
 
  li a:hover {
    text-decoration: none;
  }
  
  li span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  }
  
  li img, li i {
    vertical-align: middle;
    display: inline-block;
    margin-right: 6px;  
  }
    
  </style>
    
  </head>
  <body>
  

   <div class="menu-container" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px;">

   <div class="menu-card" style="background:#fff; border:1px solid #d0d7de;   border-radius:6px; padding:12px; box-shadow:0 1px 3px rgba(0,0,0,0.05);">
   <h3 style="margin:0; color: white; font-size:16px; border-bottom:1px solid #eee; border-radius: 6px 6px 0 0;border-bottom: 1px solid #ddd; font-weight: bold;padding: 8px 12px;padding-bottom:4px; background-color: #004080;">Arquivos</h3>
   <ul style="list-style:none; padding:0; margin:0; white-space: nowrap;">
     <li><span><i class="fas fa-dollar-sign" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVPla000():New( ::oWnd )'); return false;">Captura lista de preços</a></span></li>
     <li><span><i class="fas fa-box" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm087():New(::oWnd)'); return false;">Gerar arquivo de produtos (Global)</a></span></li>
     <li><span><i class="fas fa-envelope" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('EnviaLista()'); return false;">Enviar lista de preco por email</a></span></li>
     <li><span><i class="fas fa-cog" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCfg():New(::oWnd)'); return false;">Configurações Gerais</a></span></li>
     <li><span><i class="fas fa-user" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm046():New(::oWnd, ::oWnd:oMenu)'); return false;">Vendedor/Usuário/Representante</a></span></li>
     <li><span><i class="fas fa-user-lock" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm124():New(::oWnd)'); return false;">Ligar/Desligar direitos para vários usuários</a></span></li>
    </ul>
</div>

   <div class="menu-card" style="background:#fff; border:1px solid #d0d7de; border-radius:6px; padding:12px; box-shadow:0 1px 3px rgba(0,0,0,0.05);">

   <h3 style="margin:0; color: white; font-size:16px; border-bottom:1px solid #eee; border-radius: 6px 6px 0 0;border-bottom: 1px solid #ddd; font-weight: bold;padding: 8px 12px;padding-bottom:4px; background-color: #004080;">Processos especiais</h3>

   <ul style="list-style:none; padding:0; margin:0;">
     <li><span><i class="fas fa-database" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('Msg("Solicite informações para restaurar copias de segurança")'); return false;">Restaurar Cópias de Segurança</a></span></li>
     <li><span><i class="fas fa-table" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckTab():New(.T., ::oWnd)'); return false;">Conferência das tabelas</a></span></li>
     <li><span><i class="fas fa-table" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| RecnoTab(oMeter) },"aguarde","processando")'); return false;">Recupera tabela-especial</a></span></li>
     <li><span><i class="fas fa-exchange-alt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TrocaTbl()'); return false;">Troca de tabela - manutenção</a></span></li>
     <li><span><i class="fas fa-upload" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TMigra():New(.T.,,,.T.)'); return false;">Carrega tabela de dados - manutenção</a></span></li>
     <li><span><i class="fas fa-file-archive" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TBackup():New(2, ::oWnd)'); return false;">Backup dos Arquivos XML-NFe</a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TBackup():New(3, ::oWnd)'); return false;">Enviar todos os XML-NFe por Cliente</a></span></li>
     <li><span><i class="fas fa-terminal" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('ManutencaoQuery()'); return false;">Manutenção por query</a></span></li>
     <li><span><i class="fas fa-wrench" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('ManutencaoPorFuncao()'); return false;">Manutenção por função</a></span></li>
     <li><span><i class="fas fa-terminal" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('CriaManutencaoQuery()'); return false;">Cria Manutenção por query</a></span></li>
     <li><span><i class="fas fa-tools" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('CriaManutencaoPorFuncao()'); return false;">Cria Manutenção por função</a></span></li>
     <li><span><i class="fas fa-folder-open" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm086():New()'); return false;">Organizar Arquivos</a></span></li>
     <li><span><i class="fas fa-file-medical" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('ManTableFrm086()'); return false;">Manutenção arquivos - corrigir integridade</a></span></li>
     <li><span><i class="fas fa-tools" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('Reparar()'); return false;">Manutenção de tabela</a></span></li>
     <li><span><i class="fas fa-circle" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():Ler(::oWnd)'); return false;">Registros de eventos</a></span></li>
     <li><span><i class="fas fa-history" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():LerPed(::oWnd)'); return false;">Histórico de pedidos de venda</a></span></li>
     <li><span><i class="fas fa-history" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():LerPedComp(::oWnd)'); return false;">Histórico de pedidos de compra</a></span></li>
     <li><span><i class="fas fa-history" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():LerPedCompDiversos(::oWnd)'); return false;">Histórico de pedidos de compra - diversos</a></span></li>
     <li><span><i class="fas fa-receipt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():VerDuplicata(1,::oWnd)'); return false;">Histórico de duplicatas - Contas a pagar</a></span></li>
     <li><span><i class="fas fa-receipt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TCheckDic():VerDuplicata(2,::oWnd)'); return false;">Histórico de duplicatas - Contas a receber</a></span></li>
     <li><span><i class="fas fa-share-square" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('SuporteSis()'); return false;">Enviar informações do sistema</a></span></li>
     <li><span><i class="fas fa-user" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TUser():New(::oWnd)'); return false;">Usuários conectados</a></span></li>
     <li><span><i class="fas fa-database" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TSysInfo():New(::oWnd)'); return false;">Informações do MySQL</a></span></li>
     <li><span><i class="fas fa-cloud-upload-alt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgRun("Verificando versão no Servidor FTP", "Sisrev Informática Ltda.", {|oMsg| ChamaGoFTP()} )'); return false;">Atualizar versão do Sistema por FTP</a></span></li>
     <li><span><i class="fas fa-cloud-upload-alt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVMan233():New(::oWnd)'); return false;">Atualizar NFe_Util por FTP</a></span></li>
     <li><span><i class="fas fa-cloud-upload-alt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVMan234():New(::oWnd)'); return false;">Atualizar Fontes do Danfe por FTP</a></span></li>
     <li><span><i class="fas fa-sync" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgRun("Verificando versão no Servidor Web", "Sisrev Informática Ltda.", {|oMsg| ChamaGoWeb(1)} )'); return false;">Atualizar versão via Servidor Web</a></span></li>
     <li><span><i class="fas fa-sync-alt" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgRun("Verificando versão no Servidor Web", "Sisrev Informática Ltda.", {|oMsg| ChamaGoWeb(2)} )'); return false;">Substituir versão (mesmo número) via Servidor Web</a></span></li>
   </ul></div>

   <div class="menu-card" style="background:#fff; border:1px solid #d0d7de; border-radius:6px; padding:12px; box-shadow:0 1px 3px rgba(0,0,0,0.05);">

   <h3 style="margin:0; color: white; font-size:16px; border-bottom:1px solid #eee; border-radius: 6px 6px 0 0;border-bottom: 1px solid #ddd; font-weight: bold;padding: 8px 12px;padding-bottom:4px; background-color: #004080;">Arquivos de contabilidade</h3>

   <ul style="list-style:none; padding:0; margin:0;">
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TFolhaMNovo():New(.F.)'); return false;">Gerar arquivo Folhamatic layout 1.9 </a></span></li>
     <li><span><i class="fas fa-file-invoice-dollar" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVMan210():New(::oWnd)'); return false;">Gerar arquivo de recebimentos</a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TFolha20():New(.T.)'); return false;">Gerar arquivo Folhamatic layout 2.0 (2009) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TContMatic():New(1)'); return false;">Gerar arquivo Contmatic (Entradas/Saidas) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TContMatic():New(2)'); return false;">Gerar arquivo Contmatic (Lançtos.Contabeis: Pagos/Recebidos) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter( {|oMeter|TSintegra2009():TxtInventario_Contmatic(oMeter)},"Processando","Aguarde")'); return false;">Gerar arquivo Contmatic (Inventário) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TFolhaMCompra():New()'); return false;">Gerar arquivo Folhamatic layout 2.0 (Notas de Compras) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TFolha20():New(.T., .T.)'); return false;">Gerar arquivo Folhamatic layout 2.0.06 </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TFolhaMCompra():New(.T.)'); return false;">Gerar arquivo Folhamatic layout 2.0.06 (Notas de Compras) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVArq001():New()'); return false;">Gerar arquivo Prosoft (Lançtos.Contabeis: Pagos/Recebidos) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter( {|oMeter|TSintegra2009():TxtInventario_Prosoft(oMeter)},"Processando","Aguarde")'); return false;">Gerar arquivo Prosoft (Inventário) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVArq002():New()'); return false;">Gerar arquivo Questor (Lançtos.Contabeis: Pagos/Recebidos) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVArq003():New()'); return false;">Gerar arquivo Folhamatic (Lançtos.Contabeis: Pagos/Recebidos) </a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVArq004():New()'); return false;">Gerar Arquivo para o Sistema Domínio (Lançamentos Contábeis: Pagos/Recebidos) </a></span></li>
     <li><span><i class="fas fa-folder" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| TNfeMonitor():GeraNfe(oMeter,1)},"Processando","Aguarde")'); return false;">Arquivos NFe (gera XML das notas-saídas)</a></span></li>
     <li><span><i class="fas fa-file-code" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| TNfeMonitor():GeraNfe(oMeter,2)},"Processando","Aguarde")'); return false;">Arquivos NFe (gera XML das notas-por cliente)</a></span></li>
     <li><span><i class="fas fa-file-import" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| TNfeMonitor():GeraNfeEnt(oMeter,1)},"Processando","Aguarde")'); return false;">Arquivos NFe (gera XML das notas-entradas)</a></span></li>
     <li><span><i class="fas fa-file-import" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| TNfeMonitor():GeraNfeEnt(oMeter,2)},"Processando","Aguarde")'); return false;">Arquivos NFe (gera XML das notas-entradas-por fornecedor)</a></span></li>
     <li><span><i class="fas fa-file-invoice" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVRLis256():New(::oWnd)'); return false;">Relatório de Conferência de XML de Notas de Entrada</a></span></li>
     <li><span><i class="fas fa-file-signature" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter({|oMeter| TNFeMonitor():GeraCartas(oMeter)},"Processando","Aguarde")'); return false;">Arquivos de Carta de Correção (gera XML das cartas)</a></span></li>
     <li><span><i class="fas fa-table" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TEContab():New(2)'); return false;">Tabela de Produtos para Sistema E-Contab </a></span></li>
     <li><span><i class="fas fa-file-invoice-dollar" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVRlis260():New(::oWnd)'); return false;">Escritório '1 - 100 clientes     (contabilidade)</a></span></li>
     <li><span><i class="fas fa-file-invoice-dollar" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVRlis261():New(::oWnd)'); return false;">Escritório '2 - 100 fornecedores (contabilidade)</a></span></li>
     <li><span><i class="fas fa-box" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVRlis262():New(::oWnd)'); return false;">Escritório '3 - 100 produtos (saídas)(contabilidade)</a></span></li>
     <li><span><i class="fas fa-box" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVRlis263():New(::oWnd)'); return false;">Escritório '4 - 100 produtos (entrada)(contabilidade)</a></span></li>
   </ul></div>

   <div class="menu-card" style="background:#fff; border:1px solid #d0d7de; border-radius:6px; padding:12px; box-shadow:0 1px 3px rgba(0,0,0,0.05);">

   <h3 style="margin:0; color: white; font-size:16px; border-bottom:1px solid #eee; border-radius: 6px 6px 0 0;border-bottom: 1px solid #ddd; font-weight: bold;padding: 8px 12px;padding-bottom:4px; background-color: #004080;">Arquivos Fiscais</h3>

   <ul style="list-style:none; padding:0; margin:0;">
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TSintegra2009():New()'); return false;">Gerar Sintegra 2009 (a partir 01-05-2009)</a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TSintegra2009():Registro88()'); return false;">Gerar Sintegra 2009 (registro 88)</a></span></li>
     <li><span><i class="fas fa-file-export" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('MsgMeter( {|oMeter|TSintegra2009():Processa74(oMeter,,,,,,,.T.)},"Processando","Aguarde")'); return false;">Gerar Sintegra 2009 (somente - registro 74)</a></span></li>
     <li><span><i class="fas fa-file-invoice" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm040():New()'); return false;">SPED Fiscal - Cadastro do Contador</a></span></li>
     <li><span><i class="fas fa-file-invoice" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm045():New(::oWnd)'); return false;">SPED Fiscal - Gerar arquivo fiscal</a></span></li>
     <li><span><i class="fas fa-folder" style="margin-right:6px;"></i><a href="#" onclick="javascript:ExecMenu('TVFrm044():New(::oWnd)'); return false;">SPED PIS/COFINS - Gerar arquivo</a></span></li>
   </ul></div>
   </div>

</body>
</html>

This is TWebView2() is not getting the HTML option

Code: Select all | Expand

/*========================================================================
                       SISREV INFORMATICA LTDA.
              Prestando serviços com qualidade desde 1993
                       CNPJ: 02.623.572/0001-52
                       CNPJ: 02.623.572/0002-33
                          www.sisrev.com.br
  ========================================================================
   Sistema..: Sisrev-Win 5.0
   Autor(es): Ariovaldo da Costa Foliene
   Aplicação: TVWeb
   Notas....: Abre as páginas do Sisrev-Web - Microsoft Edge WebView2
   Data.....: 10-03-2025  
  ========================================================================
   TVisual--+
            |
            +--TVisualForm--+  
                            |
                            +--TVWeb.prg
   ========================================================================
    
*/

#include "fivewin.ch"
#include "Objects.ch"
#include "\sis\fsql901\include\rede.ch"

STATIC oWV

* ========================================================================
CLASS TVWeb FROM TVisualForm
* ========================================================================
  DATA cPage, oWebView
  
  METHOD New() CONSTRUCTOR
  METHOD AddControl()
  METHOD BuildMenu()
    
END CLASS

* ========================================================================
METHOD New( xcPage, xcNome ) CLASS TVWeb
* ========================================================================

#ifdef __XHARBOUR__
  
  TVWebMsg() ; return Self
  
#endif
    
  DEFAULT xcPage := ""
  DEFAULT xcNome := Empresas(1)  
  
  ::Super:New("rel")
  
  ::cNome       := xcNome
  ::cPage       := "http://localhost:3000/" + xcPage  
  ::lToolBar    := FALSE  
  ::lTask       := FALSE
  ::lRastrear   := FALSE
   
  ::AddControl()
  
  ::oWebView:oWnd:bValid := {|| ::oWebView:Terminate(),;
                                 WndMain():Show()     ,;
                                 WndMain():SetFocus() ,;
                                 TRUE                 }
                                
return Self

* ========================================================================
METHOD AddControl() CLASS TVWeb
* ========================================================================

#ifndef __XHARBOUR__

  ::oWebView:= TWebView2():New()
  
  ::oWebView:SetTitle( WebTitle("Sisrev-Web" + ::cNome ) ) 
  ::oWebView:oWnd:bResized := {|| ::oWebView:oWnd:Maximize() }
  ::oWebView:oWnd:SetMenu( ::BuildMenu() )  
  ::oWebView:oWnd:SetColor( CLR_BLACK ,nRGB( 231, 242, 255 ) )
  ::oWebView:oWnd:l2007    := .T.
  ::oWebView:SetSize( WndWidth(  ::oWebView:oWnd:hWnd ) - 15,;
                      WndHeight( ::oWebView:oWnd:hWnd ) - 58 )  

  ::oWebView:SetUserAgent( WebAgent())                                            
  ::oWebView:Navigate( ::cPage )                     
  
  ::oWebView:bOnBind  := { |cJson| ExecWeb(cJson) }   
  
  ::oWebView:OpenDevToolsWindow(.F.)
  ::oWebView:ShowDownloads(.F.)    
  ::oWebView:oWnd:bInit := {|| ::oWebView:oWnd:Maximize() }
                                    
  ::oWebView:Run()  
  ::oWebView:Destroy()
    
  WndMain():Hide()  
 
#endif

return nil

* ========================================================================
Function ExecWeb( cData )
* ========================================================================
  local cEndPoint := ""
    
  if ValType( cData ) == "A"
  
#ifdef __HARBOUR__  
     cData := HB_VALTOEXP(cData) /* converts any data type to STR Value */
     cData := strtran( cData, "{", "")
     cData := strtran( cData, "}", "")
     cData := strtran( cData, "'", "")
#endif

  Endif  
  
  cEndPoint:= substr( cData, aT(":", cData ) + 1 , 100 )    
  cData    := strtran("#classe=" + cData +"#EndPoint="+cEndPoint, "#", "&" )
   
  OnGet( cData  )
  
return nil

* =========================================================================
Function StartTVWeb(cFileName) 
* =========================================================================

 if IfExist(oWV)
    oWV:oWebView:Navigate("http://localhost:3000/" + cFileName) 
 Else 
    oWV := TVWeb():New(cFileName)
 Endif
 
return nil

* =========================================================================
METHOD BuildMenu() CLASS TVWeb
* =========================================================================
  local oMenu

  MENU oMenu 
     MENUITEM "Fechar" ACTION ::oWebView:oWnd:End()
  ENDMENU
   
return oMenu 

* =========================================================================
Function TVWebMsg()
return Msg("** Esta funcionidade somente para HarBour **")  
* =========================================================================

* =========================================================================
Function WebAgent()
* =========================================================================
return "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)"+;
       " AppleWebKit/537.36 (KHTML, like Gecko)"               +;
       " Chrome/103.0.5060.53 Mobile Safari/537.36" 
       
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: SendToFWH() - TWebView2 :: Reply by Antonio Linares]]> 2025-03-26T22:52:01-06:00 2025-03-26T22:52:01-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45569&p=278609#p278609
Desde el DevToolsWindow, en la consola, mira a ver si se genera algún error de javascript]]>

Desde el DevToolsWindow, en la consola, mira a ver si se genera algún error de javascript]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: SendToFWH() - TWebView2 :: Reply by Ari]]> 2025-03-27T01:51:18-06:00 2025-03-27T01:51:18-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45569&p=278610#p278610
I did this and it says that SetToFWH() doesn't exist, but I've already used it on another page and it worked. The SendToFWH() function has to be created in a .js file or in the HTML using <script>. I just couldn't figure out what's happening because inside the functions I receive the alert(); that's going there, but then SendToFHW() doesn't do anything. The idea is to use the page as an interface and run the real FiveWin functions/classes, generate other pages and return the new HTML to the WebView.

I'm using TWebView2, it already works with other parts.

I asked GPT, they gave me some suggestions, but without success.]]>

I did this and it says that SetToFWH() doesn't exist, but I've already used it on another page and it worked. The SendToFWH() function has to be created in a .js file or in the HTML using <script>. I just couldn't figure out what's happening because inside the functions I receive the alert(); that's going there, but then SendToFHW() doesn't do anything. The idea is to use the page as an interface and run the real FiveWin functions/classes, generate other pages and return the new HTML to the WebView.

I'm using TWebView2, it already works with other parts.

I asked GPT, they gave me some suggestions, but without success.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: SendToFWH() - TWebView2 :: Reply by Antonio Linares]]> 2025-03-27T02:15:41-06:00 2025-03-27T02:15:41-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45569&p=278613#p278613
From the console of DevToolsWindow write this:

SendToFWH( "test" );

and check if you get it from your app]]>

From the console of DevToolsWindow write this:

SendToFWH( "test" );

and check if you get it from your app]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Using a webview from an existing window :: Author Silvio.Falconi]]> 2025-03-26T06:11:28-06:00 2025-03-26T06:11:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278567#p278567 How I can make ?

Webview2 createa window ok but I need to insert a menupulldown and a ribbonbar how I can make ?


function Main()
local oWnd,oWebView,cHtml := Html()

DEFINE WINDOW oWnd TITLE "Test" MDI ;
MENU BuildMenu()


ACTIVATE WINDOW oWnd CENTER
return nil]]>
How I can make ?

Webview2 createa window ok but I need to insert a menupulldown and a ribbonbar how I can make ?


function Main()
local oWnd,oWebView,cHtml := Html()

DEFINE WINDOW oWnd TITLE "Test" MDI ;
MENU BuildMenu()


ACTIVATE WINDOW oWnd CENTER
return nil]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by cnavarro]]> 2025-03-26T07:43:51-06:00 2025-03-26T07:43:51-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278570#p278570 viewtopic.php?p=278426#p278426]]> viewtopic.php?p=278426#p278426]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by Silvio.Falconi]]> 2025-03-26T07:52:08-06:00 2025-03-26T07:52:08-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278571#p278571
cnavarro wrote: Wed Mar 26, 2025 1:43 pm Look
viewtopic.php?p=278426#p278426
tested but I see a white window blank

Code: Select all | Expand

function Main()

   local oWnd, oWebView 
   local cHtml := Html()
   
   DEFINE WINDOW oWnd TITLE "Dashboard"

   oWebView = TWebView2():New( oWnd )

   oWebView:SetHtml( memoRead(cHtml ) )

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

   return nil
perhaps run only with a html saved on disk not on memory]]>
cnavarro wrote: Wed Mar 26, 2025 1:43 pm Look
viewtopic.php?p=278426#p278426
tested but I see a white window blank

Code: Select all | Expand

function Main()

   local oWnd, oWebView 
   local cHtml := Html()
   
   DEFINE WINDOW oWnd TITLE "Dashboard"

   oWebView = TWebView2():New( oWnd )

   oWebView:SetHtml( memoRead(cHtml ) )

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

   return nil
perhaps run only with a html saved on disk not on memory]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by alerchster]]> 2025-03-26T08:56:31-06:00 2025-03-26T08:56:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278572#p278572

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oWnd, oWebView 

   DEFINE WINDOW oWnd TITLE "Dashboard"

   oWebView = TWebView2():New( oWnd )

   oWebView:SetHtml( dash() )

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

return nil      

function dash()

local cHtml

TEXT INTO cHtml
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Professional Dashboard with Charts</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: Arial, sans-serif;
        }

        body {
            background: #f0f2f5;
            color: #333;
            line-height: 1.6;
        }

        .container {
            display: flex;
            min-height: 100vh;
        }

        .sidebar {
            width: 250px;
            background: #2c3e50;
            color: white;
            position: fixed;
            height: 100%;
            padding: 20px;
        }

        .sidebar h2 {
            font-size: 24px;
            margin-bottom: 30px;
            text-align: center;
        }

        .sidebar ul {
            list-style: none;
        }

        .sidebar ul li {
            margin: 20px 0;
        }

        .sidebar ul li a {
            color: white;
            text-decoration: none;
            display: flex;
            align-items: center;
            padding: 10px;
            border-radius: 5px;
            transition: background 0.3s;
        }

        .sidebar ul li a:hover {
            background: #34495e;
        }

        .sidebar ul li a i {
            margin-right: 10px;
            font-size: 18px;
        }

        .main-content {
            flex: 1;
            margin-left: 250px;
            padding: 20px;
        }

        .dashboard-container {
            max-width: 1400px;
            margin: 0 auto;
        }

        .header {
            background: #2c3e50;
            color: white;
            padding: 20px;
            border-radius: 10px;
            margin-bottom: 20px;
        }

        .header h1 {
            font-size: 24px;
        }

        .grid-container {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
        }

        .card {
            background: white;
            border-radius: 10px;
            padding: 20px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
            transition: transform 0.3s;
        }

        .card:hover {
            transform: translateY(-5px);
        }

        .card h3 {
            margin-bottom: 15px;
            color: #2c3e50;
        }

        .stats-card {
            display: flex;
            align-items: center;
            gap: 15px;
        }

        .stats-icon {
            width: 50px;
            height: 50px;
            background: #3498db;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 24px;
        }

        .chart-container {
            height: 200px;
            position: relative;
        }

        .progress-bar {
            width: 100%;
            height: 20px;
            background: #eee;
            border-radius: 10px;
            overflow: hidden;
            margin-top: 10px;
        }

        .progress {
            height: 100%;
            background: #2ecc71;
            width: 0;
        }

        .progress-75 { width: 75%; }
        .progress-50 { width: 50%; }
        .progress-25 { width: 25%; }

        @media (max-width: 768px) {
            .sidebar {
                width: 200px;
            }

            .main-content {
                margin-left: 200px;
            }

            .grid-container {
                grid-template-columns: 1fr;
            }
        }

        @media (max-width: 480px) {
            .sidebar {
                width: 70px;
            }

            .sidebar h2,
            .sidebar ul li a span {
                display: none;
            }

            .main-content {
                margin-left: 70px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="sidebar">
            <h2>Menu</h2>
            <ul>
                <li><a href="#"><i>🏠</i><span>Dashboard</span></a></li>
                <li><a href="#"><i>📊</i><span>Analytics</span></a></li>
                <li><a href="#"><i>👥</i><span>Users</span></a></li>
                <li><a href="#"><i>⚙️</i><span>Settings</span></a></li>
                <li><a href="#"><i>🚪</i><span>Logout</span></a></li>
            </ul>
        </div>

        <div class="main-content">
            <div class="dashboard-container">
                <div class="header">
                    <h1>Dashboard Overview</h1>
                </div>

                <div class="grid-container">
                    <div class="card stats-card">
                        <div class="stats-icon">📊</div>
                        <div>
                            <h3>Revenue</h3>
                            <p>$24,500</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">👥</div>
                        <div>
                            <h3>Users</h3>
                            <p>1,234</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">⭐</div>
                        <div>
                            <h3>Rating</h3>
                            <p>4.8/5</p>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Sales Trend (Monthly)</h3>
                        <div class="chart-container">
                            <canvas id="salesChart"></canvas>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Project Progress</h3>
                        <p>Development</p>
                        <div class="progress-bar"><div class="progress progress-75"></div></div>
                        <p>Design</p>
                        <div class="progress-bar"><div class="progress progress-50"></div></div>
                        <p>Testing</p>
                        <div class="progress-bar"><div class="progress progress-25"></div></div>
                    </div>

                    <div class="card">
                        <h3>User Distribution</h3>
                        <div class="chart-container">
                            <canvas id="userChart"></canvas>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script>
        // Sales Trend Line Chart
        const salesCtx = document.getElementById('salesChart').getContext('2d');
        new Chart(salesCtx, {
            type: 'line',
            data: {
                labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
                datasets: [{
                    label: 'Sales ($)',
                    data: [12000, 19000, 15000, 25000, 22000, 30000],
                    borderColor: '#3498db',
                    backgroundColor: 'rgba(52, 152, 219, 0.2)',
                    fill: true,
                    tension: 0.4
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });

        // User Distribution Bar Chart
        const userCtx = document.getElementById('userChart').getContext('2d');
        new Chart(userCtx, {
            type: 'bar',
            data: {
                labels: ['New', 'Returning', 'Inactive'],
                datasets: [{
                    label: 'Users',
                    data: [500, 600, 134],
                    backgroundColor: [
                        '#2ecc71',
                        '#3498db',
                        '#e74c3c'
                    ]
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });
    </script>
</body>
</html>
ENDTEXT
   
  
RETURN cHtml
]]>

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oWnd, oWebView 

   DEFINE WINDOW oWnd TITLE "Dashboard"

   oWebView = TWebView2():New( oWnd )

   oWebView:SetHtml( dash() )

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

return nil      

function dash()

local cHtml

TEXT INTO cHtml
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Professional Dashboard with Charts</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: Arial, sans-serif;
        }

        body {
            background: #f0f2f5;
            color: #333;
            line-height: 1.6;
        }

        .container {
            display: flex;
            min-height: 100vh;
        }

        .sidebar {
            width: 250px;
            background: #2c3e50;
            color: white;
            position: fixed;
            height: 100%;
            padding: 20px;
        }

        .sidebar h2 {
            font-size: 24px;
            margin-bottom: 30px;
            text-align: center;
        }

        .sidebar ul {
            list-style: none;
        }

        .sidebar ul li {
            margin: 20px 0;
        }

        .sidebar ul li a {
            color: white;
            text-decoration: none;
            display: flex;
            align-items: center;
            padding: 10px;
            border-radius: 5px;
            transition: background 0.3s;
        }

        .sidebar ul li a:hover {
            background: #34495e;
        }

        .sidebar ul li a i {
            margin-right: 10px;
            font-size: 18px;
        }

        .main-content {
            flex: 1;
            margin-left: 250px;
            padding: 20px;
        }

        .dashboard-container {
            max-width: 1400px;
            margin: 0 auto;
        }

        .header {
            background: #2c3e50;
            color: white;
            padding: 20px;
            border-radius: 10px;
            margin-bottom: 20px;
        }

        .header h1 {
            font-size: 24px;
        }

        .grid-container {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
        }

        .card {
            background: white;
            border-radius: 10px;
            padding: 20px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
            transition: transform 0.3s;
        }

        .card:hover {
            transform: translateY(-5px);
        }

        .card h3 {
            margin-bottom: 15px;
            color: #2c3e50;
        }

        .stats-card {
            display: flex;
            align-items: center;
            gap: 15px;
        }

        .stats-icon {
            width: 50px;
            height: 50px;
            background: #3498db;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 24px;
        }

        .chart-container {
            height: 200px;
            position: relative;
        }

        .progress-bar {
            width: 100%;
            height: 20px;
            background: #eee;
            border-radius: 10px;
            overflow: hidden;
            margin-top: 10px;
        }

        .progress {
            height: 100%;
            background: #2ecc71;
            width: 0;
        }

        .progress-75 { width: 75%; }
        .progress-50 { width: 50%; }
        .progress-25 { width: 25%; }

        @media (max-width: 768px) {
            .sidebar {
                width: 200px;
            }

            .main-content {
                margin-left: 200px;
            }

            .grid-container {
                grid-template-columns: 1fr;
            }
        }

        @media (max-width: 480px) {
            .sidebar {
                width: 70px;
            }

            .sidebar h2,
            .sidebar ul li a span {
                display: none;
            }

            .main-content {
                margin-left: 70px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="sidebar">
            <h2>Menu</h2>
            <ul>
                <li><a href="#"><i>🏠</i><span>Dashboard</span></a></li>
                <li><a href="#"><i>📊</i><span>Analytics</span></a></li>
                <li><a href="#"><i>👥</i><span>Users</span></a></li>
                <li><a href="#"><i>⚙️</i><span>Settings</span></a></li>
                <li><a href="#"><i>🚪</i><span>Logout</span></a></li>
            </ul>
        </div>

        <div class="main-content">
            <div class="dashboard-container">
                <div class="header">
                    <h1>Dashboard Overview</h1>
                </div>

                <div class="grid-container">
                    <div class="card stats-card">
                        <div class="stats-icon">📊</div>
                        <div>
                            <h3>Revenue</h3>
                            <p>$24,500</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">👥</div>
                        <div>
                            <h3>Users</h3>
                            <p>1,234</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">⭐</div>
                        <div>
                            <h3>Rating</h3>
                            <p>4.8/5</p>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Sales Trend (Monthly)</h3>
                        <div class="chart-container">
                            <canvas id="salesChart"></canvas>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Project Progress</h3>
                        <p>Development</p>
                        <div class="progress-bar"><div class="progress progress-75"></div></div>
                        <p>Design</p>
                        <div class="progress-bar"><div class="progress progress-50"></div></div>
                        <p>Testing</p>
                        <div class="progress-bar"><div class="progress progress-25"></div></div>
                    </div>

                    <div class="card">
                        <h3>User Distribution</h3>
                        <div class="chart-container">
                            <canvas id="userChart"></canvas>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script>
        // Sales Trend Line Chart
        const salesCtx = document.getElementById('salesChart').getContext('2d');
        new Chart(salesCtx, {
            type: 'line',
            data: {
                labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
                datasets: [{
                    label: 'Sales ($)',
                    data: [12000, 19000, 15000, 25000, 22000, 30000],
                    borderColor: '#3498db',
                    backgroundColor: 'rgba(52, 152, 219, 0.2)',
                    fill: true,
                    tension: 0.4
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });

        // User Distribution Bar Chart
        const userCtx = document.getElementById('userChart').getContext('2d');
        new Chart(userCtx, {
            type: 'bar',
            data: {
                labels: ['New', 'Returning', 'Inactive'],
                datasets: [{
                    label: 'Users',
                    data: [500, 600, 134],
                    backgroundColor: [
                        '#2ecc71',
                        '#3498db',
                        '#e74c3c'
                    ]
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });
    </script>
</body>
</html>
ENDTEXT
   
  
RETURN cHtml
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by Silvio.Falconi]]> 2025-03-26T10:44:43-06:00 2025-03-26T10:44:43-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278579#p278579
alerchster wrote: Wed Mar 26, 2025 2:56 pm

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oWnd, oWebView 

   DEFINE WINDOW oWnd TITLE "Dashboard"

   oWebView = TWebView2():New( oWnd )

   oWebView:SetHtml( dash() )

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

return nil      

function dash()

local cHtml

TEXT INTO cHtml
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Professional Dashboard with Charts</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: Arial, sans-serif;
        }

        body {
            background: #f0f2f5;
            color: #333;
            line-height: 1.6;
        }

        .container {
            display: flex;
            min-height: 100vh;
        }

        .sidebar {
            width: 250px;
            background: #2c3e50;
            color: white;
            position: fixed;
            height: 100%;
            padding: 20px;
        }

        .sidebar h2 {
            font-size: 24px;
            margin-bottom: 30px;
            text-align: center;
        }

        .sidebar ul {
            list-style: none;
        }

        .sidebar ul li {
            margin: 20px 0;
        }

        .sidebar ul li a {
            color: white;
            text-decoration: none;
            display: flex;
            align-items: center;
            padding: 10px;
            border-radius: 5px;
            transition: background 0.3s;
        }

        .sidebar ul li a:hover {
            background: #34495e;
        }

        .sidebar ul li a i {
            margin-right: 10px;
            font-size: 18px;
        }

        .main-content {
            flex: 1;
            margin-left: 250px;
            padding: 20px;
        }

        .dashboard-container {
            max-width: 1400px;
            margin: 0 auto;
        }

        .header {
            background: #2c3e50;
            color: white;
            padding: 20px;
            border-radius: 10px;
            margin-bottom: 20px;
        }

        .header h1 {
            font-size: 24px;
        }

        .grid-container {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
        }

        .card {
            background: white;
            border-radius: 10px;
            padding: 20px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
            transition: transform 0.3s;
        }

        .card:hover {
            transform: translateY(-5px);
        }

        .card h3 {
            margin-bottom: 15px;
            color: #2c3e50;
        }

        .stats-card {
            display: flex;
            align-items: center;
            gap: 15px;
        }

        .stats-icon {
            width: 50px;
            height: 50px;
            background: #3498db;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 24px;
        }

        .chart-container {
            height: 200px;
            position: relative;
        }

        .progress-bar {
            width: 100%;
            height: 20px;
            background: #eee;
            border-radius: 10px;
            overflow: hidden;
            margin-top: 10px;
        }

        .progress {
            height: 100%;
            background: #2ecc71;
            width: 0;
        }

        .progress-75 { width: 75%; }
        .progress-50 { width: 50%; }
        .progress-25 { width: 25%; }

        @media (max-width: 768px) {
            .sidebar {
                width: 200px;
            }

            .main-content {
                margin-left: 200px;
            }

            .grid-container {
                grid-template-columns: 1fr;
            }
        }

        @media (max-width: 480px) {
            .sidebar {
                width: 70px;
            }

            .sidebar h2,
            .sidebar ul li a span {
                display: none;
            }

            .main-content {
                margin-left: 70px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="sidebar">
            <h2>Menu</h2>
            <ul>
                <li><a href="#"><i>🏠</i><span>Dashboard</span></a></li>
                <li><a href="#"><i>📊</i><span>Analytics</span></a></li>
                <li><a href="#"><i>👥</i><span>Users</span></a></li>
                <li><a href="#"><i>⚙️</i><span>Settings</span></a></li>
                <li><a href="#"><i>🚪</i><span>Logout</span></a></li>
            </ul>
        </div>

        <div class="main-content">
            <div class="dashboard-container">
                <div class="header">
                    <h1>Dashboard Overview</h1>
                </div>

                <div class="grid-container">
                    <div class="card stats-card">
                        <div class="stats-icon">📊</div>
                        <div>
                            <h3>Revenue</h3>
                            <p>$24,500</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">👥</div>
                        <div>
                            <h3>Users</h3>
                            <p>1,234</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">⭐</div>
                        <div>
                            <h3>Rating</h3>
                            <p>4.8/5</p>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Sales Trend (Monthly)</h3>
                        <div class="chart-container">
                            <canvas id="salesChart"></canvas>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Project Progress</h3>
                        <p>Development</p>
                        <div class="progress-bar"><div class="progress progress-75"></div></div>
                        <p>Design</p>
                        <div class="progress-bar"><div class="progress progress-50"></div></div>
                        <p>Testing</p>
                        <div class="progress-bar"><div class="progress progress-25"></div></div>
                    </div>

                    <div class="card">
                        <h3>User Distribution</h3>
                        <div class="chart-container">
                            <canvas id="userChart"></canvas>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script>
        // Sales Trend Line Chart
        const salesCtx = document.getElementById('salesChart').getContext('2d');
        new Chart(salesCtx, {
            type: 'line',
            data: {
                labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
                datasets: [{
                    label: 'Sales ($)',
                    data: [12000, 19000, 15000, 25000, 22000, 30000],
                    borderColor: '#3498db',
                    backgroundColor: 'rgba(52, 152, 219, 0.2)',
                    fill: true,
                    tension: 0.4
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });

        // User Distribution Bar Chart
        const userCtx = document.getElementById('userChart').getContext('2d');
        new Chart(userCtx, {
            type: 'bar',
            data: {
                labels: ['New', 'Returning', 'Inactive'],
                datasets: [{
                    label: 'Users',
                    data: [500, 600, 134],
                    backgroundColor: [
                        '#2ecc71',
                        '#3498db',
                        '#e74c3c'
                    ]
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });
    </script>
</body>
</html>
ENDTEXT
   
  
RETURN cHtml

If you add a buttonbar

Code: Select all | Expand

DEFINE BUTTONBAR oBar _3D SIZE 80, 70 OF oWnd  2015
then the oWebview erase the buttonbar

I Tried also this ON RESIZE oWebView:SetSize( nWidth, nHeight-oBar:nHeight )]]>
alerchster wrote: Wed Mar 26, 2025 2:56 pm

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oWnd, oWebView 

   DEFINE WINDOW oWnd TITLE "Dashboard"

   oWebView = TWebView2():New( oWnd )

   oWebView:SetHtml( dash() )

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

return nil      

function dash()

local cHtml

TEXT INTO cHtml
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Professional Dashboard with Charts</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: Arial, sans-serif;
        }

        body {
            background: #f0f2f5;
            color: #333;
            line-height: 1.6;
        }

        .container {
            display: flex;
            min-height: 100vh;
        }

        .sidebar {
            width: 250px;
            background: #2c3e50;
            color: white;
            position: fixed;
            height: 100%;
            padding: 20px;
        }

        .sidebar h2 {
            font-size: 24px;
            margin-bottom: 30px;
            text-align: center;
        }

        .sidebar ul {
            list-style: none;
        }

        .sidebar ul li {
            margin: 20px 0;
        }

        .sidebar ul li a {
            color: white;
            text-decoration: none;
            display: flex;
            align-items: center;
            padding: 10px;
            border-radius: 5px;
            transition: background 0.3s;
        }

        .sidebar ul li a:hover {
            background: #34495e;
        }

        .sidebar ul li a i {
            margin-right: 10px;
            font-size: 18px;
        }

        .main-content {
            flex: 1;
            margin-left: 250px;
            padding: 20px;
        }

        .dashboard-container {
            max-width: 1400px;
            margin: 0 auto;
        }

        .header {
            background: #2c3e50;
            color: white;
            padding: 20px;
            border-radius: 10px;
            margin-bottom: 20px;
        }

        .header h1 {
            font-size: 24px;
        }

        .grid-container {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
        }

        .card {
            background: white;
            border-radius: 10px;
            padding: 20px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.1);
            transition: transform 0.3s;
        }

        .card:hover {
            transform: translateY(-5px);
        }

        .card h3 {
            margin-bottom: 15px;
            color: #2c3e50;
        }

        .stats-card {
            display: flex;
            align-items: center;
            gap: 15px;
        }

        .stats-icon {
            width: 50px;
            height: 50px;
            background: #3498db;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-size: 24px;
        }

        .chart-container {
            height: 200px;
            position: relative;
        }

        .progress-bar {
            width: 100%;
            height: 20px;
            background: #eee;
            border-radius: 10px;
            overflow: hidden;
            margin-top: 10px;
        }

        .progress {
            height: 100%;
            background: #2ecc71;
            width: 0;
        }

        .progress-75 { width: 75%; }
        .progress-50 { width: 50%; }
        .progress-25 { width: 25%; }

        @media (max-width: 768px) {
            .sidebar {
                width: 200px;
            }

            .main-content {
                margin-left: 200px;
            }

            .grid-container {
                grid-template-columns: 1fr;
            }
        }

        @media (max-width: 480px) {
            .sidebar {
                width: 70px;
            }

            .sidebar h2,
            .sidebar ul li a span {
                display: none;
            }

            .main-content {
                margin-left: 70px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="sidebar">
            <h2>Menu</h2>
            <ul>
                <li><a href="#"><i>🏠</i><span>Dashboard</span></a></li>
                <li><a href="#"><i>📊</i><span>Analytics</span></a></li>
                <li><a href="#"><i>👥</i><span>Users</span></a></li>
                <li><a href="#"><i>⚙️</i><span>Settings</span></a></li>
                <li><a href="#"><i>🚪</i><span>Logout</span></a></li>
            </ul>
        </div>

        <div class="main-content">
            <div class="dashboard-container">
                <div class="header">
                    <h1>Dashboard Overview</h1>
                </div>

                <div class="grid-container">
                    <div class="card stats-card">
                        <div class="stats-icon">📊</div>
                        <div>
                            <h3>Revenue</h3>
                            <p>$24,500</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">👥</div>
                        <div>
                            <h3>Users</h3>
                            <p>1,234</p>
                        </div>
                    </div>

                    <div class="card stats-card">
                        <div class="stats-icon">⭐</div>
                        <div>
                            <h3>Rating</h3>
                            <p>4.8/5</p>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Sales Trend (Monthly)</h3>
                        <div class="chart-container">
                            <canvas id="salesChart"></canvas>
                        </div>
                    </div>

                    <div class="card">
                        <h3>Project Progress</h3>
                        <p>Development</p>
                        <div class="progress-bar"><div class="progress progress-75"></div></div>
                        <p>Design</p>
                        <div class="progress-bar"><div class="progress progress-50"></div></div>
                        <p>Testing</p>
                        <div class="progress-bar"><div class="progress progress-25"></div></div>
                    </div>

                    <div class="card">
                        <h3>User Distribution</h3>
                        <div class="chart-container">
                            <canvas id="userChart"></canvas>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script>
        // Sales Trend Line Chart
        const salesCtx = document.getElementById('salesChart').getContext('2d');
        new Chart(salesCtx, {
            type: 'line',
            data: {
                labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
                datasets: [{
                    label: 'Sales ($)',
                    data: [12000, 19000, 15000, 25000, 22000, 30000],
                    borderColor: '#3498db',
                    backgroundColor: 'rgba(52, 152, 219, 0.2)',
                    fill: true,
                    tension: 0.4
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });

        // User Distribution Bar Chart
        const userCtx = document.getElementById('userChart').getContext('2d');
        new Chart(userCtx, {
            type: 'bar',
            data: {
                labels: ['New', 'Returning', 'Inactive'],
                datasets: [{
                    label: 'Users',
                    data: [500, 600, 134],
                    backgroundColor: [
                        '#2ecc71',
                        '#3498db',
                        '#e74c3c'
                    ]
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });
    </script>
</body>
</html>
ENDTEXT
   
  
RETURN cHtml

If you add a buttonbar

Code: Select all | Expand

DEFINE BUTTONBAR oBar _3D SIZE 80, 70 OF oWnd  2015
then the oWebview erase the buttonbar

I Tried also this ON RESIZE oWebView:SetSize( nWidth, nHeight-oBar:nHeight )]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by cnavarro]]> 2025-03-26T10:49:03-06:00 2025-03-26T10:49:03-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278580#p278580 Please create TPanel into windows for webview]]> Please create TPanel into windows for webview]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by Silvio.Falconi]]> 2025-03-26T12:50:20-06:00 2025-03-26T12:50:20-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278586#p278586
cnavarro wrote: Wed Mar 26, 2025 4:49 pm Webview not is a control windows
Please create TPanel into windows for webview
but this
oWebView:oWnd:SetMenu( BuildMenu(oWebView) )

run
it could run also with buttonbar ?]]>
cnavarro wrote: Wed Mar 26, 2025 4:49 pm Webview not is a control windows
Please create TPanel into windows for webview
but this
oWebView:oWnd:SetMenu( BuildMenu(oWebView) )

run
it could run also with buttonbar ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by cnavarro]]> 2025-03-26T13:10:33-06:00 2025-03-26T13:10:33-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278587#p278587 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by Silvio.Falconi]]> 2025-03-26T15:34:35-06:00 2025-03-26T15:34:35-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278601#p278601
cnavarro wrote: Wed Mar 26, 2025 7:10 pm Webview must be installed on oWnd:oClient ( area client )
I tried But Not Knw How make it]]>
cnavarro wrote: Wed Mar 26, 2025 7:10 pm Webview must be installed on oWnd:oClient ( area client )
I tried But Not Knw How make it]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by Lailton]]> 2025-03-26T18:15:09-06:00 2025-03-26T18:15:09-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278607#p278607

Code: Select all | Expand

oWnd:oClient := oWebView
then you dont need setSize]]>

Code: Select all | Expand

oWnd:oClient := oWebView
then you dont need setSize]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by Silvio.Falconi]]> 2025-03-27T02:05:36-06:00 2025-03-27T02:05:36-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278612#p278612
Lailton wrote: Thu Mar 27, 2025 12:15 am Maybe?

Code: Select all | Expand

oWnd:oClient := oWebView
then you dont need setSize
I allready tested and make error twebview:adjclient not found

Code: Select all | Expand

rror occurred at: 03/27/25, 09:06:38
   Error description: Error BASE/1004  Message not found: TWEBVIEW2:ADJCLIENT
   Args:
     [   1] = O   TWEBVIEW2

Stack Calls
===========
   Called from: ../../../tobject.prg => __ERRRT_SBASE( 0 )
   Called from: ../../../tobject.prg => TWEBVIEW2:ERROR( 0 )
   Called from: ../../../tobject.prg => (b)HBOBJECT( 0 )
   Called from: ../../../tobject.prg => TWEBVIEW2:MSGNOTFOUND( 0 )
   Called from: ../../../tobject.prg => TWEBVIEW2:ADJCLIENT( 0 )
   Called from: .\source\classes\window.prg => TWINDOW:RESIZE( 2432 )
   Called from: .\source\classes\window.prg => TWINDOW:HANDLEEVENT( 0 )
   Called from: .\source\classes\window.prg => _FWH( 3719 )
please try

Code: Select all | Expand


function Main()
   local oWnd, oWebView
   local oBar

 DEFINE WINDOW oWnd TITLE "Dashboard"
   oWebView := TWebView2():New( oWnd )
   //oWebView:SetHtml( Html() )
  // oWebView:bOnBind := {|hData| ExecuteFunction(hData, oWebView) }

  // oWebView:oWnd:SetMenu( BuildMenu(oWebView) )


   oWebView:oWnd:SetColor( CLR_BLACK, nRGB( 231, 242, 255 ) )
   oWebView:oWnd:l2007 := .T.
   oWebView:SetSize( WndWidth( oWebView:oWnd:hWnd ) - 15, WndHeight( oWebView:oWnd:hWnd ) - 58 )


    oWnd:oclient:= oWebView
    
   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE ( oWebView:SetSize( nWidth, nHeight ))

   return nil
]]>
Lailton wrote: Thu Mar 27, 2025 12:15 am Maybe?

Code: Select all | Expand

oWnd:oClient := oWebView
then you dont need setSize
I allready tested and make error twebview:adjclient not found

Code: Select all | Expand

rror occurred at: 03/27/25, 09:06:38
   Error description: Error BASE/1004  Message not found: TWEBVIEW2:ADJCLIENT
   Args:
     [   1] = O   TWEBVIEW2

Stack Calls
===========
   Called from: ../../../tobject.prg => __ERRRT_SBASE( 0 )
   Called from: ../../../tobject.prg => TWEBVIEW2:ERROR( 0 )
   Called from: ../../../tobject.prg => (b)HBOBJECT( 0 )
   Called from: ../../../tobject.prg => TWEBVIEW2:MSGNOTFOUND( 0 )
   Called from: ../../../tobject.prg => TWEBVIEW2:ADJCLIENT( 0 )
   Called from: .\source\classes\window.prg => TWINDOW:RESIZE( 2432 )
   Called from: .\source\classes\window.prg => TWINDOW:HANDLEEVENT( 0 )
   Called from: .\source\classes\window.prg => _FWH( 3719 )
please try

Code: Select all | Expand


function Main()
   local oWnd, oWebView
   local oBar

 DEFINE WINDOW oWnd TITLE "Dashboard"
   oWebView := TWebView2():New( oWnd )
   //oWebView:SetHtml( Html() )
  // oWebView:bOnBind := {|hData| ExecuteFunction(hData, oWebView) }

  // oWebView:oWnd:SetMenu( BuildMenu(oWebView) )


   oWebView:oWnd:SetColor( CLR_BLACK, nRGB( 231, 242, 255 ) )
   oWebView:oWnd:l2007 := .T.
   oWebView:SetSize( WndWidth( oWebView:oWnd:hWnd ) - 15, WndHeight( oWebView:oWnd:hWnd ) - 58 )


    oWnd:oclient:= oWebView
    
   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE ( oWebView:SetSize( nWidth, nHeight ))

   return nil
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by Antonio Linares]]> 2025-03-27T02:19:47-06:00 2025-03-27T02:19:47-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278615#p278615
TWebView2():New( oWnd:oClient )]]>

TWebView2():New( oWnd:oClient )]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by Silvio.Falconi]]> 2025-03-27T05:23:01-06:00 2025-03-27T05:23:01-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278620#p278620
Antonio Linares wrote: Thu Mar 27, 2025 8:19 am Better try with:

TWebView2():New( oWnd:oClient )
Not make error but I see a White window blank not load the html

Image

the sample test

Code: Select all | Expand

function Main()
   local oWnd, oWebView
   local oBar

 DEFINE WINDOW oWnd TITLE "Invoicing"
 BuildMainBar(oWnd)

 oWebView := TWebView2():New( oWnd:oClient )
 oWebView:SetHtml( Html() )
 oWebView:bOnBind := {|hData| ExecuteFunction(hData, oWebView) }
 oWebView:oWnd:SetMenu( BuildMenu(oWebView) )

 oWebView:oWnd:SetColor( CLR_BLACK, nRGB( 231, 242, 255 ) )
 oWebView:SetSize( WndWidth( oWebView:oWnd:hWnd ) - 15, WndHeight( oWebView:oWnd:hWnd ) - 58 )

   DEFINE MSGBAR PROMPT "Invoicing app" ;
      OF oWnd 2015 KEYBOARD DATE


   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE ( oWebView:SetSize( nWidth, nHeight ))

   return nil


static function BuildMainBar(oWnd)

   local oBar

   DEFINE BUTTONBAR oBar OF oWnd 2015 SIZE 70, 60 //70

   DEFINE BUTTON OF oBar PROMPT "Invoices" RESOURCE "code" ;
      ACTION NIL

   DEFINE BUTTON OF oBar PROMPT "Clients" RESOURCE "clients" ;
      ACTION NIL

   DEFINE BUTTON OF oBar PROMPT "Items" RESOURCE "relation" ;
      ACTION NIL

   DEFINE BUTTON OF oBar PROMPT "Exit" RESOURCE "exit" ;
      ACTION oWnd:End()

return nil

Function BuildMenu(oWebView)
   local oMenu

   MENU oMenu
      MENUITEM "Uscita" ACTION oWebView:oWnd:End()
   ENDMENU

   return oMenu

I tried also with oWebView:setparent(oWnd:oClient) or oWebView:setparent(oWnd)]]>
Antonio Linares wrote: Thu Mar 27, 2025 8:19 am Better try with:

TWebView2():New( oWnd:oClient )
Not make error but I see a White window blank not load the html

Image

the sample test

Code: Select all | Expand

function Main()
   local oWnd, oWebView
   local oBar

 DEFINE WINDOW oWnd TITLE "Invoicing"
 BuildMainBar(oWnd)

 oWebView := TWebView2():New( oWnd:oClient )
 oWebView:SetHtml( Html() )
 oWebView:bOnBind := {|hData| ExecuteFunction(hData, oWebView) }
 oWebView:oWnd:SetMenu( BuildMenu(oWebView) )

 oWebView:oWnd:SetColor( CLR_BLACK, nRGB( 231, 242, 255 ) )
 oWebView:SetSize( WndWidth( oWebView:oWnd:hWnd ) - 15, WndHeight( oWebView:oWnd:hWnd ) - 58 )

   DEFINE MSGBAR PROMPT "Invoicing app" ;
      OF oWnd 2015 KEYBOARD DATE


   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE ( oWebView:SetSize( nWidth, nHeight ))

   return nil


static function BuildMainBar(oWnd)

   local oBar

   DEFINE BUTTONBAR oBar OF oWnd 2015 SIZE 70, 60 //70

   DEFINE BUTTON OF oBar PROMPT "Invoices" RESOURCE "code" ;
      ACTION NIL

   DEFINE BUTTON OF oBar PROMPT "Clients" RESOURCE "clients" ;
      ACTION NIL

   DEFINE BUTTON OF oBar PROMPT "Items" RESOURCE "relation" ;
      ACTION NIL

   DEFINE BUTTON OF oBar PROMPT "Exit" RESOURCE "exit" ;
      ACTION oWnd:End()

return nil

Function BuildMenu(oWebView)
   local oMenu

   MENU oMenu
      MENUITEM "Uscita" ACTION oWebView:oWnd:End()
   ENDMENU

   return oMenu

I tried also with oWebView:setparent(oWnd:oClient) or oWebView:setparent(oWnd)]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by Silvio.Falconi]]> 2025-03-27T05:40:29-06:00 2025-03-27T05:40:29-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278621#p278621 RUN OK with

Code: Select all | Expand

function Main()
   local oWnd, oWebView
   local oBar

 DEFINE WINDOW oWnd TITLE "Invoicing"
                      BuildMainBar(oWnd)

 oWebView := TWebView2():New( oWnd )
 oWebView:SetHtml( Html() )
 oWebView:bOnBind := {|hData| ExecuteFunction(hData, oWebView) }
 oWebView:oWnd:SetMenu( BuildMenu(oWebView) )

 oWebView:oWnd:SetColor( CLR_BLACK, nRGB( 231, 242, 255 ) )

   DEFINE MSGBAR PROMPT "Invoicing app" ;
      OF oWnd 2015 KEYBOARD DATE

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE ( oWebView:SetSize( WndWidth( oWebView:oWnd:hWnd ) - 15,;
                     WndHeight( oWebView:oWnd:hWnd ) - 58 ) )
   return nil
only I not see the msgbar !!!]]>
RUN OK with

Code: Select all | Expand

function Main()
   local oWnd, oWebView
   local oBar

 DEFINE WINDOW oWnd TITLE "Invoicing"
                      BuildMainBar(oWnd)

 oWebView := TWebView2():New( oWnd )
 oWebView:SetHtml( Html() )
 oWebView:bOnBind := {|hData| ExecuteFunction(hData, oWebView) }
 oWebView:oWnd:SetMenu( BuildMenu(oWebView) )

 oWebView:oWnd:SetColor( CLR_BLACK, nRGB( 231, 242, 255 ) )

   DEFINE MSGBAR PROMPT "Invoicing app" ;
      OF oWnd 2015 KEYBOARD DATE

   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE ( oWebView:SetSize( WndWidth( oWebView:oWnd:hWnd ) - 15,;
                     WndHeight( oWebView:oWnd:hWnd ) - 58 ) )
   return nil
only I not see the msgbar !!!]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Using a webview from an existing window :: Reply by Silvio.Falconi]]> 2025-03-27T05:48:28-06:00 2025-03-27T05:48:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45563&p=278622#p278622
Image

https://i.postimg.cc/MpCwxL2r/msgbar.png

Code: Select all | Expand

 ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE ( oWebView:SetSize( WndWidth( oWebView:oWnd:hWnd ) - 15,;
                     WndHeight( oWebView:oWnd:hWnd ) - 80 ) )

the problem is on top because the html is too near the buttonbar

and I solved it with a trick
<body>
<p>
<p>

<div class="container">]]>

Image

https://i.postimg.cc/MpCwxL2r/msgbar.png

Code: Select all | Expand

 ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON RESIZE ( oWebView:SetSize( WndWidth( oWebView:oWnd:hWnd ) - 15,;
                     WndHeight( oWebView:oWnd:hWnd ) - 80 ) )

the problem is on top because the html is too near the buttonbar

and I solved it with a trick
<body>
<p>
<p>

<div class="container">]]>
<![CDATA[FiveWin for Harbour/xHarbour :: link problem with fivewin 25.01 64 bit and VS2022 :: Author marzio]]> 2025-03-26T09:16:34-06:00 2025-03-26T09:16:34-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278573#p278573 i have installed fivewin 25.01 with harbour.
i have modify the mak file ( used for fivewin 17.01 and VC2017) adapting it to the new folders.
I managed to generate ppt, ppo, c e obj files.

i have copied stdio.h from include vc17 a include vc22 plus all the under files:
corecrt.h, corecrt_wstdio.h, corecrt_stdio_config.h, stdlib.h, corecrt_malloc.h, corecrt_search.h, stddef.h,
corecrt_wstdlib.h, string.h, corecrt_memory.h, corecrt_memcpy_s.h, errno.h, corecrt_wstring.h, malloc.h

the link asked me the following lib files:
i have copied msvcrt.lib from lib vc17 to the folder of the program: \scuola64 and all following files:
libcmt.lib, OLDNAMES.lib, uuid.lib

with uuid.lib give me an error and create a link.log file of 3000 row with 1038 not resolved external.
i have read some posts but without results.

as you can see I disabled rc.exe because it gives syntax errors and does not compile.

can you help me?

thanks Marzio

Code: Select all | Expand


called from:
.\..\..\VC2022\bin\Hostx64\x64\nmake -fscuolaC64.mak



HBDIR=.\..\..\Hb64vC22
FWDIR=.\..\..\fwh642501
VCDIR=.\..\..\VC2022
VC32DIR=.\..\..\VC2017
SDKDIR=.\..\..\VC2022\sdk

PRGS = scuola.prg functscl.prg TcBrowse.prg #tmGet.prg Combo_Box.prg

.SUFFIXES: .prg .c .obj .rc .res

scuola64.exe : $(PRGS:.prg=.obj) scuola64.res
   @echo $(PRGS:.prg=.obj) > msvc.tmp

   @echo $(FWDIR)\lib\FiveH64.lib  >> msvc.tmp
 	@echo $(FWDIR)\lib\FiveHC64.lib >> msvc.tmp

   @echo $(HBDIR)\lib\win\msvc64\hbrtl.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbvm.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\gtgui.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hblang.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbmacro.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbrdd.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddntx.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddcdx.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddfpt.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbsix.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbdebug.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcommon.lib >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbpp.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbwin.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcplr.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\xhb.lib      >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbpcre.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbct.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcpage.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbzlib.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\png.lib      >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbzlib.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbziparc.lib >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbmzip.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\minizip.lib  >> msvc.tmp

   @echo $(VC32DIR)\Lib\LIBCMT.lib                                                  >> msvc.tmp
   @echo $(VC32DIR)\Lib\OLDNAMES.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\gdi32.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\winspool.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\comctl32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\comdlg32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\advapi32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\shell32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\ole32.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\oleaut32.lib                                                >> msvc.tmp
#   @echo $(VC32DIR)\Lib\uuid.lib                                                    >> msvc.tmp
   @echo $(VC32DIR)\Lib\odbc32.lib                                                  >> msvc.tmp
   @echo $(VC32DIR)\Lib\odbccp32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\iphlpapi.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\mpr.lib                                                     >> msvc.tmp
   @echo $(VC32DIR)\Lib\version.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\wsock32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\msimg32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\oledlg.lib                                                  >> msvc.tmp
   @echo $(VC32DIR)\Lib\psapi.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\gdiplus.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\winmm.lib                                                   >> msvc.tmp

#   @echo $(VC32DIR)\Lib\amd64\libcmt.lib                                                >> msvc.tmp
#   @echo $(VC32DIR)\Lib\amd64\oldnames.lib                                              >> msvc.tmp
#   @echo $(VC32DIR)\Lib\amd64\libvcruntime.lib                                          >> msvc.tmp
#   @echo $(VC32DIR)\kit\lib\ucrt\x64\libucrt.lib                                        >> msvc.tmp


   IF EXIST scuola64.res echo scuola64.res >> msvc.tmp
#  copiare .\..\..\VC2015\bin\cvtres.exe nella cartella x86_amd64

   $(VCDIR)\bin\Hostx64\x64\link @msvc.tmp /nologo /subsystem:windows /NODEFAULTLIB:msvcrt > link.log
   @type link.log
   @del $(PRGS:.prg=.obj)

$(PRGS:.prg=.obj) : $(PRGS:.prg=.c)
$(PRGS:.prg=.c) : $(PRGS)

# scuola64.res : scuola64.rc
#   $(VC32DIR)\bin\rc.exe -r -d__FLAT__ scuola64.rc

.prg.c:
   $(HBDIR)\bin\win\msvc64\harbour $< /n /i$(FWDIR)\include;$(HBDIR)\include -gc3 -p -p+
#-gc3 come parametro di harbour genera codice C e non pcode.

.c.obj:
#   $(VCDIR)\bin\x86_amd64\cl.exe -c -TC -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include -I$(VCDIR)\kit\include\ucrt $<
   $(VCDIR)\bin\Hostx64\x64\cl.exe -c -TC -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include -I$(VCDIR)\kit\include\ucrt -I$(FWDIR)\include $<
]]>
i have installed fivewin 25.01 with harbour.
i have modify the mak file ( used for fivewin 17.01 and VC2017) adapting it to the new folders.
I managed to generate ppt, ppo, c e obj files.

i have copied stdio.h from include vc17 a include vc22 plus all the under files:
corecrt.h, corecrt_wstdio.h, corecrt_stdio_config.h, stdlib.h, corecrt_malloc.h, corecrt_search.h, stddef.h,
corecrt_wstdlib.h, string.h, corecrt_memory.h, corecrt_memcpy_s.h, errno.h, corecrt_wstring.h, malloc.h

the link asked me the following lib files:
i have copied msvcrt.lib from lib vc17 to the folder of the program: \scuola64 and all following files:
libcmt.lib, OLDNAMES.lib, uuid.lib

with uuid.lib give me an error and create a link.log file of 3000 row with 1038 not resolved external.
i have read some posts but without results.

as you can see I disabled rc.exe because it gives syntax errors and does not compile.

can you help me?

thanks Marzio

Code: Select all | Expand


called from:
.\..\..\VC2022\bin\Hostx64\x64\nmake -fscuolaC64.mak



HBDIR=.\..\..\Hb64vC22
FWDIR=.\..\..\fwh642501
VCDIR=.\..\..\VC2022
VC32DIR=.\..\..\VC2017
SDKDIR=.\..\..\VC2022\sdk

PRGS = scuola.prg functscl.prg TcBrowse.prg #tmGet.prg Combo_Box.prg

.SUFFIXES: .prg .c .obj .rc .res

scuola64.exe : $(PRGS:.prg=.obj) scuola64.res
   @echo $(PRGS:.prg=.obj) > msvc.tmp

   @echo $(FWDIR)\lib\FiveH64.lib  >> msvc.tmp
 	@echo $(FWDIR)\lib\FiveHC64.lib >> msvc.tmp

   @echo $(HBDIR)\lib\win\msvc64\hbrtl.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbvm.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\gtgui.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hblang.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbmacro.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbrdd.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddntx.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddcdx.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddfpt.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbsix.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbdebug.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcommon.lib >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbpp.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbwin.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcplr.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\xhb.lib      >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbpcre.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbct.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcpage.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbzlib.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\png.lib      >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbzlib.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbziparc.lib >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbmzip.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\minizip.lib  >> msvc.tmp

   @echo $(VC32DIR)\Lib\LIBCMT.lib                                                  >> msvc.tmp
   @echo $(VC32DIR)\Lib\OLDNAMES.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\gdi32.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\winspool.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\comctl32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\comdlg32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\advapi32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\shell32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\ole32.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\oleaut32.lib                                                >> msvc.tmp
#   @echo $(VC32DIR)\Lib\uuid.lib                                                    >> msvc.tmp
   @echo $(VC32DIR)\Lib\odbc32.lib                                                  >> msvc.tmp
   @echo $(VC32DIR)\Lib\odbccp32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\iphlpapi.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\mpr.lib                                                     >> msvc.tmp
   @echo $(VC32DIR)\Lib\version.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\wsock32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\msimg32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\oledlg.lib                                                  >> msvc.tmp
   @echo $(VC32DIR)\Lib\psapi.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\gdiplus.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\winmm.lib                                                   >> msvc.tmp

#   @echo $(VC32DIR)\Lib\amd64\libcmt.lib                                                >> msvc.tmp
#   @echo $(VC32DIR)\Lib\amd64\oldnames.lib                                              >> msvc.tmp
#   @echo $(VC32DIR)\Lib\amd64\libvcruntime.lib                                          >> msvc.tmp
#   @echo $(VC32DIR)\kit\lib\ucrt\x64\libucrt.lib                                        >> msvc.tmp


   IF EXIST scuola64.res echo scuola64.res >> msvc.tmp
#  copiare .\..\..\VC2015\bin\cvtres.exe nella cartella x86_amd64

   $(VCDIR)\bin\Hostx64\x64\link @msvc.tmp /nologo /subsystem:windows /NODEFAULTLIB:msvcrt > link.log
   @type link.log
   @del $(PRGS:.prg=.obj)

$(PRGS:.prg=.obj) : $(PRGS:.prg=.c)
$(PRGS:.prg=.c) : $(PRGS)

# scuola64.res : scuola64.rc
#   $(VC32DIR)\bin\rc.exe -r -d__FLAT__ scuola64.rc

.prg.c:
   $(HBDIR)\bin\win\msvc64\harbour $< /n /i$(FWDIR)\include;$(HBDIR)\include -gc3 -p -p+
#-gc3 come parametro di harbour genera codice C e non pcode.

.c.obj:
#   $(VCDIR)\bin\x86_amd64\cl.exe -c -TC -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include -I$(VCDIR)\kit\include\ucrt $<
   $(VCDIR)\bin\Hostx64\x64\cl.exe -c -TC -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include -I$(VCDIR)\kit\include\ucrt -I$(FWDIR)\include $<
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by Antonio Linares]]> 2025-03-26T09:23:16-06:00 2025-03-26T09:23:16-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278574#p278574
You have to use these flags with the linker: /NODEFAULTLIB:libucrt /NODEFAULTLIB:msvcrt

and link Microsoft ucrt.lib]]>

You have to use these flags with the linker: /NODEFAULTLIB:libucrt /NODEFAULTLIB:msvcrt

and link Microsoft ucrt.lib]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by marzio]]> 2025-03-26T09:58:39-06:00 2025-03-26T09:58:39-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278577#p278577 like before, i obtain a big link.log and error.

see the mak file modify:

Code: Select all | Expand

HBDIR=.\..\..\Hb64vC22
FWDIR=.\..\..\fwh642501
VCDIR=.\..\..\VC2022
VC32DIR=.\..\..\VC2017
SDKDIR=.\..\..\VC2022\sdk

PRGS = scuola.prg functscl.prg TcBrowse.prg #tmGet.prg Combo_Box.prg

.SUFFIXES: .prg .c .obj .rc .res

scuola64.exe : $(PRGS:.prg=.obj) scuola64.res
   @echo $(PRGS:.prg=.obj) > msvc.tmp

   @echo $(FWDIR)\lib\FiveH64.lib  >> msvc.tmp
 	@echo $(FWDIR)\lib\FiveHC64.lib >> msvc.tmp

   @echo $(HBDIR)\lib\win\msvc64\hbrtl.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbvm.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\gtgui.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hblang.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbmacro.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbrdd.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddntx.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddcdx.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddfpt.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbsix.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbdebug.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcommon.lib >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbpp.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbwin.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcplr.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\xhb.lib      >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbpcre.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbct.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcpage.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbzlib.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\png.lib      >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbzlib.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbziparc.lib >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbmzip.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\minizip.lib  >> msvc.tmp

   @echo $(VC32DIR)\Lib\gdi32.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\winspool.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\comctl32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\comdlg32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\advapi32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\shell32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\ole32.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\oleaut32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\odbc32.lib                                                  >> msvc.tmp
   @echo $(VC32DIR)\Lib\odbccp32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\iphlpapi.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\mpr.lib                                                     >> msvc.tmp
   @echo $(VC32DIR)\Lib\version.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\wsock32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\msimg32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\oledlg.lib                                                  >> msvc.tmp
   @echo $(VC32DIR)\Lib\psapi.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\gdiplus.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\winmm.lib                                                   >> msvc.tmp
   @echo .\lib\oldnames.lib                                                         >> msvc.tmp
   @echo .\lib\ucrt.lib                                                             >> msvc.tmp
   @echo .\lib\uuid.lib                                                             >> msvc.tmp
   @echo .\lib\libcmt.lib                                                           >> msvc.tmp

#   @echo $(VC32DIR)\Lib\amd64\libvcruntime.lib                                          >> msvc.tmp
#   @echo $(VC32DIR)\kit\lib\ucrt\x64\libucrt.lib                                        >> msvc.tmp


   IF EXIST scuola64.res echo scuola64.res >> msvc.tmp
#  copiare .\..\..\VC2015\bin\cvtres.exe nella cartella x86_amd64

   $(VCDIR)\bin\Hostx64\x64\link @msvc.tmp /nologo /subsystem:windows /NODEFAULTLIB:libucrt /NODEFAULTLIB:msvcrt > link.log
   @type link.log
   @del $(PRGS:.prg=.obj)

$(PRGS:.prg=.obj) : $(PRGS:.prg=.c)
$(PRGS:.prg=.c) : $(PRGS)

# scuola64.res : scuola64.rc
#   $(VC32DIR)\bin\rc.exe -r -d__FLAT__ scuola64.rc

.prg.c:
   $(HBDIR)\bin\win\msvc64\harbour $< /n /i$(FWDIR)\include;$(HBDIR)\include -gc3 -p -p+
#-gc3 come parametro di harbour genera codice C e non pcode.

.c.obj:
#   $(VCDIR)\bin\x86_amd64\cl.exe -c -TC -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include -I$(VCDIR)\kit\include\ucrt $<
   $(VCDIR)\bin\Hostx64\x64\cl.exe -c -TC -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include -I$(VCDIR)\kit\include\ucrt -I$(FWDIR)\include $<

]]>
like before, i obtain a big link.log and error.

see the mak file modify:

Code: Select all | Expand

HBDIR=.\..\..\Hb64vC22
FWDIR=.\..\..\fwh642501
VCDIR=.\..\..\VC2022
VC32DIR=.\..\..\VC2017
SDKDIR=.\..\..\VC2022\sdk

PRGS = scuola.prg functscl.prg TcBrowse.prg #tmGet.prg Combo_Box.prg

.SUFFIXES: .prg .c .obj .rc .res

scuola64.exe : $(PRGS:.prg=.obj) scuola64.res
   @echo $(PRGS:.prg=.obj) > msvc.tmp

   @echo $(FWDIR)\lib\FiveH64.lib  >> msvc.tmp
 	@echo $(FWDIR)\lib\FiveHC64.lib >> msvc.tmp

   @echo $(HBDIR)\lib\win\msvc64\hbrtl.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbvm.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\gtgui.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hblang.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbmacro.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbrdd.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddntx.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddcdx.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\rddfpt.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbsix.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbdebug.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcommon.lib >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbpp.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbwin.lib    >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcplr.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\xhb.lib      >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbpcre.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbct.lib     >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbcpage.lib  >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbzlib.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\png.lib      >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbzlib.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbziparc.lib >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\hbmzip.lib   >> msvc.tmp
   @echo $(HBDIR)\lib\win\msvc64\minizip.lib  >> msvc.tmp

   @echo $(VC32DIR)\Lib\gdi32.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\winspool.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\comctl32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\comdlg32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\advapi32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\shell32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\ole32.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\oleaut32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\odbc32.lib                                                  >> msvc.tmp
   @echo $(VC32DIR)\Lib\odbccp32.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\iphlpapi.lib                                                >> msvc.tmp
   @echo $(VC32DIR)\Lib\mpr.lib                                                     >> msvc.tmp
   @echo $(VC32DIR)\Lib\version.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\wsock32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\msimg32.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\oledlg.lib                                                  >> msvc.tmp
   @echo $(VC32DIR)\Lib\psapi.lib                                                   >> msvc.tmp
   @echo $(VC32DIR)\Lib\gdiplus.lib                                                 >> msvc.tmp
   @echo $(VC32DIR)\Lib\winmm.lib                                                   >> msvc.tmp
   @echo .\lib\oldnames.lib                                                         >> msvc.tmp
   @echo .\lib\ucrt.lib                                                             >> msvc.tmp
   @echo .\lib\uuid.lib                                                             >> msvc.tmp
   @echo .\lib\libcmt.lib                                                           >> msvc.tmp

#   @echo $(VC32DIR)\Lib\amd64\libvcruntime.lib                                          >> msvc.tmp
#   @echo $(VC32DIR)\kit\lib\ucrt\x64\libucrt.lib                                        >> msvc.tmp


   IF EXIST scuola64.res echo scuola64.res >> msvc.tmp
#  copiare .\..\..\VC2015\bin\cvtres.exe nella cartella x86_amd64

   $(VCDIR)\bin\Hostx64\x64\link @msvc.tmp /nologo /subsystem:windows /NODEFAULTLIB:libucrt /NODEFAULTLIB:msvcrt > link.log
   @type link.log
   @del $(PRGS:.prg=.obj)

$(PRGS:.prg=.obj) : $(PRGS:.prg=.c)
$(PRGS:.prg=.c) : $(PRGS)

# scuola64.res : scuola64.rc
#   $(VC32DIR)\bin\rc.exe -r -d__FLAT__ scuola64.rc

.prg.c:
   $(HBDIR)\bin\win\msvc64\harbour $< /n /i$(FWDIR)\include;$(HBDIR)\include -gc3 -p -p+
#-gc3 come parametro di harbour genera codice C e non pcode.

.c.obj:
#   $(VCDIR)\bin\x86_amd64\cl.exe -c -TC -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include -I$(VCDIR)\kit\include\ucrt $<
   $(VCDIR)\bin\Hostx64\x64\cl.exe -c -TC -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include -I$(VCDIR)\kit\include\ucrt -I$(FWDIR)\include $<

]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by cnavarro]]> 2025-03-26T10:52:27-06:00 2025-03-26T10:52:27-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278581#p278581
$(VC32DIR)\
]]>
$(VC32DIR)\
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by marzio]]> 2025-03-26T11:14:23-06:00 2025-03-26T11:14:23-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278582#p278582
cnavarro wrote: Wed Mar 26, 2025 4:52 pm This folder is correct?
$(VC32DIR)\
yes, the path is correct.

Code: Select all | Expand


content of file: msvc.tmp

scuola.obj functscl.obj TcBrowse.obj 
.\..\..\fwh642501\lib\FiveH64.lib 
.\..\..\fwh642501\lib\FiveHC64.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbrtl.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbvm.lib 
.\..\..\Hb64vC22\lib\win\msvc64\gtgui.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hblang.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbmacro.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbrdd.lib 
.\..\..\Hb64vC22\lib\win\msvc64\rddntx.lib 
.\..\..\Hb64vC22\lib\win\msvc64\rddcdx.lib 
.\..\..\Hb64vC22\lib\win\msvc64\rddfpt.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbsix.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbdebug.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbcommon.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbpp.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbwin.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbcplr.lib 
.\..\..\Hb64vC22\lib\win\msvc64\xhb.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbpcre.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbct.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbcpage.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbzlib.lib 
.\..\..\Hb64vC22\lib\win\msvc64\png.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbzlib.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbziparc.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbmzip.lib 
.\..\..\Hb64vC22\lib\win\msvc64\minizip.lib 
.\..\..\VC2017\Lib\gdi32.lib 
.\..\..\VC2017\Lib\winspool.lib 
.\..\..\VC2017\Lib\comctl32.lib 
.\..\..\VC2017\Lib\comdlg32.lib 
.\..\..\VC2017\Lib\advapi32.lib 
.\..\..\VC2017\Lib\shell32.lib 
.\..\..\VC2017\Lib\ole32.lib 
.\..\..\VC2017\Lib\oleaut32.lib 
.\..\..\VC2017\Lib\odbc32.lib 
.\..\..\VC2017\Lib\odbccp32.lib 
.\..\..\VC2017\Lib\iphlpapi.lib 
.\..\..\VC2017\Lib\mpr.lib 
.\..\..\VC2017\Lib\version.lib 
.\..\..\VC2017\Lib\wsock32.lib 
.\..\..\VC2017\Lib\msimg32.lib 
.\..\..\VC2017\Lib\oledlg.lib 
.\..\..\VC2017\Lib\psapi.lib 
.\..\..\VC2017\Lib\gdiplus.lib 
.\..\..\VC2017\Lib\winmm.lib 
.\..\..\VC2017\Lib\libvcruntime.lib 
.\..\..\VC2017\lib\libucrt.lib 
.\lib\oldnames.lib 
.\lib\ucrt.lib 
.\lib\uuid.lib 
.\lib\libcmt.lib 
scuola64.res 
]]>
cnavarro wrote: Wed Mar 26, 2025 4:52 pm This folder is correct?
$(VC32DIR)\
yes, the path is correct.

Code: Select all | Expand


content of file: msvc.tmp

scuola.obj functscl.obj TcBrowse.obj 
.\..\..\fwh642501\lib\FiveH64.lib 
.\..\..\fwh642501\lib\FiveHC64.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbrtl.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbvm.lib 
.\..\..\Hb64vC22\lib\win\msvc64\gtgui.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hblang.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbmacro.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbrdd.lib 
.\..\..\Hb64vC22\lib\win\msvc64\rddntx.lib 
.\..\..\Hb64vC22\lib\win\msvc64\rddcdx.lib 
.\..\..\Hb64vC22\lib\win\msvc64\rddfpt.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbsix.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbdebug.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbcommon.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbpp.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbwin.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbcplr.lib 
.\..\..\Hb64vC22\lib\win\msvc64\xhb.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbpcre.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbct.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbcpage.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbzlib.lib 
.\..\..\Hb64vC22\lib\win\msvc64\png.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbzlib.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbziparc.lib 
.\..\..\Hb64vC22\lib\win\msvc64\hbmzip.lib 
.\..\..\Hb64vC22\lib\win\msvc64\minizip.lib 
.\..\..\VC2017\Lib\gdi32.lib 
.\..\..\VC2017\Lib\winspool.lib 
.\..\..\VC2017\Lib\comctl32.lib 
.\..\..\VC2017\Lib\comdlg32.lib 
.\..\..\VC2017\Lib\advapi32.lib 
.\..\..\VC2017\Lib\shell32.lib 
.\..\..\VC2017\Lib\ole32.lib 
.\..\..\VC2017\Lib\oleaut32.lib 
.\..\..\VC2017\Lib\odbc32.lib 
.\..\..\VC2017\Lib\odbccp32.lib 
.\..\..\VC2017\Lib\iphlpapi.lib 
.\..\..\VC2017\Lib\mpr.lib 
.\..\..\VC2017\Lib\version.lib 
.\..\..\VC2017\Lib\wsock32.lib 
.\..\..\VC2017\Lib\msimg32.lib 
.\..\..\VC2017\Lib\oledlg.lib 
.\..\..\VC2017\Lib\psapi.lib 
.\..\..\VC2017\Lib\gdiplus.lib 
.\..\..\VC2017\Lib\winmm.lib 
.\..\..\VC2017\Lib\libvcruntime.lib 
.\..\..\VC2017\lib\libucrt.lib 
.\lib\oldnames.lib 
.\lib\ucrt.lib 
.\lib\uuid.lib 
.\lib\libcmt.lib 
scuola64.res 
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by marzio]]> 2025-03-26T11:59:59-06:00 2025-03-26T11:59:59-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278584#p278584

Code: Select all | Expand

hbrtl.lib(vfile.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbwin.lib(win_misc_1.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbct.lib(trig.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbrtl.lib(hbi18n1.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbrtl.lib(gttone.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbrtl.lib(itemseri.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(gencc.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbpcre.lib(pcrecomp.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbct.lib(dattime3.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbct.lib(ctmath2.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(harboury.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(complex.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(genc.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(exproptb.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcommon.lib(expropt1.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcommon.lib(expropt2.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbwin.lib(olecore.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(hbmain.obj) : error LNK2001: simbolo esterno _fltused non risolto
rddfpt.lib(dbffpt1.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcommon.lib(hbstr.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcommon.lib(hbdate.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcommon.lib(hbprintf.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbrdd.lib(sdf1.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbrdd.lib(dbf1.obj) : error LNK2001: simbolo esterno _fltused non risolto
rddntx.lib(dbfntx1.obj) : error LNK2001: simbolo esterno _fltused non risolto
rddcdx.lib(dbfcdx1.obj) : error LNK2001: simbolo esterno _fltused non risolto
FiveHC64.lib(richedit.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(richedi5.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(tabctrlw.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(tabctrl.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(getdir.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(fwunicode.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(icons.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(nonclient.obj) : error LNK2001: simbolo esterno memset non risolto
FiveH64.lib(getsysin.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(dlg2chr.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(winexec.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(getfile.obj) : error LNK2001: simbolo esterno memset non risolto

..............................

minizip.lib(ioapi.obj) : error LNK2019: riferimento al simbolo esterno __imp__ftelli64 non risolto nella funzione ftell64_file_func
hbrtl.lib(gttone.obj) : error LNK2019: riferimento al simbolo esterno __imp_Beep non risolto nella funzione hb_gt_wNtTone
hbrtl.lib(itemseri.obj) : error LNK2019: riferimento al simbolo esterno _byteswap_uint64 non risolto nella funzione _hb_get_rev_uint64
hbvm.lib(dynlibhb.obj) : error LNK2019: riferimento al simbolo esterno __imp_LoadLibraryW non risolto nella funzione hb_libLoad
hbpp.lib(ppcore.obj) : error LNK2019: riferimento al simbolo esterno __imp_fputs non risolto nella funzione hb_pp_dumpEnd
hbwin.lib(win_misc_1.obj) : error LNK2019: riferimento al simbolo esterno __imp_QueryPerformanceFrequency non risolto nella funzione HB_FUN_WIN_QPCOUNTER2SEC
hbwin.lib(win_misc_1.obj) : error LNK2019: riferimento al simbolo esterno __imp_CreateEventW non risolto nella funzione HB_FUN_WIN_SYSREFRESH
hbwin.lib(win_misc_1.obj) : error LNK2019: riferimento al simbolo esterno __imp_FindResourceW non risolto nella funzione HB_FUN_WIN_LOADRESOURCE
hbwin.lib(win_misc_1.obj) : error LNK2019: riferimento al simbolo esterno __imp_MsgWaitForMultipleObjects non risolto nella funzione HB_FUN_WIN_SYSREFRESH
hbwin.lib(wapi_shellapi.obj) : error LNK2019: riferimento al simbolo esterno __imp_ShellExecuteExW non risolto nella funzione HB_FUN_WAPI_SHELLEXECUTE_WAIT
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegCreateKeyExW non risolto nella funzione HB_FUN_WIN_REGCREATEKEYEX
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegDeleteKeyW non risolto nella funzione HB_FUN_WIN_REGDELETEKEY
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegDeleteValueW non risolto nella funzione HB_FUN_WIN_REGDELETEVALUE
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegOpenKeyExW non risolto nella funzione HB_FUN_WIN_REGOPENKEYEX
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegQueryValueExW non risolto nella funzione HB_FUN_WIN_REGQUERYVALUEEX
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegSetValueExW non risolto nella funzione HB_FUN_WIN_REGSETVALUEEX
.\..\..\VC2017\Lib\gdi32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\winspool.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\comctl32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\comdlg32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\advapi32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\shell32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\ole32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\oleaut32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\odbc32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\odbccp32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\iphlpapi.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\mpr.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\version.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\wsock32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\msimg32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\oledlg.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\psapi.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\gdiplus.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\winmm.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\libvcruntime.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\lib\libucrt.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\lib\ucrt.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\lib\libcmt.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
scuola.exe : fatal error LNK1120: 1008 esterni non risolti
]]>

Code: Select all | Expand

hbrtl.lib(vfile.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbwin.lib(win_misc_1.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbct.lib(trig.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbrtl.lib(hbi18n1.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbrtl.lib(gttone.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbrtl.lib(itemseri.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(gencc.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbpcre.lib(pcrecomp.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbct.lib(dattime3.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbct.lib(ctmath2.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(harboury.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(complex.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(genc.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(exproptb.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcommon.lib(expropt1.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcommon.lib(expropt2.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbwin.lib(olecore.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcplr.lib(hbmain.obj) : error LNK2001: simbolo esterno _fltused non risolto
rddfpt.lib(dbffpt1.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcommon.lib(hbstr.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcommon.lib(hbdate.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbcommon.lib(hbprintf.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbrdd.lib(sdf1.obj) : error LNK2001: simbolo esterno _fltused non risolto
hbrdd.lib(dbf1.obj) : error LNK2001: simbolo esterno _fltused non risolto
rddntx.lib(dbfntx1.obj) : error LNK2001: simbolo esterno _fltused non risolto
rddcdx.lib(dbfcdx1.obj) : error LNK2001: simbolo esterno _fltused non risolto
FiveHC64.lib(richedit.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(richedi5.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(tabctrlw.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(tabctrl.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(getdir.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(fwunicode.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(icons.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(nonclient.obj) : error LNK2001: simbolo esterno memset non risolto
FiveH64.lib(getsysin.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(dlg2chr.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(winexec.obj) : error LNK2001: simbolo esterno memset non risolto
FiveHC64.lib(getfile.obj) : error LNK2001: simbolo esterno memset non risolto

..............................

minizip.lib(ioapi.obj) : error LNK2019: riferimento al simbolo esterno __imp__ftelli64 non risolto nella funzione ftell64_file_func
hbrtl.lib(gttone.obj) : error LNK2019: riferimento al simbolo esterno __imp_Beep non risolto nella funzione hb_gt_wNtTone
hbrtl.lib(itemseri.obj) : error LNK2019: riferimento al simbolo esterno _byteswap_uint64 non risolto nella funzione _hb_get_rev_uint64
hbvm.lib(dynlibhb.obj) : error LNK2019: riferimento al simbolo esterno __imp_LoadLibraryW non risolto nella funzione hb_libLoad
hbpp.lib(ppcore.obj) : error LNK2019: riferimento al simbolo esterno __imp_fputs non risolto nella funzione hb_pp_dumpEnd
hbwin.lib(win_misc_1.obj) : error LNK2019: riferimento al simbolo esterno __imp_QueryPerformanceFrequency non risolto nella funzione HB_FUN_WIN_QPCOUNTER2SEC
hbwin.lib(win_misc_1.obj) : error LNK2019: riferimento al simbolo esterno __imp_CreateEventW non risolto nella funzione HB_FUN_WIN_SYSREFRESH
hbwin.lib(win_misc_1.obj) : error LNK2019: riferimento al simbolo esterno __imp_FindResourceW non risolto nella funzione HB_FUN_WIN_LOADRESOURCE
hbwin.lib(win_misc_1.obj) : error LNK2019: riferimento al simbolo esterno __imp_MsgWaitForMultipleObjects non risolto nella funzione HB_FUN_WIN_SYSREFRESH
hbwin.lib(wapi_shellapi.obj) : error LNK2019: riferimento al simbolo esterno __imp_ShellExecuteExW non risolto nella funzione HB_FUN_WAPI_SHELLEXECUTE_WAIT
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegCreateKeyExW non risolto nella funzione HB_FUN_WIN_REGCREATEKEYEX
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegDeleteKeyW non risolto nella funzione HB_FUN_WIN_REGDELETEKEY
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegDeleteValueW non risolto nella funzione HB_FUN_WIN_REGDELETEVALUE
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegOpenKeyExW non risolto nella funzione HB_FUN_WIN_REGOPENKEYEX
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegQueryValueExW non risolto nella funzione HB_FUN_WIN_REGQUERYVALUEEX
hbwin.lib(win_regc.obj) : error LNK2019: riferimento al simbolo esterno __imp_RegSetValueExW non risolto nella funzione HB_FUN_WIN_REGSETVALUEEX
.\..\..\VC2017\Lib\gdi32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\winspool.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\comctl32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\comdlg32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\advapi32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\shell32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\ole32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\oleaut32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\odbc32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\odbccp32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\iphlpapi.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\mpr.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\version.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\wsock32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\msimg32.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\oledlg.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\psapi.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\gdiplus.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\winmm.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\Lib\libvcruntime.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\..\..\VC2017\lib\libucrt.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\lib\ucrt.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
.\lib\libcmt.lib : warning LNK4272: il tipo 'x86' del computer della libreria   in conflitto con il tipo 'x64' del computer di destinazione
scuola.exe : fatal error LNK1120: 1008 esterni non risolti
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by cnavarro]]> 2025-03-26T13:18:10-06:00 2025-03-26T13:18:10-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278588#p278588
marzio wrote: Wed Mar 26, 2025 5:14 pm
cnavarro wrote: Wed Mar 26, 2025 4:52 pm This folder is correct?
$(VC32DIR)\
yes, the path is correct.
Excuse me, so the path that contains that definition is correct?
VC32DIR=.\..\..\VC2017
]]>
marzio wrote: Wed Mar 26, 2025 5:14 pm
cnavarro wrote: Wed Mar 26, 2025 4:52 pm This folder is correct?
$(VC32DIR)\
yes, the path is correct.
Excuse me, so the path that contains that definition is correct?
VC32DIR=.\..\..\VC2017
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by Antonio Linares]]> 2025-03-26T14:50:38-06:00 2025-03-26T14:50:38-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278592#p278592
You are mixing 32 and 64 bits:
> .\..\..\VC2017\Lib\gdi32.lib : warning LNK4272: il tipo 'x86' del computer della libreria in conflitto con il tipo 'x64' del computer di destinazione

Please go to FWH64\samples and run this:

buildh64.bat tutor01

Everything should work fine. Please try it.]]>

You are mixing 32 and 64 bits:
> .\..\..\VC2017\Lib\gdi32.lib : warning LNK4272: il tipo 'x86' del computer della libreria in conflitto con il tipo 'x64' del computer di destinazione

Please go to FWH64\samples and run this:

buildh64.bat tutor01

Everything should work fine. Please try it.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by marzio]]> 2025-03-26T15:17:51-06:00 2025-03-26T15:17:51-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278596#p278596
Antonio Linares wrote: Wed Mar 26, 2025 8:50 pm Dear Marzio,

You are mixing 32 and 64 bits:
> .\..\..\VC2017\Lib\gdi32.lib : warning LNK4272: il tipo 'x86' del computer della libreria in conflitto con il tipo 'x64' del computer di destinazione

Please go to FWH64\samples and run this:

buildh64.bat tutor01

Everything should work fine. Please try it.
buildh64 tutor01
i obtain this result:

Code: Select all | Expand

┌────────────────────────────────────────────────────────────────────────────┐
│ FWH 64 for Harbour 25.01 (VS64bits)  Jan. 2025  Harbour development power  │▄
│ (c) FiveTech 1993-2025 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 │█
└────────────────────────────────────────────────────────────────────────────┘█
  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Error in script usage. The correct usage is:
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" [option]
  or
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" [option] store
  or
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" [option] [version number]
  or
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" [option] store [version number]
where [option] is: x86 | amd64 | arm | x86_amd64 | x86_arm | amd64_x86 | amd64_arm
where [version number] is either the full Windows 10 SDK version number or "8.1" to use the windows 8.1 SDK
:
The store parameter sets environment variables to support
  store (rather than desktop) development.
:
For example:
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_arm store
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 10.0.10240.0
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_arm store 10.0.10240.0
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 8.1
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 store 8.1
:
Please make sure either Visual Studio or C++ Build SKU is installed.
Compiling...
Harbour 3.2.0dev (r2502110321)
Copyright (c) 1999-2024, https://harbour.github.io/
Compiling 'tutor01.prg' and generating preprocessed output to 'tutor01.ppo'...
Lines 5031, Functions/Procedures 1
Generating C source output to 'tutor01.c'... Done.
"cl" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.
"rc" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.
"link" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.
* Linking errors *

c:\fwh64\samples>
]]>
Antonio Linares wrote: Wed Mar 26, 2025 8:50 pm Dear Marzio,

You are mixing 32 and 64 bits:
> .\..\..\VC2017\Lib\gdi32.lib : warning LNK4272: il tipo 'x86' del computer della libreria in conflitto con il tipo 'x64' del computer di destinazione

Please go to FWH64\samples and run this:

buildh64.bat tutor01

Everything should work fine. Please try it.
buildh64 tutor01
i obtain this result:

Code: Select all | Expand

┌────────────────────────────────────────────────────────────────────────────┐
│ FWH 64 for Harbour 25.01 (VS64bits)  Jan. 2025  Harbour development power  │▄
│ (c) FiveTech 1993-2025 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 │█
└────────────────────────────────────────────────────────────────────────────┘█
  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Error in script usage. The correct usage is:
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" [option]
  or
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" [option] store
  or
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" [option] [version number]
  or
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" [option] store [version number]
where [option] is: x86 | amd64 | arm | x86_amd64 | x86_arm | amd64_x86 | amd64_arm
where [version number] is either the full Windows 10 SDK version number or "8.1" to use the windows 8.1 SDK
:
The store parameter sets environment variables to support
  store (rather than desktop) development.
:
For example:
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_arm store
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 10.0.10240.0
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_arm store 10.0.10240.0
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 8.1
    "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 store 8.1
:
Please make sure either Visual Studio or C++ Build SKU is installed.
Compiling...
Harbour 3.2.0dev (r2502110321)
Copyright (c) 1999-2024, https://harbour.github.io/
Compiling 'tutor01.prg' and generating preprocessed output to 'tutor01.ppo'...
Lines 5031, Functions/Procedures 1
Generating C source output to 'tutor01.c'... Done.
"cl" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.
"rc" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.
"link" non è riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.
* Linking errors *

c:\fwh64\samples>
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by Antonio Linares]]> 2025-03-26T15:26:20-06:00 2025-03-26T15:26:20-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278597#p278597
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat

thank you]]>

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat

thank you]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by marzio]]> 2025-03-26T15:30:34-06:00 2025-03-26T15:33:15-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278599#p278599
Antonio Linares wrote: Wed Mar 26, 2025 9:26 pm Please check if you have this folder and file:

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat

thank you
no, i had notice that the vcvarsall.bat file did not exist]]>
Antonio Linares wrote: Wed Mar 26, 2025 9:26 pm Please check if you have this folder and file:

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat

thank you
no, i had notice that the vcvarsall.bat file did not exist]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by marzio]]> 2025-03-26T15:31:37-06:00 2025-03-26T15:31:37-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278600#p278600
cnavarro wrote: Wed Mar 26, 2025 7:18 pm
marzio wrote: Wed Mar 26, 2025 5:14 pm
cnavarro wrote: Wed Mar 26, 2025 4:52 pm This folder is correct?
yes, the path is correct.
Excuse me, so the path that contains that definition is correct?
VC32DIR=.\..\..\VC2017
i have a folder d:\winclip that contain fivewin folder, harbour folder, vc2017 folder , vc2022 folder , applications folder.
applications folder contains scuola64 folder where there are the prg files, mak file, and where i launch my build64.bat
from this folder i must go down of 2 folder to return to winclip folder and find the harbour, fivewin and vc2022 folders.]]>
cnavarro wrote: Wed Mar 26, 2025 7:18 pm
marzio wrote: Wed Mar 26, 2025 5:14 pm
cnavarro wrote: Wed Mar 26, 2025 4:52 pm This folder is correct?
yes, the path is correct.
Excuse me, so the path that contains that definition is correct?
VC32DIR=.\..\..\VC2017
i have a folder d:\winclip that contain fivewin folder, harbour folder, vc2017 folder , vc2022 folder , applications folder.
applications folder contains scuola64 folder where there are the prg files, mak file, and where i launch my build64.bat
from this folder i must go down of 2 folder to return to winclip folder and find the harbour, fivewin and vc2022 folders.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by Antonio Linares]]> 2025-03-26T15:37:23-06:00 2025-03-26T15:37:23-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278602#p278602
Don't move it to a different place. Leave it as it installs.]]>

Don't move it to a different place. Leave it as it installs.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by marzio]]> 2025-03-26T15:40:06-06:00 2025-03-26T15:40:06-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278604#p278604
i have reinstalled and updated visual studio 2022 community and now the bat files are present.
buildh64 tutor01 now works fine.
now i try to compile my program.

thanks]]>

i have reinstalled and updated visual studio 2022 community and now the bat files are present.
buildh64 tutor01 now works fine.
now i try to compile my program.

thanks]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by marzio]]> 2025-03-27T01:51:47-06:00 2025-03-27T01:51:47-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278611#p278611
echo "%VCDIR%\Tools\MSVC\14.43.34808\lib\x64\Libcmt.lib" >> msvc.tmp
echo "%VCDIR%\Tools\MSVC\14.43.34808\lib\x64\libvcruntime.lib" >> msvc.tmp

and now i have an exe file!]]>

echo "%VCDIR%\Tools\MSVC\14.43.34808\lib\x64\Libcmt.lib" >> msvc.tmp
echo "%VCDIR%\Tools\MSVC\14.43.34808\lib\x64\libvcruntime.lib" >> msvc.tmp

and now i have an exe file!]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by marzio]]> 2025-03-27T02:16:26-06:00 2025-03-27T02:16:26-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278614#p278614 have you an example?
thanks]]>
have you an example?
thanks]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by Antonio Linares]]> 2025-03-27T02:20:53-06:00 2025-03-27T02:20:53-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278616#p278616
go64.bat and test64.hbp]]>

go64.bat and test64.hbp]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by marzio]]> 2025-03-27T04:02:17-06:00 2025-03-27T04:02:17-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278617#p278617
but i have substitute %1 with @FileComp.txt for harobur compilation in buildh64.bat
%hdir%\bin\win\msvc64\harbour @FileComp.txt /n /i%fwdir%\include;%hdir%\include /w /p /d__64__ %2 %3 > comp.log 2> warnings.log
and i obtain 3 .c files.

I have modify cl.exe inserting the 3 files .c instead of %1.c
cl -TC -W3 -O2 -c -I%hdir%\include -D_WIN64 -D__FLAT__ -I%fwdir%\include -I-I"%ProgramFiles(x86)%\Windows Kits"\10\Include\10.0.18362.0\ucrt scuola.c functscl.c TcBrowse.c

i have modify: echo %1.obj > msvc.tmp with echo scuola.obj functscl.obj TcBrowse.obj > msvc.tmp
and now it generate a msvc.tmp file with 3 obj file and the necessary lib files.

now i have new problem:
some functions called from scuola.prg but residents in funcscl.prg give this errors:

scuola.c
functscl.c
TcBrowse.c
Generazione del codice in corso...
functscl.obj : error LNK2005: HB_FUN_LGETPASSWORD just defined in scuola.obj
functscl.obj : error LNK2005: HB_FUN_MOVE_FILE già definito in scuola.obj
TcBrowse.obj : error LNK2005: HB_FUN_TCBROWSE già definito in scuola.obj
ecc
scuola.exe : fatal error LNK1169: rilevato uno o più simboli definiti più volte
* Linking errors *


is there a flag to put to avoid this errors?
thanks]]>

but i have substitute %1 with @FileComp.txt for harobur compilation in buildh64.bat
%hdir%\bin\win\msvc64\harbour @FileComp.txt /n /i%fwdir%\include;%hdir%\include /w /p /d__64__ %2 %3 > comp.log 2> warnings.log
and i obtain 3 .c files.

I have modify cl.exe inserting the 3 files .c instead of %1.c
cl -TC -W3 -O2 -c -I%hdir%\include -D_WIN64 -D__FLAT__ -I%fwdir%\include -I-I"%ProgramFiles(x86)%\Windows Kits"\10\Include\10.0.18362.0\ucrt scuola.c functscl.c TcBrowse.c

i have modify: echo %1.obj > msvc.tmp with echo scuola.obj functscl.obj TcBrowse.obj > msvc.tmp
and now it generate a msvc.tmp file with 3 obj file and the necessary lib files.

now i have new problem:
some functions called from scuola.prg but residents in funcscl.prg give this errors:

scuola.c
functscl.c
TcBrowse.c
Generazione del codice in corso...
functscl.obj : error LNK2005: HB_FUN_LGETPASSWORD just defined in scuola.obj
functscl.obj : error LNK2005: HB_FUN_MOVE_FILE già definito in scuola.obj
TcBrowse.obj : error LNK2005: HB_FUN_TCBROWSE già definito in scuola.obj
ecc
scuola.exe : fatal error LNK1169: rilevato uno o più simboli definiti più volte
* Linking errors *


is there a flag to put to avoid this errors?
thanks]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by Antonio Linares]]> 2025-03-27T06:54:09-06:00 2025-03-27T06:54:09-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278625#p278625
/force:multiple]]>

/force:multiple]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: link problem with fivewin 25.01 64 bit and VS2022 :: Reply by marzio]]> 2025-03-27T07:14:31-06:00 2025-03-27T07:14:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45565&p=278626#p278626
now all works fine!

i have also correct this string for harbor compile with 3 files:
%hdir%\bin\win\msvc64\harbour scuola functscl TcBrowse /n /i%fwdir%\include;%hdir%\include /p /d__64__ %2 %3 > comp.log 2> warnings.log

thanks to all.
Marzio]]>

now all works fine!

i have also correct this string for harbor compile with 3 files:
%hdir%\bin\win\msvc64\harbour scuola functscl TcBrowse /n /i%fwdir%\include;%hdir%\include /p /d__64__ %2 %3 > comp.log 2> warnings.log

thanks to all.
Marzio]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: How load png from resource :: Reply by Silvio.Falconi]]> 2025-03-27T12:39:56-06:00 2025-03-27T12:39:56-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=15100&p=278640#p278640
PROCEDURE Main()
LOCAL cDatiPng
cDatiPng := cResToStr("DASH_HOME","PNG")
IF !Empty(cDatiPng)
hb_MemoWrit("immagine_estratta.png", cDatiPng)
? "PNG estratto con successo!"
ELSE
? "Errore: risorsa non trovata."
ENDIF
RETURN

and not found the resource why ?]]>

PROCEDURE Main()
LOCAL cDatiPng
cDatiPng := cResToStr("DASH_HOME","PNG")
IF !Empty(cDatiPng)
hb_MemoWrit("immagine_estratta.png", cDatiPng)
? "PNG estratto con successo!"
ELSE
? "Errore: risorsa non trovata."
ENDIF
RETURN

and not found the resource why ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: webview2 and images :: Author Silvio.Falconi]]> 2025-03-24T17:00:04-06:00 2025-03-24T17:00:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278547#p278547

Code: Select all | Expand

 <div class="quick-item" onclick="callHarbourFunction('Clienti')">
                           <img src="img/clienti.png" alt="Clienti">
                           <div>Clienti</div>
                       </div>
the problem is basically that the html page does not actually exist physically because I load it into memory. If the HTML page does not exist as a physical file but is dynamically loaded into memory inside TWebView, then the paths relative to the local files may not work correctly. I have tried several solutions


I tried to insert the path of the images with local

Code: Select all | Expand

cFolder := cFilePath( GetModuleFileName( GetInstance() ) ) + "img/"
but it doesn't work

then I tried on the browser file:///C:/Work/errori/webview/img/clienti.png

the image opens from the browser but doesn't appear in TWebView, then the problem is due to TWebView that blocks the loading of local resources

chatgpt suggests me to set this parameter oWebView:lAllowLocalContent := .T. but it gives me an error telling me that it can't find this variable

TWebView2 doesn't know where to look for images

When you load an HTML file from disk, the browser knows that the path img/clienti.png means "img folder next to the HTML file".

If you instead generate the HTML in memory, TWebView doesn't have a reference path, so it doesn't find local images.

WebView2 may treat the HTML as a temporary file





Any solution ?]]>

Code: Select all | Expand

 <div class="quick-item" onclick="callHarbourFunction('Clienti')">
                           <img src="img/clienti.png" alt="Clienti">
                           <div>Clienti</div>
                       </div>
the problem is basically that the html page does not actually exist physically because I load it into memory. If the HTML page does not exist as a physical file but is dynamically loaded into memory inside TWebView, then the paths relative to the local files may not work correctly. I have tried several solutions


I tried to insert the path of the images with local

Code: Select all | Expand

cFolder := cFilePath( GetModuleFileName( GetInstance() ) ) + "img/"
but it doesn't work

then I tried on the browser file:///C:/Work/errori/webview/img/clienti.png

the image opens from the browser but doesn't appear in TWebView, then the problem is due to TWebView that blocks the loading of local resources

chatgpt suggests me to set this parameter oWebView:lAllowLocalContent := .T. but it gives me an error telling me that it can't find this variable

TWebView2 doesn't know where to look for images

When you load an HTML file from disk, the browser knows that the path img/clienti.png means "img folder next to the HTML file".

If you instead generate the HTML in memory, TWebView doesn't have a reference path, so it doesn't find local images.

WebView2 may treat the HTML as a temporary file





Any solution ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by Lailton]]> 2025-03-24T19:40:13-06:00 2025-03-24T19:40:13-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278548#p278548
Example for PNG but you can adjust to jpeg etc.

Code: Select all | Expand

function image2base64( cFile )
return "data:image/png;base64," + hb_base64encode( hb_memoRead( cFile ) )
]]>

Example for PNG but you can adjust to jpeg etc.

Code: Select all | Expand

function image2base64( cFile )
return "data:image/png;base64," + hb_base64encode( hb_memoRead( cFile ) )
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by Silvio.Falconi]]> 2025-03-25T04:02:45-06:00 2025-03-25T04:02:45-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278554#p278554
Lailton wrote: Tue Mar 25, 2025 1:40 am You can convert it to base64encode and use it on the HTML

Example for PNG but you can adjust to jpeg etc.

Code: Select all | Expand

function image2base64( cFile )
return "data:image/png;base64," + hb_base64encode( hb_memoRead( cFile ) )

not run!!

I made sample

LOCAL cHtml
LOCAL cImgHome := image2base64( "img/home.png" )

TEXT INTO cHtml
<!DOCTYPE html>
<html lang="it">

<span class="section-title"><img src="{cImgHome}" alt="Home"> home</span>
</body>
</html>
ENDTEXT

hb_StrReplace( cHtml, "{cImgHome}", cImgHome )]]>
Lailton wrote: Tue Mar 25, 2025 1:40 am You can convert it to base64encode and use it on the HTML

Example for PNG but you can adjust to jpeg etc.

Code: Select all | Expand

function image2base64( cFile )
return "data:image/png;base64," + hb_base64encode( hb_memoRead( cFile ) )

not run!!

I made sample

LOCAL cHtml
LOCAL cImgHome := image2base64( "img/home.png" )

TEXT INTO cHtml
<!DOCTYPE html>
<html lang="it">

<span class="section-title"><img src="{cImgHome}" alt="Home"> home</span>
</body>
</html>
ENDTEXT

hb_StrReplace( cHtml, "{cImgHome}", cImgHome )]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by Lailton]]> 2025-03-25T10:07:47-06:00 2025-03-25T10:07:47-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278556#p278556
"/www/var/img/home.png"
It should be able to READ file and convert to base64.

also here I think that should be:

Code: Select all | Expand

cHtml := hb_StrReplace( cHtml, "{cImgHome}", cImgHome )
]]>
"/www/var/img/home.png"
It should be able to READ file and convert to base64.

also here I think that should be:

Code: Select all | Expand

cHtml := hb_StrReplace( cHtml, "{cImgHome}", cImgHome )
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by Silvio.Falconi]]> 2025-03-25T14:41:08-06:00 2025-03-25T14:41:08-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278557#p278557 The HTML Is on Memory
The HTML not exist It Is load on Memory]]>
The HTML Is on Memory
The HTML not exist It Is load on Memory]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by cnavarro]]> 2025-03-25T16:38:28-06:00 2025-03-25T16:38:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278558#p278558 <![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by cmsoft]]> 2025-03-25T16:44:23-06:00 2025-03-25T16:44:23-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278559#p278559 Image
El codigo que use fue el propuesto por Laiton

Code: Select all | Expand

cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\fwh21\bitmaps\pngs\2.png' ) )
oDashBoard:cHtml := '<!DOCTYPE html> '+;
                            '<html lang="it"> '+;
                            '<span class="section-title"><img src="'+cImgHome+'" alt="Home"> home</span>'+;
                            '</body>'+;
                            '</html>'
Tambien puedes usar la ruta relativa, tambien me funcionó

Code: Select all | Expand

'..\bitmaps\pngs\2.png'
Use como ejemple el pinguino que esta en la carpeta bitmaps/pngs]]>
Image
El codigo que use fue el propuesto por Laiton

Code: Select all | Expand

cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\fwh21\bitmaps\pngs\2.png' ) )
oDashBoard:cHtml := '<!DOCTYPE html> '+;
                            '<html lang="it"> '+;
                            '<span class="section-title"><img src="'+cImgHome+'" alt="Home"> home</span>'+;
                            '</body>'+;
                            '</html>'
Tambien puedes usar la ruta relativa, tambien me funcionó

Code: Select all | Expand

'..\bitmaps\pngs\2.png'
Use como ejemple el pinguino que esta en la carpeta bitmaps/pngs]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by Silvio.Falconi]]> 2025-03-26T02:12:41-06:00 2025-03-26T02:12:41-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278560#p278560
cmsoft wrote: Tue Mar 25, 2025 10:44 pm Con las indicaciones de Laiton, e indicando el nombre completo de la ruta, el programa funciona como es esperado
Image
El codigo que use fue el propuesto por Laiton

Code: Select all | Expand

cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\fwh21\bitmaps\pngs\2.png' ) )
oDashBoard:cHtml := '<!DOCTYPE html> '+;
                            '<html lang="it"> '+;
                            '<span class="section-title"><img src="'+cImgHome+'" alt="Home"> home</span>'+;
                            '</body>'+;
                            '</html>'
Tambien puedes usar la ruta relativa, tambien me funcionó

Code: Select all | Expand

'..\bitmaps\pngs\2.png'
Use como ejemple el pinguino que esta en la carpeta bitmaps/pngs

Cesar,
I have the exe on Root webview3 and the image pngs into /img sample img\home.png


I tried with

FUNCTION Html()
LOCAL cHtml
local cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\work\fwh\bitmaps\pngs\2.png' ) )
TEXT INTO cHtml
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Dashboard</title>

</head>
<body>
<div class="container">
<div class="left-column">
<div class="box">
<span class="section-title">
<img src="'+cImgHome+'" alt="Home"> TITLE HOME</span>
<a href="#" onclick="callHarbourFunction('Home'); return false;"><img src="'+cImgHome+'" alt="home"> title1</a>
<p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p>
</div>
</body>
</html>
ENDTEXT
RETURN cHtml]]>
cmsoft wrote: Tue Mar 25, 2025 10:44 pm Con las indicaciones de Laiton, e indicando el nombre completo de la ruta, el programa funciona como es esperado
Image
El codigo que use fue el propuesto por Laiton

Code: Select all | Expand

cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\fwh21\bitmaps\pngs\2.png' ) )
oDashBoard:cHtml := '<!DOCTYPE html> '+;
                            '<html lang="it"> '+;
                            '<span class="section-title"><img src="'+cImgHome+'" alt="Home"> home</span>'+;
                            '</body>'+;
                            '</html>'
Tambien puedes usar la ruta relativa, tambien me funcionó

Code: Select all | Expand

'..\bitmaps\pngs\2.png'
Use como ejemple el pinguino que esta en la carpeta bitmaps/pngs

Cesar,
I have the exe on Root webview3 and the image pngs into /img sample img\home.png


I tried with

FUNCTION Html()
LOCAL cHtml
local cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\work\fwh\bitmaps\pngs\2.png' ) )
TEXT INTO cHtml
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Dashboard</title>

</head>
<body>
<div class="container">
<div class="left-column">
<div class="box">
<span class="section-title">
<img src="'+cImgHome+'" alt="Home"> TITLE HOME</span>
<a href="#" onclick="callHarbourFunction('Home'); return false;"><img src="'+cImgHome+'" alt="home"> title1</a>
<p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p>
</div>
</body>
</html>
ENDTEXT
RETURN cHtml]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by Silvio.Falconi]]> 2025-03-26T02:47:42-06:00 2025-03-26T02:47:42-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278561#p278561

Code: Select all | Expand

Function html()
    LOCAL cHtml
    cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\work\fwh\bitmaps\pngs\2.png' ) )

    TEXT INTO cHtml
     <!DOCTYPE html>
     <html lang="it">
     <span class="section-title">
         <img src=cImgHome alt="Home"> home</span>
         </body>
         </html>
            ENDTEXT
    return cHtml

Not run


If I made

Code: Select all | Expand

Function html()
    cImgHome := "data:image/png;base64," +;
    hb_base64encode( hb_memoRead( 'c:\work\fwh\bitmaps\pngs\2.png' ) )
cHtml := '<!DOCTYPE html> '+;
         '<html lang="it"> '+'<span class="section-title"><img src="'+cImgHome+'" alt="Home"> home</span>'+;
         '</body>'+;
        '</html>'

         return cHtml

run ok



So when I use TEXT INTO cHtml why there are problems ?]]>

Code: Select all | Expand

Function html()
    LOCAL cHtml
    cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\work\fwh\bitmaps\pngs\2.png' ) )

    TEXT INTO cHtml
     <!DOCTYPE html>
     <html lang="it">
     <span class="section-title">
         <img src=cImgHome alt="Home"> home</span>
         </body>
         </html>
            ENDTEXT
    return cHtml

Not run


If I made

Code: Select all | Expand

Function html()
    cImgHome := "data:image/png;base64," +;
    hb_base64encode( hb_memoRead( 'c:\work\fwh\bitmaps\pngs\2.png' ) )
cHtml := '<!DOCTYPE html> '+;
         '<html lang="it"> '+'<span class="section-title"><img src="'+cImgHome+'" alt="Home"> home</span>'+;
         '</body>'+;
        '</html>'

         return cHtml

run ok



So when I use TEXT INTO cHtml why there are problems ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by Silvio.Falconi]]> 2025-03-26T02:56:08-06:00 2025-03-26T02:56:08-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278562#p278562

Code: Select all | Expand

Function html()
    LOCAL cHtml
    cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\work\fwh\bitmaps\pngs\2.png' ) )

    TEXT INTO cHtml
     <!DOCTYPE html>
     <html lang="it">
     <span class="section-title">
         <img src=&cImgHome alt="Home"> home</span>
         </body>
         </html>
         ENDTEXT

         msginfo(cHtml)

    return cHtml

Run ok


Why ? I must use macro ? <img src=&cImgHome alt="Home"> home</span>]]>

Code: Select all | Expand

Function html()
    LOCAL cHtml
    cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\work\fwh\bitmaps\pngs\2.png' ) )

    TEXT INTO cHtml
     <!DOCTYPE html>
     <html lang="it">
     <span class="section-title">
         <img src=&cImgHome alt="Home"> home</span>
         </body>
         </html>
         ENDTEXT

         msginfo(cHtml)

    return cHtml

Run ok


Why ? I must use macro ? <img src=&cImgHome alt="Home"> home</span>]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by Silvio.Falconi]]> 2025-03-26T04:30:56-06:00 2025-03-26T04:30:56-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278563#p278563
I make

Code: Select all | Expand

#include "fivewin.ch"

FUNCTION Main()
   LOCAL cHtml
   LOCAL oWebView := TWebView2():New()

   // Genera il contenuto HTML con immagini Base64
   cHtml := Html()

   // Carica l'HTML direttamente in memoria
   oWebView:SetHtml( cHtml )
   oWebView:SetTitle( "Dashboard" )
   oWebView:SetSize( 1024, 768 )
   oWebView:Run()
   oWebView:Destroy()

   RETURN NIL

Function html()
    local cImagesPath := cFilePath( GetModuleFileName( GetInstance() ) )+"\img\"
    local cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( cImagesPath+'home.png' ) )
    local  cHtml

      TEXT INTO cHtml

     <!DOCTYPE html>
     <html lang="it">
     <span class="section-title">
  <img src="'"+cImgHome+"'"  alt="Home"> home</span>
         </body>
         </html>

         ENDTEXT

     return cHtml

If I make Msginfo(cImgHome)
Ihave this

Image


So th eimage is loaded but then when I put i tinto chtml not run]]>

I make

Code: Select all | Expand

#include "fivewin.ch"

FUNCTION Main()
   LOCAL cHtml
   LOCAL oWebView := TWebView2():New()

   // Genera il contenuto HTML con immagini Base64
   cHtml := Html()

   // Carica l'HTML direttamente in memoria
   oWebView:SetHtml( cHtml )
   oWebView:SetTitle( "Dashboard" )
   oWebView:SetSize( 1024, 768 )
   oWebView:Run()
   oWebView:Destroy()

   RETURN NIL

Function html()
    local cImagesPath := cFilePath( GetModuleFileName( GetInstance() ) )+"\img\"
    local cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( cImagesPath+'home.png' ) )
    local  cHtml

      TEXT INTO cHtml

     <!DOCTYPE html>
     <html lang="it">
     <span class="section-title">
  <img src="'"+cImgHome+"'"  alt="Home"> home</span>
         </body>
         </html>

         ENDTEXT

     return cHtml

If I make Msginfo(cImgHome)
Ihave this

Image


So th eimage is loaded but then when I put i tinto chtml not run]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by Silvio.Falconi]]> 2025-03-26T04:45:49-06:00 2025-03-26T04:45:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278564#p278564 and RUN OK

Code: Select all | Expand

#include "fivewin.ch"

FUNCTION Main()
   LOCAL cHtml
   LOCAL oWebView := TWebView2():New()

   // Genera il contenuto HTML con immagini Base64
   cHtml := Html()

   // Carica l'HTML direttamente in memoria
   oWebView:SetHtml( cHtml )
   oWebView:SetTitle( "Dashboard" )
   oWebView:SetSize( 1024, 768 )
   oWebView:Run()
   oWebView:Destroy()

   RETURN NIL

Function Html()
    local cImagesPath := cFilePath( GetModuleFileName( GetInstance() ) ) + "\img\"
    local cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( cImagesPath + "home.png" ) )
    local cHtml

    // Usa TEXT INTO per la parte statica dell'HTML
    TEXT INTO cHtml
        <!DOCTYPE html>
        <html lang="it">
        <head>
            <title>Dashboard</title>
        </head>
        <body>
            <span class="section-title">
                <img src="{IMGSRC}" alt="Home"> home
            </span>
        </body>
        </html>
    ENDTEXT

    // Sostituisci il segnaposto {IMGSRC} con il valore di cImgHome
    cHtml := StrTran( cHtml, "{IMGSRC}", cImgHome )

    return cHtml

Image



Information

TEXT INTO Block:

The TEXT INTO cHtml block defines the static HTML structure.

I inserted a {IMGSRC} placeholder where the dynamic value of cImgHome should go.

StrTran Replacement:
After the TEXT INTO block, I use StrTran() to replace {IMGSRC} with the content of cImgHome, which contains the Base64 string of the image.

Advantages:
This approach keeps the code readable thanks to TEXT INTO for the static part.

It allows you to insert the value of cImgHome dynamically without having to manually concatenate each line.]]>
and RUN OK

Code: Select all | Expand

#include "fivewin.ch"

FUNCTION Main()
   LOCAL cHtml
   LOCAL oWebView := TWebView2():New()

   // Genera il contenuto HTML con immagini Base64
   cHtml := Html()

   // Carica l'HTML direttamente in memoria
   oWebView:SetHtml( cHtml )
   oWebView:SetTitle( "Dashboard" )
   oWebView:SetSize( 1024, 768 )
   oWebView:Run()
   oWebView:Destroy()

   RETURN NIL

Function Html()
    local cImagesPath := cFilePath( GetModuleFileName( GetInstance() ) ) + "\img\"
    local cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( cImagesPath + "home.png" ) )
    local cHtml

    // Usa TEXT INTO per la parte statica dell'HTML
    TEXT INTO cHtml
        <!DOCTYPE html>
        <html lang="it">
        <head>
            <title>Dashboard</title>
        </head>
        <body>
            <span class="section-title">
                <img src="{IMGSRC}" alt="Home"> home
            </span>
        </body>
        </html>
    ENDTEXT

    // Sostituisci il segnaposto {IMGSRC} con il valore di cImgHome
    cHtml := StrTran( cHtml, "{IMGSRC}", cImgHome )

    return cHtml

Image



Information

TEXT INTO Block:

The TEXT INTO cHtml block defines the static HTML structure.

I inserted a {IMGSRC} placeholder where the dynamic value of cImgHome should go.

StrTran Replacement:
After the TEXT INTO block, I use StrTran() to replace {IMGSRC} with the content of cImgHome, which contains the Base64 string of the image.

Advantages:
This approach keeps the code readable thanks to TEXT INTO for the static part.

It allows you to insert the value of cImgHome dynamically without having to manually concatenate each line.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by cmsoft]]> 2025-03-26T04:58:24-06:00 2025-03-26T04:58:24-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278565#p278565 Creo que si lo haces como lo habias hecho al principio reemplazando el texto por la imagen estaría bien:

Code: Select all | Expand

Function html()
    LOCAL cHtml
    cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\work\fwh\bitmaps\pngs\2.png' ) )

    TEXT INTO cHtml
     <!DOCTYPE html>
     <html lang="it">
     <span class="section-title">
         <img src="cImgHome" alt="Home"> home</span>
         </body>
         </html>
            ENDTEXT
   cHtml := REPLACE(cHml, "cImgHome",cImgHome) //Reemplazar el literal por el contenido de la variable            
    return cHtml
Editado: Esta respuesta es lo mismo que te dio la IA, no lo habia visto a ese mensaje]]>
Creo que si lo haces como lo habias hecho al principio reemplazando el texto por la imagen estaría bien:

Code: Select all | Expand

Function html()
    LOCAL cHtml
    cImgHome := "data:image/png;base64," + hb_base64encode( hb_memoRead( 'c:\work\fwh\bitmaps\pngs\2.png' ) )

    TEXT INTO cHtml
     <!DOCTYPE html>
     <html lang="it">
     <span class="section-title">
         <img src="cImgHome" alt="Home"> home</span>
         </body>
         </html>
            ENDTEXT
   cHtml := REPLACE(cHml, "cImgHome",cImgHome) //Reemplazar el literal por el contenido de la variable            
    return cHtml
Editado: Esta respuesta es lo mismo que te dio la IA, no lo habia visto a ese mensaje]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by Silvio.Falconi]]> 2025-03-26T05:48:13-06:00 2025-03-26T05:48:13-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278566#p278566
I opted for another direction, that is, inserting all the images into a Hash. It seems faster.
The problem is that I don't know if I can insert the resource.

Code: Select all | Expand

  hImages["IMGHOME"] := "data:image/png;base64," + hb_base64encode( hb_memoRead( cImagesPath + "home.png" ) )
]]>

I opted for another direction, that is, inserting all the images into a Hash. It seems faster.
The problem is that I don't know if I can insert the resource.

Code: Select all | Expand

  hImages["IMGHOME"] := "data:image/png;base64," + hb_base64encode( hb_memoRead( cImagesPath + "home.png" ) )
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by vilian]]> 2025-03-27T11:56:18-06:00 2025-03-27T11:56:18-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278639#p278639
Why we can't show images directly from jpg files as we do with html?]]>

Why we can't show images directly from jpg files as we do with html?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by Antonio Linares]]> 2025-03-27T13:41:08-06:00 2025-03-27T13:41:08-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278644#p278644
vilian wrote: Thu Mar 27, 2025 5:56 pm Hi Guys,

Why we can't show images directly from jpg files as we do with html?
Because we are not using a web server. We are just loading a HTML into a webview so we have to provide everything it needs.]]>
vilian wrote: Thu Mar 27, 2025 5:56 pm Hi Guys,

Why we can't show images directly from jpg files as we do with html?
Because we are not using a web server. We are just loading a HTML into a webview so we have to provide everything it needs.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: webview2 and images :: Reply by vilian]]> 2025-03-27T14:30:28-06:00 2025-03-27T14:30:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45562&p=278646#p278646 ]]> ]]> <![CDATA[FiveWin for Harbour/xHarbour :: resource on hash no run with webview2 - RESOLVED :: Author Silvio.Falconi]]> 2025-03-26T16:03:53-06:00 2025-03-28T03:33:38-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45570&p=278606#p278606

I load images and save on a Hash
then I use on html {IMGHOME} then replace the images before to release the chtml
If the images are on resources not load the images

I tried also with

hImages["IMGHOME"] := "data:image/png;base64," + hb_base64encode( GetResources("DASH_HOME") )

Please try this test


test.prg

Code: Select all | Expand

#include "fivewin.ch"

function Main()
   local oWnd, oWebView


 DEFINE WINDOW oWnd TITLE "Invoicing"

 BuildMainBar(oWnd)

 oWebView := TWebView2():New( oWnd )
 oWebView:SetHtml( Html() )


  SET MESSAGE OF oWnd TO "Invoicing app"  CENTER NOINSET

   ACTIVATE WINDOW oWnd  ;
      ON RESIZE ( oWebView:SetSize( WndWidth( oWebView:oWnd:hWnd ) - 17,;
                                    WndHeight( oWebView:oWnd:hWnd ) - 80 ) )
   RETURN NIL


Function Html()
     LOCAL hImages := LoadImages()  // Carica l'hash delle immagini
   LOCAL cHtml
   LOCAL cKey


  TEXT INTO cHtml
   <!DOCTYPE html>
   <html>
   <head>
     <title>Identify</title>
     <style>
     body {
      display: flex;
      align-items: center;
      justify-content: center;
      height: 100vh;
      background-color: #F2F2F2;
      font-family: Arial, sans-serif;
      margin: 0;
     padding: 0;
    }

      .container {
         max-width: 400px;
         margin: 0 auto;
         padding: 40px;
         background-color: #FFFFFF;
         border-radius: 5px;
         display: flex;
         flex-direction: column;
         align-items: center;
         box-shadow: 0px 0px 44px rgba(0, 0, 0, 0.7) !important;
         overflow:none !important;
       }

       .logo {
         margin-bottom: 40px;
         display: flex;
         align-items: center;
       }

       .logo img {
         max-width: 100%;
         height: auto;
       }

       .btn {
         display: inline-block;
         padding: 12px 24px;
         background-color: #4CAF50;
         color: #FFFFFF;
         font-size: 16px;
         text-decoration: none;
         border-radius: 5px;
         transition: background-color 0.3s ease;
       }

       .btn:hover {
         background-color: #45A049;
       }

       .form-group {
         margin-bottom: 20px;
       }

       .form-group label {
         display: block;
         font-size: 16px;
         font-weight: bold;
         margin-bottom: 5px;
         color: #333333;
       }

       .form-group input {
         width: 100%;
         padding: 12px;
         font-size: 16px;
         border-radius: 5px;
         border: 1px solid #CCCCCC;
       }

       .btn {
         display: inline-block;
         padding: 12px 24px;
         background-color: #4CAF50;
         color: #FFFFFF;
         font-size: 16px;
         text-decoration: none;
         border-radius: 5px;
         transition: background-color 0.3s ease;
       }

       .btn:hover {
         background-color: #45A049;
       }

       body {
         background-color: #3498db;
       }

       .btn {
         background-color: #2980b9;
       }

       .btn:hover {
         background-color: #1a5276;

      .logo {
         margin-bottom: 40px;
         }

         .logo img {
         max-width: 100%;
         height: auto;
         }
       }

     .myinput {
       width: auto !important;
     }

     .mybtn {
       text-align:center;
     }

     </style>
   </head>
   <body>
     <div class="container">
       <div class="logo">
         <img src="{IMGHOME}" alt="Home">
       </div>

     </div>


   </body>
   </html>
   ENDTEXT

  FOR EACH cKey IN hImages:Keys
      cHtml := StrTran(cHtml, "{" + cKey + "}", hImages[cKey])
   NEXT

return cHtml

Function LoadImages()
   LOCAL hImages := {=>}
    hImages["IMGHOME"]       := "data:image/png;base64," + hb_base64encode( hb_memoRead( "DASH_HOME" ) )
    RETURN hImages


 static function BuildMainBar(oWnd)
   local oBar
   DEFINE BUTTONBAR oBar OF oWnd 2015 SIZE 90, 60
   return nil


test.rc (please put your image)

Code: Select all | Expand

1 24 "WindowsXP.Manifest"
DASH_HOME       10   "dashboard/home.png"



try with

Function LoadImages()
LOCAL hImages := {=>}
LOCAL cImageData := GetResources("DASH_HOME")

IF Empty(cImageData) .OR. ValType(cImageData) != "C"
MsgInfo("Error!")
ELSE
hImages["IMGHOME"] := "data:image/png;base64," + hb_base64encode(cImageData)
ENDIF

RETURN hImages]]>


I load images and save on a Hash
then I use on html {IMGHOME} then replace the images before to release the chtml
If the images are on resources not load the images

I tried also with

hImages["IMGHOME"] := "data:image/png;base64," + hb_base64encode( GetResources("DASH_HOME") )

Please try this test


test.prg

Code: Select all | Expand

#include "fivewin.ch"

function Main()
   local oWnd, oWebView


 DEFINE WINDOW oWnd TITLE "Invoicing"

 BuildMainBar(oWnd)

 oWebView := TWebView2():New( oWnd )
 oWebView:SetHtml( Html() )


  SET MESSAGE OF oWnd TO "Invoicing app"  CENTER NOINSET

   ACTIVATE WINDOW oWnd  ;
      ON RESIZE ( oWebView:SetSize( WndWidth( oWebView:oWnd:hWnd ) - 17,;
                                    WndHeight( oWebView:oWnd:hWnd ) - 80 ) )
   RETURN NIL


Function Html()
     LOCAL hImages := LoadImages()  // Carica l'hash delle immagini
   LOCAL cHtml
   LOCAL cKey


  TEXT INTO cHtml
   <!DOCTYPE html>
   <html>
   <head>
     <title>Identify</title>
     <style>
     body {
      display: flex;
      align-items: center;
      justify-content: center;
      height: 100vh;
      background-color: #F2F2F2;
      font-family: Arial, sans-serif;
      margin: 0;
     padding: 0;
    }

      .container {
         max-width: 400px;
         margin: 0 auto;
         padding: 40px;
         background-color: #FFFFFF;
         border-radius: 5px;
         display: flex;
         flex-direction: column;
         align-items: center;
         box-shadow: 0px 0px 44px rgba(0, 0, 0, 0.7) !important;
         overflow:none !important;
       }

       .logo {
         margin-bottom: 40px;
         display: flex;
         align-items: center;
       }

       .logo img {
         max-width: 100%;
         height: auto;
       }

       .btn {
         display: inline-block;
         padding: 12px 24px;
         background-color: #4CAF50;
         color: #FFFFFF;
         font-size: 16px;
         text-decoration: none;
         border-radius: 5px;
         transition: background-color 0.3s ease;
       }

       .btn:hover {
         background-color: #45A049;
       }

       .form-group {
         margin-bottom: 20px;
       }

       .form-group label {
         display: block;
         font-size: 16px;
         font-weight: bold;
         margin-bottom: 5px;
         color: #333333;
       }

       .form-group input {
         width: 100%;
         padding: 12px;
         font-size: 16px;
         border-radius: 5px;
         border: 1px solid #CCCCCC;
       }

       .btn {
         display: inline-block;
         padding: 12px 24px;
         background-color: #4CAF50;
         color: #FFFFFF;
         font-size: 16px;
         text-decoration: none;
         border-radius: 5px;
         transition: background-color 0.3s ease;
       }

       .btn:hover {
         background-color: #45A049;
       }

       body {
         background-color: #3498db;
       }

       .btn {
         background-color: #2980b9;
       }

       .btn:hover {
         background-color: #1a5276;

      .logo {
         margin-bottom: 40px;
         }

         .logo img {
         max-width: 100%;
         height: auto;
         }
       }

     .myinput {
       width: auto !important;
     }

     .mybtn {
       text-align:center;
     }

     </style>
   </head>
   <body>
     <div class="container">
       <div class="logo">
         <img src="{IMGHOME}" alt="Home">
       </div>

     </div>


   </body>
   </html>
   ENDTEXT

  FOR EACH cKey IN hImages:Keys
      cHtml := StrTran(cHtml, "{" + cKey + "}", hImages[cKey])
   NEXT

return cHtml

Function LoadImages()
   LOCAL hImages := {=>}
    hImages["IMGHOME"]       := "data:image/png;base64," + hb_base64encode( hb_memoRead( "DASH_HOME" ) )
    RETURN hImages


 static function BuildMainBar(oWnd)
   local oBar
   DEFINE BUTTONBAR oBar OF oWnd 2015 SIZE 90, 60
   return nil


test.rc (please put your image)

Code: Select all | Expand

1 24 "WindowsXP.Manifest"
DASH_HOME       10   "dashboard/home.png"



try with

Function LoadImages()
LOCAL hImages := {=>}
LOCAL cImageData := GetResources("DASH_HOME")

IF Empty(cImageData) .OR. ValType(cImageData) != "C"
MsgInfo("Error!")
ELSE
hImages["IMGHOME"] := "data:image/png;base64," + hb_base64encode(cImageData)
ENDIF

RETURN hImages]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: resource on hash no run with webview2 :: Reply by Antonio Linares]]> 2025-03-27T14:03:43-06:00 2025-03-27T14:03:43-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45570&p=278645#p278645 <![CDATA[FiveWin for Harbour/xHarbour :: Re: resource on hash no run with webview2 :: Reply by Silvio.Falconi]]> 2025-03-28T02:22:54-06:00 2025-03-28T02:22:54-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45570&p=278652#p278652
Antonio Linares wrote: Thu Mar 27, 2025 8:03 pm Check from the console of the DevTools if you get any errors
as I told you elsewhere I need to read the png from the resources, the hb_base64encode function expects to read a code loaded from memoread that it can't do with the resource, so the png image must be extracted from the resources and converted to base 64 to be used inside the html this is because I'm not using a webserver or a website but I'm doing it all locally, the Qween Artificial Intelligence (Grok3 and chagpt only told me nonsense without helping me) suggests a function to load the resource image and convert it to base 64, this function needs a SizeofResource function that doesn't find it if I compile the procedure


Turbo Incremental Link 6.97 Copyright (c) 1997-2022 Embarcadero Technologies, Inc.
Error: Unresolved external '_HB_FUN_SIZEOFRESOURCE' referenced from C:\WORK\ERRORI\PNG_FROM_RES\OBJ\TEST.OBJ
Error: Unable to perform link]]>
Antonio Linares wrote: Thu Mar 27, 2025 8:03 pm Check from the console of the DevTools if you get any errors
as I told you elsewhere I need to read the png from the resources, the hb_base64encode function expects to read a code loaded from memoread that it can't do with the resource, so the png image must be extracted from the resources and converted to base 64 to be used inside the html this is because I'm not using a webserver or a website but I'm doing it all locally, the Qween Artificial Intelligence (Grok3 and chagpt only told me nonsense without helping me) suggests a function to load the resource image and convert it to base 64, this function needs a SizeofResource function that doesn't find it if I compile the procedure


Turbo Incremental Link 6.97 Copyright (c) 1997-2022 Embarcadero Technologies, Inc.
Error: Unresolved external '_HB_FUN_SIZEOFRESOURCE' referenced from C:\WORK\ERRORI\PNG_FROM_RES\OBJ\TEST.OBJ
Error: Unable to perform link]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: resource on hash no run with webview2 :: Reply by Silvio.Falconi]]> 2025-03-28T02:47:33-06:00 2025-03-28T02:47:33-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45570&p=278653#p278653
add kernel32.lib

Code: Select all | Expand

#pragma BEGINDUMP

#include <windows.h>

HB_FUNC( SIZEOFRESOURCE )
{
   HMODULE hModule = (HMODULE) hb_parnl(1);
   HRSRC hResInfo = (HRSRC) hb_parnl(2);

   hb_retnl(SizeofResource(hModule, hResInfo));
}

HB_FUNC( FINDRESOURCE )
{
   HMODULE hModule = (HMODULE) hb_parnl(1);
   LPCSTR lpName = (LPCSTR) hb_parc(2);
   LPCSTR lpType = (LPCSTR) hb_parc(3);

   hb_retnl((LONG_PTR) FindResource(hModule, lpName, lpType));
}

HB_FUNC( LOADRESOURCE )
{
   HMODULE hModule = (HMODULE) hb_parnl(1);
   HRSRC hResInfo = (HRSRC) hb_parnl(2);

   hb_retnl((LONG_PTR) LoadResource(hModule, hResInfo));
}

HB_FUNC( LOCKRESOURCE )
{
   HGLOBAL hResData = (HGLOBAL) hb_parnl(1);

   hb_retnl((LONG_PTR) LockResource(hResData));
}

#pragma ENDDUMP


the resource is found, the resource is loaded but then the size is zero and it can't convert it to base 64
I tried with another file and it gives the same error, that is, it finds the resource and uploads it but then the size is always zero]]>

add kernel32.lib

Code: Select all | Expand

#pragma BEGINDUMP

#include <windows.h>

HB_FUNC( SIZEOFRESOURCE )
{
   HMODULE hModule = (HMODULE) hb_parnl(1);
   HRSRC hResInfo = (HRSRC) hb_parnl(2);

   hb_retnl(SizeofResource(hModule, hResInfo));
}

HB_FUNC( FINDRESOURCE )
{
   HMODULE hModule = (HMODULE) hb_parnl(1);
   LPCSTR lpName = (LPCSTR) hb_parc(2);
   LPCSTR lpType = (LPCSTR) hb_parc(3);

   hb_retnl((LONG_PTR) FindResource(hModule, lpName, lpType));
}

HB_FUNC( LOADRESOURCE )
{
   HMODULE hModule = (HMODULE) hb_parnl(1);
   HRSRC hResInfo = (HRSRC) hb_parnl(2);

   hb_retnl((LONG_PTR) LoadResource(hModule, hResInfo));
}

HB_FUNC( LOCKRESOURCE )
{
   HGLOBAL hResData = (HGLOBAL) hb_parnl(1);

   hb_retnl((LONG_PTR) LockResource(hResData));
}

#pragma ENDDUMP


the resource is found, the resource is loaded but then the size is zero and it can't convert it to base 64
I tried with another file and it gives the same error, that is, it finds the resource and uploads it but then the size is always zero]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: resource on hash no run with webview2 :: Reply by Silvio.Falconi]]> 2025-03-28T03:32:22-06:00 2025-03-28T03:32:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45570&p=278655#p278655


the functions

Code: Select all | Expand



FUNCTION LoadResourceToBase64(cResourceName)
LOCAL cResourceData := crestostr(cResourceName, RT_RCDATA)  // Legge la risorsa come stringa
LOCAL cBase64

IF EMPTY(cResourceData)
   MsgStop("Error: Unable to read file'" + cResourceName + "'.")
   RETURN NIL
ENDIF

//MsgInfo("Resource '" + cResourceName + "' read correctly.")

// Converte i dati della risorsa in Base64
cBase64 := hb_base64encode(cResourceData, LEN(cResourceData))

IF EMPTY(cBase64)
   MsgStop("Error: Base64 conversion failed.")
   RETURN NIL
ENDIF

//MsgInfo("Base64 conversion completed.")

RETURN "data:image/png;base64," + cBase64


FUNCTION LoadImageFromFile(cFilePath)
LOCAL cFileContent := hb_MemoRead(cFilePath)
LOCAL cBase64

IF EMPTY(cFileContent)
   MsgStop("Error: Unable to read file '" + cFilePath + "'.")
   RETURN NIL
ENDIF

cBase64 := hb_base64encode(cFileContent, LEN(cFileContent))
RETURN "data:image/png;base64," + cBase64


I use the function with

Function html()
LOCAL hImages := LoadImagesToHash()
.....


FUNCTION LoadImagesToHash()
LOCAL hImages := {=>}
hImages["IMGHOME"] := LoadResourceToBase64("DASH_HOME")
RETURN hImages]]>



the functions

Code: Select all | Expand



FUNCTION LoadResourceToBase64(cResourceName)
LOCAL cResourceData := crestostr(cResourceName, RT_RCDATA)  // Legge la risorsa come stringa
LOCAL cBase64

IF EMPTY(cResourceData)
   MsgStop("Error: Unable to read file'" + cResourceName + "'.")
   RETURN NIL
ENDIF

//MsgInfo("Resource '" + cResourceName + "' read correctly.")

// Converte i dati della risorsa in Base64
cBase64 := hb_base64encode(cResourceData, LEN(cResourceData))

IF EMPTY(cBase64)
   MsgStop("Error: Base64 conversion failed.")
   RETURN NIL
ENDIF

//MsgInfo("Base64 conversion completed.")

RETURN "data:image/png;base64," + cBase64


FUNCTION LoadImageFromFile(cFilePath)
LOCAL cFileContent := hb_MemoRead(cFilePath)
LOCAL cBase64

IF EMPTY(cFileContent)
   MsgStop("Error: Unable to read file '" + cFilePath + "'.")
   RETURN NIL
ENDIF

cBase64 := hb_base64encode(cFileContent, LEN(cFileContent))
RETURN "data:image/png;base64," + cBase64


I use the function with

Function html()
LOCAL hImages := LoadImagesToHash()
.....


FUNCTION LoadImagesToHash()
LOCAL hImages := {=>}
hImages["IMGHOME"] := LoadResourceToBase64("DASH_HOME")
RETURN hImages]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: resource on hash no run with webview2 - RESOLVED :: Reply by Silvio.Falconi]]> 2025-03-28T04:02:09-06:00 2025-03-28T04:02:09-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45570&p=278656#p278656 better with any type of file


Code: Select all | Expand


FUNCTION LoadResourceToBase64(cResourceName, cMimeType)
LOCAL cResourceData := crestostr(cResourceName, RT_RCDATA)  // Read the resource as a string
LOCAL cBase64

IF EMPTY(cResourceData)
   MsgStop("Error: Unable to read resource '" + cResourceName + "'.")
   RETURN NIL
ENDIF

MsgInfo("Resource '" + cResourceName + "' loaded successfully.")

// Convert resource data to Base64
cBase64 := hb_base64encode(cResourceData, LEN(cResourceData))

IF EMPTY(cBase64)
   MsgStop("Error: Base64 conversion failed.")
   RETURN NIL
ENDIF

MsgInfo("Base64 conversion completed.")

// Return the Base64 string with the correct MIME type
RETURN "data:" + cMimeType + ";base64," + cBase64


use
hImages["ICON"] := LoadResourceToBase64("ICON_GIF", "image/gif")]]>
better with any type of file


Code: Select all | Expand


FUNCTION LoadResourceToBase64(cResourceName, cMimeType)
LOCAL cResourceData := crestostr(cResourceName, RT_RCDATA)  // Read the resource as a string
LOCAL cBase64

IF EMPTY(cResourceData)
   MsgStop("Error: Unable to read resource '" + cResourceName + "'.")
   RETURN NIL
ENDIF

MsgInfo("Resource '" + cResourceName + "' loaded successfully.")

// Convert resource data to Base64
cBase64 := hb_base64encode(cResourceData, LEN(cResourceData))

IF EMPTY(cBase64)
   MsgStop("Error: Base64 conversion failed.")
   RETURN NIL
ENDIF

MsgInfo("Base64 conversion completed.")

// Return the Base64 string with the correct MIME type
RETURN "data:" + cMimeType + ";base64," + cBase64


use
hImages["ICON"] := LoadResourceToBase64("ICON_GIF", "image/gif")]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Problem with numeric fields and FWH 25.01 :: Author vilian]]> 2025-03-19T05:12:39-06:00 2025-03-19T05:12:39-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278448#p278448 IF I run the code bellow with my previous version of FWH. I can see the value 3.3732. But if i run this same code with the new version of FWH, the value showed is 3.37. Do you know why ?

Code: Select all | Expand

function Main()
LOCAL oRs,oCn,oError,oQry,cQryMat

   SET DATE BRIT
   SET CENTURY ON
   
   CursorWait()

   oCn := Maria_Connect( aStr[1] )

   oRs := oCn:Query("SELECT nfiscal,cmat,qte,qtedig FROM consumo WHERE nfiscal LIKE '000005829%'")
   cQryMat := ""
   DO WHILE .NOT. oRs:Eof()
      cQryMat += "'"+oRs:cmat+"',"
      ? oRs:qte,oRs:qtedig,oRs:cmat
      oRs:Skip()
   ENDDO
   oRs:GoTop()
   
RETURN NIL
]]>
IF I run the code bellow with my previous version of FWH. I can see the value 3.3732. But if i run this same code with the new version of FWH, the value showed is 3.37. Do you know why ?

Code: Select all | Expand

function Main()
LOCAL oRs,oCn,oError,oQry,cQryMat

   SET DATE BRIT
   SET CENTURY ON
   
   CursorWait()

   oCn := Maria_Connect( aStr[1] )

   oRs := oCn:Query("SELECT nfiscal,cmat,qte,qtedig FROM consumo WHERE nfiscal LIKE '000005829%'")
   cQryMat := ""
   DO WHILE .NOT. oRs:Eof()
      cQryMat += "'"+oRs:cmat+"',"
      ? oRs:qte,oRs:qtedig,oRs:cmat
      oRs:Skip()
   ENDDO
   oRs:GoTop()
   
RETURN NIL
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by Antonio Linares]]> 2025-03-19T23:19:34-06:00 2025-03-19T23:19:34-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278469#p278469
Are you using SET DECIMALS TO 4 ?]]>

Are you using SET DECIMALS TO 4 ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by vilian]]> 2025-03-20T04:44:28-06:00 2025-03-20T04:44:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278478#p278478 No I'm not setting any value to SET DECIMAL. However, is important note that the problem is only happening with decimal values from Mysql rowset/queries. IF I try something like:

Code: Select all | Expand

function Main()
LOCAL nVal1,nVal2,nRes

   SET DATE BRIT
   SET CENTURY ON
   
   nVal1 := 2.3432
   nVal2 := 2.3923
   nRes := nVal1 * nVal2 
   ? nRes
   
RETURN NIL
Everything is fine.]]>
No I'm not setting any value to SET DECIMAL. However, is important note that the problem is only happening with decimal values from Mysql rowset/queries. IF I try something like:

Code: Select all | Expand

function Main()
LOCAL nVal1,nVal2,nRes

   SET DATE BRIT
   SET CENTURY ON
   
   nVal1 := 2.3432
   nVal2 := 2.3923
   nRes := nVal1 * nVal2 
   ? nRes
   
RETURN NIL
Everything is fine.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by vilian]]> 2025-03-20T06:55:15-06:00 2025-03-20T06:55:15-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278483#p278483

Code: Select all | Expand

oRs := oCn:Query("SELECT nfiscal,cmat,qte,qtedig,valor FROM consumo WHERE nfiscal LIKE '00023332601%'")
? oRs:qte,oRs:valor,oRs:qte*oRs:valor
In FWH2311 shows this:
Image

In FWH2501 shows this:
Image]]>

Code: Select all | Expand

oRs := oCn:Query("SELECT nfiscal,cmat,qte,qtedig,valor FROM consumo WHERE nfiscal LIKE '00023332601%'")
? oRs:qte,oRs:valor,oRs:qte*oRs:valor
In FWH2311 shows this:
Image

In FWH2501 shows this:
Image]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by vilian]]> 2025-03-27T06:11:30-06:00 2025-03-27T06:11:30-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278623#p278623 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by Antonio Linares]]> 2025-03-27T13:39:04-06:00 2025-03-27T13:39:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278643#p278643
What is previous FWH version that you were using ?]]>

What is previous FWH version that you were using ?]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by vilian]]> 2025-03-27T17:08:40-06:00 2025-03-27T17:08:40-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278647#p278647 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by Antonio Linares]]> 2025-03-27T22:24:27-06:00 2025-03-27T22:24:27-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278650#p278650
I need you to help me to build a small example that I can run here and that generates the error.

Mr. Rao continues at the hospital, so we have to fix it ourselves.

We need to identify the exact FWH version where such error started so we can review the source code diferences.]]>

I need you to help me to build a small example that I can run here and that generates the error.

Mr. Rao continues at the hospital, so we have to fix it ourselves.

We need to identify the exact FWH version where such error started so we can review the source code diferences.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by vilian]]> 2025-03-28T04:45:18-06:00 2025-03-28T04:45:18-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278657#p278657
IF you have any table in your mysql server where you have numeric fields with more than 2 decimals. Just run the code bellow and you'll see the problem.

Code: Select all | Expand

oRs := oCn:Query("SELECT nfiscal,cmat,qte,qtedig,valor FROM consumo WHERE nfiscal LIKE '00023332601%'")
? oRs:qte,oRs:valor,oRs:qte*oRs:valor
In my case QTE,QTEDIG and VALOR are numeric fields with more than 2 decimals

Mr Rao told me this:
1) Good morning your point about the numeric fields is correct This is an unfortunate bug I'll try to fix it as soon as I can
]]>

IF you have any table in your mysql server where you have numeric fields with more than 2 decimals. Just run the code bellow and you'll see the problem.

Code: Select all | Expand

oRs := oCn:Query("SELECT nfiscal,cmat,qte,qtedig,valor FROM consumo WHERE nfiscal LIKE '00023332601%'")
? oRs:qte,oRs:valor,oRs:qte*oRs:valor
In my case QTE,QTEDIG and VALOR are numeric fields with more than 2 decimals

Mr Rao told me this:
1) Good morning your point about the numeric fields is correct This is an unfortunate bug I'll try to fix it as soon as I can
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by Silvio.Falconi]]> 2025-03-28T07:19:56-06:00 2025-03-28T07:19:56-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278659#p278659
vilian wrote: Fri Mar 28, 2025 10:45 am Dear Antonio,

IF you have any table in your mysql server where you have numeric fields with more than 2 decimals. Just run the code bellow and you'll see the problem.

Code: Select all | Expand

oRs := oCn:Query("SELECT nfiscal,cmat,qte,qtedig,valor FROM consumo WHERE nfiscal LIKE '00023332601%'")
? oRs:qte,oRs:valor,oRs:qte*oRs:valor
In my case QTE,QTEDIG and VALOR are numeric fields with more than 2 decimals

Mr Rao told me this:
1) Good morning your point about the numeric fields is correct This is an unfortunate bug I'll try to fix it as soon as I can
I try this

Image
Perhaps you have a round number ?
can I have a small test to try , perhaps I try to search a solution]]>
vilian wrote: Fri Mar 28, 2025 10:45 am Dear Antonio,

IF you have any table in your mysql server where you have numeric fields with more than 2 decimals. Just run the code bellow and you'll see the problem.

Code: Select all | Expand

oRs := oCn:Query("SELECT nfiscal,cmat,qte,qtedig,valor FROM consumo WHERE nfiscal LIKE '00023332601%'")
? oRs:qte,oRs:valor,oRs:qte*oRs:valor
In my case QTE,QTEDIG and VALOR are numeric fields with more than 2 decimals

Mr Rao told me this:
1) Good morning your point about the numeric fields is correct This is an unfortunate bug I'll try to fix it as soon as I can
I try this

Image
Perhaps you have a round number ?
can I have a small test to try , perhaps I try to search a solution]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by vilian]]> 2025-03-28T08:38:51-06:00 2025-03-28T08:38:51-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278661#p278661 The problem is happening only with numeric fields from a rowset. With variables everything is ok, like i said before.]]> The problem is happening only with numeric fields from a rowset. With variables everything is ok, like i said before.]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by Silvio.Falconi]]> 2025-03-28T11:27:00-06:00 2025-03-28T11:27:00-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278666#p278666 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by vilian]]> 2025-03-28T12:00:15-06:00 2025-03-28T12:00:15-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278667#p278667 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by cnavarro]]> 2025-03-28T13:12:04-06:00 2025-03-28T13:12:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278671#p278671 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Problem with numeric fields and FWH 25.01 :: Reply by vilian]]> 2025-03-28T13:17:20-06:00 2025-03-28T13:17:20-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45548&p=278672#p278672
The type of the fields is:

QTE DECIMAL(11,3)
VALOR DECIMAL(12,4)]]>

The type of the fields is:

QTE DECIMAL(11,3)
VALOR DECIMAL(12,4)]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Webview and external css :: Author vilian]]> 2025-03-28T12:21:34-06:00 2025-03-28T12:21:34-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45578&p=278669#p278669 <![CDATA[FiveWin for Harbour/xHarbour :: Re: Webview and external css :: Reply by cnavarro]]> 2025-03-28T13:10:16-06:00 2025-03-28T13:10:16-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45578&p=278670#p278670
https://www.w3schools.com/css/css_howto.asp
]]>
https://www.w3schools.com/css/css_howto.asp
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: Webview and external css :: Reply by vilian]]> 2025-03-28T13:21:23-06:00 2025-03-28T13:21:23-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45578&p=278673#p278673 ]]> ]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: Webview and external css :: Reply by Antonio Linares]]> 2025-03-28T14:07:32-06:00 2025-03-28T14:07:32-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45578&p=278674#p278674
You have to read it with memoRead() and place it inside your HTML code as explained above

If it is a remote CSS file then you have to download it using FWH WebPageContents( cUrl, lText, nSysWait ) and then StrTran() it into the HTML]]>

You have to read it with memoRead() and place it inside your HTML code as explained above

If it is a remote CSS file then you have to download it using FWH WebPageContents( cUrl, lText, nSysWait ) and then StrTran() it into the HTML]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FWH 16.08 : Built-in MySql/MariaDB functionality (Updated ) :: Reply by reinaldocrespo]]> 2025-03-21T12:39:58-06:00 2025-03-21T12:39:58-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=32657&p=278505#p278505
Is there a pdf or wiki that documents this MariaDB class? I would like something that describes the whole class without having to read each post on the forum.

And one other thing; is this an update to the TDolphin class or a whole different class altogether?

Thank you.]]>

Is there a pdf or wiki that documents this MariaDB class? I would like something that describes the whole class without having to read each post on the forum.

And one other thing; is this an update to the TDolphin class or a whole different class altogether?

Thank you.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FWH 16.08 : Built-in MySql/MariaDB functionality (Updated ) :: Reply by vilian]]> 2025-03-21T13:03:10-06:00 2025-03-21T13:03:10-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=32657&p=278506#p278506 Some time ago I started to collect all Mr Rao tips about FWH MySql in a chm file. You can download it through the link bellow:

https://drive.google.com/file/d/1DnNBBt ... sp=sharing]]>
Some time ago I started to collect all Mr Rao tips about FWH MySql in a chm file. You can download it through the link bellow:

https://drive.google.com/file/d/1DnNBBt ... sp=sharing]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FWH 16.08 : Built-in MySql/MariaDB functionality (Updated ) :: Reply by Compuin]]> 2025-03-23T07:41:09-06:00 2025-03-23T07:41:09-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=32657&p=278531#p278531
vilian wrote: Fri Mar 21, 2025 7:03 pm Hi Reinaldo,
Some time ago I started to collect all Mr Rao tips about FWH MySql in a chm file. You can download it through the link bellow:

https://drive.google.com/file/d/1DnNBBt ... sp=sharing
Hello,

It doesn't work.

Regards]]>
vilian wrote: Fri Mar 21, 2025 7:03 pm Hi Reinaldo,
Some time ago I started to collect all Mr Rao tips about FWH MySql in a chm file. You can download it through the link bellow:

https://drive.google.com/file/d/1DnNBBt ... sp=sharing
Hello,

It doesn't work.

Regards]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FWH 16.08 : Built-in MySql/MariaDB functionality (Updated ) :: Reply by vilian]]> 2025-03-23T08:26:12-06:00 2025-03-23T08:26:12-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=32657&p=278532#p278532 https://www.mediafire.com/file/r92mgkwd ... s.chm/file]]> https://www.mediafire.com/file/r92mgkwd ... s.chm/file]]> <![CDATA[FiveWin for Harbour/xHarbour :: Re: FWH 16.08 : Built-in MySql/MariaDB functionality (Updated ) :: Reply by reinaldocrespo]]> 2025-03-28T18:21:00-06:00 2025-03-28T18:21:00-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=32657&p=278677#p278677

Code: Select all | Expand

DELIMITER //    
CREATE FUNCTION CurrentLease( 
   pPropID CHAR( 25 ), pDate DATE 
   )  
   RETURNS CHAR( 13 ) DETERMINISTIC   
BEGIN   
   DECLARE cLease CHAR( 13 ) DEFAULT '' ;  
                              
   SELECT leaseID INTO cLease  
   FROM leases   
   WHERE propertyID = pPropID   
      AND StartDate <= pDate   
      AND ( IsMtoM OR EndDate IS NULL OR EndDate >= pDate )  
ORDER BY startdate DESC   
   LIMIT 1 ;  
  
   RETURN( cLease ) ; 
  
END //  
 DELIMITER ; 	
The sql executes fine using HeidiSQL connected to the same db and creates the function.

I have tried to execute the sql using Execute() and QueryResult() at no avail.

Can someone help?

Thank you.]]>

Code: Select all | Expand

DELIMITER //    
CREATE FUNCTION CurrentLease( 
   pPropID CHAR( 25 ), pDate DATE 
   )  
   RETURNS CHAR( 13 ) DETERMINISTIC   
BEGIN   
   DECLARE cLease CHAR( 13 ) DEFAULT '' ;  
                              
   SELECT leaseID INTO cLease  
   FROM leases   
   WHERE propertyID = pPropID   
      AND StartDate <= pDate   
      AND ( IsMtoM OR EndDate IS NULL OR EndDate >= pDate )  
ORDER BY startdate DESC   
   LIMIT 1 ;  
  
   RETURN( cLease ) ; 
  
END //  
 DELIMITER ; 	
The sql executes fine using HeidiSQL connected to the same db and creates the function.

I have tried to execute the sql using Execute() and QueryResult() at no avail.

Can someone help?

Thank you.]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: FWH 16.08 : Built-in MySql/MariaDB functionality (Updated ) :: Reply by cnavarro]]> 2025-03-28T18:29:34-06:00 2025-03-28T18:29:34-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=32657&p=278678#p278678 viewtopic.php?t=33280]]> viewtopic.php?t=33280]]> <![CDATA[FiveWin for Harbour/xHarbour :: fill text fields and checkbox of existing PDF files :: Author marzio]]> 2025-03-28T02:59:29-06:00 2025-03-28T02:59:29-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45575&p=278654#p278654 from a my program I call pdftk to fill text fields or set checkboxes of an existing PDF file,
but some utf8 characters, pdftk does not handle them (Romanian language etc.)
I wanted to do this directly from the program. is it possible with the tPdf class of fivewin, harbour or other?
in tPdf I don't think there are methods that can be useful for my case. in the example files I didn't find anything.

thanks for any help
Marzio]]>
from a my program I call pdftk to fill text fields or set checkboxes of an existing PDF file,
but some utf8 characters, pdftk does not handle them (Romanian language etc.)
I wanted to do this directly from the program. is it possible with the tPdf class of fivewin, harbour or other?
in tPdf I don't think there are methods that can be useful for my case. in the example files I didn't find anything.

thanks for any help
Marzio]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: fill text fields and checkbox of existing PDF files :: Reply by Antonio Linares]]> 2025-03-28T14:23:49-06:00 2025-03-28T14:23:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45575&p=278675#p278675
You're correct that pdftk has limitations when it comes to handling UTF-8 characters, especially for languages like Romanian that use diacritics (e.g., ă, î, ș, ț). This is a known issue with pdftk, as it doesn't fully support UTF-8 encoding for form filling, often resulting in garbled or missing characters. Since you're working with FiveWin and Harbour, and considering the tPdf class, let’s explore your options for filling PDF form fields with UTF-8 support directly from your program.
The tPdf Class in FiveWin/Harbour
The tPdf class in FiveWin (a library for Harbour and Clipper) is primarily designed for generating PDF files from scratch, not for manipulating existing PDFs or filling form fields in pre-existing documents. It’s a lightweight tool based on basic PDF generation principles, similar to early versions of libraries like FPDF. From the available documentation and examples (typically found in the FiveWin distribution or community forums), tPdf lacks built-in methods for:
Loading an existing PDF.
Interacting with form fields (e.g., filling text fields or setting checkboxes).
Handling AcroForms (the PDF form structure).
The examples provided with tPdf (e.g., creating text, lines, or simple graphics) focus on generating new PDFs rather than editing existing ones. As a result, tPdf is not suitable for your use case of filling form fields in an existing PDF with UTF-8 support.
Alternative Approaches
Since tPdf doesn’t meet your needs, here are some viable alternatives to achieve your goal directly from your Harbour/FiveWin program:
1. Use a Different PDF Library with Form-Filling Capabilities
You can integrate a more capable PDF library into your Harbour/FiveWin application. Here are two options that support form filling and UTF-8:
TCPDF (via PHP Integration)
TCPDF is a PHP library that supports UTF-8 and can fill PDF forms. While Harbour doesn’t natively interface with PHP, you could:
Write a small PHP script using TCPDF to handle the PDF manipulation.
Call this script from Harbour using EXECUTE or RUN to pass data (e.g., via a temporary file or command-line arguments).
TCPDF’s setFormField() method allows you to fill text fields and checkboxes in an existing PDF, and it supports UTF-8 with appropriate font embedding (e.g., DejaVu Sans).
Challenges: Requires setting up a PHP environment and handling inter-process communication, which adds complexity.
iText (via Java or C# Integration)
iText is a powerful PDF library (available in Java and C#) that supports form filling with full UTF-8 support. You could:
Create a small Java or C# utility to process the PDF.
Call it from Harbour using a system command or a DLL interface (if you compile it to a native library).
iText’s AcroFields class can fill text fields and checkboxes while preserving UTF-8 characters.
Challenges: Requires Java or .NET setup and bridging Harbour to another language.
2. Use a Command-Line Tool with Better UTF-8 Support
Instead of pdftk, you could switch to a tool that handles UTF-8 better and call it from your Harbour program:
QPDF
QPDF is a command-line tool that can manipulate PDFs, including filling forms via its form-filling capabilities (though it’s less straightforward than pdftk). It has better UTF-8 support when paired with a proper FDF (Form Data Format) file. You’d need to:
Generate an FDF file with UTF-8 encoded data from Harbour.
Use QPDF to merge the FDF into the PDF.
Example Workflow:
harbour
cFDF := 'FDF content with UTF-8 data'
hb_MemoWrit("data.fdf", cFDF)
RUN 'qpdf --replace-input input.pdf --fill-form data.fdf output.pdf'
pdftk-java
This is a maintained fork of pdftk with improved UTF-8 support. It might handle Romanian characters better than the original pdftk. You can test it by calling it from Harbour:
harbour
RUN 'pdftk-java input.pdf fill_form data.fdf output output.pdf'
3. Extend tPdf or Write Custom Code
If you’re comfortable with Harbour and PDF internals, you could extend tPdf or write a custom solution:
Parse the existing PDF manually (PDF is a text-based format at its core).
Locate the AcroForm fields (text fields and checkboxes are defined in the PDF structure).
Modify their values with UTF-8 encoded strings.
Rebuild the PDF stream.
This approach requires deep knowledge of the PDF specification (ISO 32000) and is time-intensive. Libraries like tPdf don’t provide this level of manipulation out of the box, so you’d essentially be building a mini PDF editor.
4. Use a Harbour-Compatible Library
There’s no widely known Harbour-native library for PDF form filling with UTF-8 support, but you could explore:
Haru (libHaru): A C library for PDF generation with some editing capabilities. It supports UTF-8 but doesn’t natively handle form filling. You’d need to wrap it in Harbour via a C interface.
Custom FFI: Use Harbour’s foreign function interface (FFI) to call a C/C++ library like Poppler or MuPDF, which can manipulate PDFs and handle UTF-8.
Recommendation
Given your constraints and the need for simplicity:
Short-Term Solution: Switch to pdftk-java or QPDF. Test if they handle Romanian UTF-8 characters correctly when called from Harbour. This keeps your workflow similar to what you’re already doing.
Long-Term Solution: Integrate TCPDF via a PHP script. It’s well-documented, supports UTF-8 fully (with font embedding), and can fill forms in existing PDFs. You’d call it from Harbour like this:
harbour
cCmd := 'php fill_pdf.php input.pdf "field1=ăîșț" "checkbox1=on" output.pdf'
RUN cCmd
Conclusion
The tPdf class in FiveWin/Harbour isn’t designed for your use case. For direct form filling with UTF-8 support, you’ll need to either leverage an external tool (like pdftk-java or QPDF) or integrate a more capable library (like TCPDF or iText). The easiest path is to test pdftk-java first, as it’s a drop-in replacement for pdftk with potential UTF-8 improvements. If that fails, TCPDF via PHP is a robust, Harbour-compatible option. Let me know if you’d like help crafting a specific implementation!
]]>
You're correct that pdftk has limitations when it comes to handling UTF-8 characters, especially for languages like Romanian that use diacritics (e.g., ă, î, ș, ț). This is a known issue with pdftk, as it doesn't fully support UTF-8 encoding for form filling, often resulting in garbled or missing characters. Since you're working with FiveWin and Harbour, and considering the tPdf class, let’s explore your options for filling PDF form fields with UTF-8 support directly from your program.
The tPdf Class in FiveWin/Harbour
The tPdf class in FiveWin (a library for Harbour and Clipper) is primarily designed for generating PDF files from scratch, not for manipulating existing PDFs or filling form fields in pre-existing documents. It’s a lightweight tool based on basic PDF generation principles, similar to early versions of libraries like FPDF. From the available documentation and examples (typically found in the FiveWin distribution or community forums), tPdf lacks built-in methods for:
Loading an existing PDF.
Interacting with form fields (e.g., filling text fields or setting checkboxes).
Handling AcroForms (the PDF form structure).
The examples provided with tPdf (e.g., creating text, lines, or simple graphics) focus on generating new PDFs rather than editing existing ones. As a result, tPdf is not suitable for your use case of filling form fields in an existing PDF with UTF-8 support.
Alternative Approaches
Since tPdf doesn’t meet your needs, here are some viable alternatives to achieve your goal directly from your Harbour/FiveWin program:
1. Use a Different PDF Library with Form-Filling Capabilities
You can integrate a more capable PDF library into your Harbour/FiveWin application. Here are two options that support form filling and UTF-8:
TCPDF (via PHP Integration)
TCPDF is a PHP library that supports UTF-8 and can fill PDF forms. While Harbour doesn’t natively interface with PHP, you could:
Write a small PHP script using TCPDF to handle the PDF manipulation.
Call this script from Harbour using EXECUTE or RUN to pass data (e.g., via a temporary file or command-line arguments).
TCPDF’s setFormField() method allows you to fill text fields and checkboxes in an existing PDF, and it supports UTF-8 with appropriate font embedding (e.g., DejaVu Sans).
Challenges: Requires setting up a PHP environment and handling inter-process communication, which adds complexity.
iText (via Java or C# Integration)
iText is a powerful PDF library (available in Java and C#) that supports form filling with full UTF-8 support. You could:
Create a small Java or C# utility to process the PDF.
Call it from Harbour using a system command or a DLL interface (if you compile it to a native library).
iText’s AcroFields class can fill text fields and checkboxes while preserving UTF-8 characters.
Challenges: Requires Java or .NET setup and bridging Harbour to another language.
2. Use a Command-Line Tool with Better UTF-8 Support
Instead of pdftk, you could switch to a tool that handles UTF-8 better and call it from your Harbour program:
QPDF
QPDF is a command-line tool that can manipulate PDFs, including filling forms via its form-filling capabilities (though it’s less straightforward than pdftk). It has better UTF-8 support when paired with a proper FDF (Form Data Format) file. You’d need to:
Generate an FDF file with UTF-8 encoded data from Harbour.
Use QPDF to merge the FDF into the PDF.
Example Workflow:
harbour
cFDF := 'FDF content with UTF-8 data'
hb_MemoWrit("data.fdf", cFDF)
RUN 'qpdf --replace-input input.pdf --fill-form data.fdf output.pdf'
pdftk-java
This is a maintained fork of pdftk with improved UTF-8 support. It might handle Romanian characters better than the original pdftk. You can test it by calling it from Harbour:
harbour
RUN 'pdftk-java input.pdf fill_form data.fdf output output.pdf'
3. Extend tPdf or Write Custom Code
If you’re comfortable with Harbour and PDF internals, you could extend tPdf or write a custom solution:
Parse the existing PDF manually (PDF is a text-based format at its core).
Locate the AcroForm fields (text fields and checkboxes are defined in the PDF structure).
Modify their values with UTF-8 encoded strings.
Rebuild the PDF stream.
This approach requires deep knowledge of the PDF specification (ISO 32000) and is time-intensive. Libraries like tPdf don’t provide this level of manipulation out of the box, so you’d essentially be building a mini PDF editor.
4. Use a Harbour-Compatible Library
There’s no widely known Harbour-native library for PDF form filling with UTF-8 support, but you could explore:
Haru (libHaru): A C library for PDF generation with some editing capabilities. It supports UTF-8 but doesn’t natively handle form filling. You’d need to wrap it in Harbour via a C interface.
Custom FFI: Use Harbour’s foreign function interface (FFI) to call a C/C++ library like Poppler or MuPDF, which can manipulate PDFs and handle UTF-8.
Recommendation
Given your constraints and the need for simplicity:
Short-Term Solution: Switch to pdftk-java or QPDF. Test if they handle Romanian UTF-8 characters correctly when called from Harbour. This keeps your workflow similar to what you’re already doing.
Long-Term Solution: Integrate TCPDF via a PHP script. It’s well-documented, supports UTF-8 fully (with font embedding), and can fill forms in existing PDFs. You’d call it from Harbour like this:
harbour
cCmd := 'php fill_pdf.php input.pdf "field1=ăîșț" "checkbox1=on" output.pdf'
RUN cCmd
Conclusion
The tPdf class in FiveWin/Harbour isn’t designed for your use case. For direct form filling with UTF-8 support, you’ll need to either leverage an external tool (like pdftk-java or QPDF) or integrate a more capable library (like TCPDF or iText). The easiest path is to test pdftk-java first, as it’s a drop-in replacement for pdftk with potential UTF-8 improvements. If that fails, TCPDF via PHP is a robust, Harbour-compatible option. Let me know if you’d like help crafting a specific implementation!
]]>
<![CDATA[FiveWin for Harbour/xHarbour :: Re: fill text fields and checkbox of existing PDF files :: Reply by marzio]]> 2025-03-29T00:06:48-06:00 2025-03-29T00:06:48-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=3&t=45575&p=278679#p278679 thank you for your kindness and for your exhaustive treatment.
thanks also for your willingness to help me, I would like to try some proposed software solutions,
but my skills are not sufficient to create a program in Python, C#, C++ or other.

I would like to try "Custom FFI" but first I will study your proposals well but I will certainly focus on the 2 external programs proposed.
if they work better than PDFtk it will already be a good result.
as I had already done with PDFtk some alphabetical characters that were completely distorted, (with a function) I replaced them with a readable character. eg. with our t I replaced the Romanian t with the tilde below, always better than seeing a completely different character.
I hope these work better. then I will update you on the results.

many thanks again.
Marzio]]>
thank you for your kindness and for your exhaustive treatment.
thanks also for your willingness to help me, I would like to try some proposed software solutions,
but my skills are not sufficient to create a program in Python, C#, C++ or other.

I would like to try "Custom FFI" but first I will study your proposals well but I will certainly focus on the 2 external programs proposed.
if they work better than PDFtk it will already be a good result.
as I had already done with PDFtk some alphabetical characters that were completely distorted, (with a function) I replaced them with a readable character. eg. with our t I replaced the Romanian t with the tilde below, always better than seeing a completely different character.
I hope these work better. then I will update you on the results.

many thanks again.
Marzio]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Nuevo FWH 25.01 :: Reply by karinha]]> 2025-02-27T10:27:36-07:00 2025-02-27T10:27:36-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45434&p=278014#p278014

Code: Select all | Expand

FUNCTION HB_Default( xVar, xValue )

   IF ValType( xVar ) != ValType( xValue )

      xVar := xValue

   ENDIF

RETURN NIL

/*
cTeste := ""

hb_Default( @cTeste, 1 )
*/

Regards, saludos.]]>

Code: Select all | Expand

FUNCTION HB_Default( xVar, xValue )

   IF ValType( xVar ) != ValType( xValue )

      xVar := xValue

   ENDIF

RETURN NIL

/*
cTeste := ""

hb_Default( @cTeste, 1 )
*/

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: IA con https://console.groq.com :: Author csincuir]]> 2025-02-27T10:52:25-07:00 2025-02-27T10:52:25-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45465&p=278016#p278016 Para los que quieran trabajar con este otro LLM https://console.groq.com/login, que proporciona API's para trabajar de manera gratuita, les copio la clase que hice siguiendo la base de la clase TGemini de FWH25.01 hecha por Antonio:

Code: Select all | Expand

//----------------------------------------------------------------------------//
// Clase: TGroq
// Desarrollado por: Carlos Sincuir
// Version FWH: 25.01
// Obtenga su API key desde https://console.groq.com/login
//----------------------------------------------------------------------------//
#include "FiveWin.ch"
#include "hbcurl.ch"

function Main()

   local oChat := TGroq():New("tuApiKey")

   oChat:Send( "Hola, quien eres ?" )
   ? oChat:GetValue() 

   oChat:End()

return nil   

//----------------------------------------------------------------------------//

CLASS TGroq

   DATA   cKey   INIT ""
   DATA   cModel INIT "llama3-70b-8192" 
   DATA   cResponse
   DATA   cUrl   INIT "" 
   DATA   cUploadUrl INIT "" 
   DATA   hCurl
   DATA   nError INIT 0
   DATA   nHttpCode INIT 0
   DATA   nTemperature INIT 0

   METHOD New( cKey, cModel )
   METHOD Send( cPrompt )
   METHOD End()
   METHOD GetValue()

ENDCLASS

//----------------------------------------------------------------------------//

METHOD New( cKey, cModel ) CLASS TGroq

   if Empty( cKey )
      ::cKey = GetEnv( "GROQ_API_KEY" )
   else
      ::cKey = cKey
   endif

   if ! Empty( cModel )
      ::cModel = cModel
   endif

   if Val( SubStr( Curl_Version_Info()[ 1 ], 1, RAt( ".", Curl_Version_Info()[ 1 ] ) - 1 ) ) - 8.10 > 0.2
      MsgAlert( "Please use an updated curl DLL" )
   endif    
   
   ::cUrl = "https://api.groq.com/openai/v1/chat/completions"
   ::hCurl = curl_easy_init()

return Self

//----------------------------------------------------------------------------//

METHOD End() CLASS TGroq

   curl_easy_cleanup( ::hCurl )
   ::hCurl = nil

return nil

//----------------------------------------------------------------------------//

METHOD GetValue() CLASS TGroq

   local uValue, hResponse

   if ! Empty( ::cResponse )
      uValue = hb_jsonDecode( ::cResponse, @hResponse )
   endif

   if hb_isHash( hResponse )
      TRY
         uValue = hResponse[ "choices" ][ 1 ][ "message" ][ "content" ]
      CATCH
         TRY
            uValue = hResponse[ "error" ][ "message" ]
         CATCH
            uValue = "Error, no response"
         END
      END
   endif

return uValue

//----------------------------------------------------------------------------//
METHOD Send( cPrompt ) CLASS TGroq

   local aHeaders, cJson, hRequest, hMessages

   curl_easy_setopt( ::hCurl, HB_CURLOPT_POST, .T. )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_URL, ::cUrl )

   aHeaders := { "Content-Type: application/json",;
                 "Authorization: Bearer " + ::cKey }  // Tu API key de Groq

   curl_easy_setopt( ::hCurl, HB_CURLOPT_HTTPHEADER, aHeaders )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_USERNAME, "" )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_DL_BUFF_SETUP )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )

   // Estructura del JSON para Groq
   hMessages := { { "role" => "user", "content" => cPrompt } }
   hRequest := { "model" => ::cModel,;  
                 "temperature" => ::nTemperature,;
                 "messages" => hMessages }

   cJson := hb_jsonEncode( hRequest )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_POSTFIELDS, cJson )
   ::nError := curl_easy_perform( ::hCurl )
   curl_easy_getinfo( ::hCurl, HB_CURLINFO_RESPONSE_CODE, @::nHttpCode )

   if ::nError == HB_CURLE_OK
      ::cResponse := curl_easy_dl_buff_get( ::hCurl )
   else
      ::cResponse := "Error code " + Str( ::nError )
   endif

return ::cResponse

//----------------------------------------------------------------------------//
Por el momento este LLM no permite enviar documentos, pero al menos es una opcion para proabar la IA sin necesidad de pagar por las API Key's

Espero les sirva.

Saludos cordiales.

Carlos Sincuir]]>
Para los que quieran trabajar con este otro LLM https://console.groq.com/login, que proporciona API's para trabajar de manera gratuita, les copio la clase que hice siguiendo la base de la clase TGemini de FWH25.01 hecha por Antonio:

Code: Select all | Expand

//----------------------------------------------------------------------------//
// Clase: TGroq
// Desarrollado por: Carlos Sincuir
// Version FWH: 25.01
// Obtenga su API key desde https://console.groq.com/login
//----------------------------------------------------------------------------//
#include "FiveWin.ch"
#include "hbcurl.ch"

function Main()

   local oChat := TGroq():New("tuApiKey")

   oChat:Send( "Hola, quien eres ?" )
   ? oChat:GetValue() 

   oChat:End()

return nil   

//----------------------------------------------------------------------------//

CLASS TGroq

   DATA   cKey   INIT ""
   DATA   cModel INIT "llama3-70b-8192" 
   DATA   cResponse
   DATA   cUrl   INIT "" 
   DATA   cUploadUrl INIT "" 
   DATA   hCurl
   DATA   nError INIT 0
   DATA   nHttpCode INIT 0
   DATA   nTemperature INIT 0

   METHOD New( cKey, cModel )
   METHOD Send( cPrompt )
   METHOD End()
   METHOD GetValue()

ENDCLASS

//----------------------------------------------------------------------------//

METHOD New( cKey, cModel ) CLASS TGroq

   if Empty( cKey )
      ::cKey = GetEnv( "GROQ_API_KEY" )
   else
      ::cKey = cKey
   endif

   if ! Empty( cModel )
      ::cModel = cModel
   endif

   if Val( SubStr( Curl_Version_Info()[ 1 ], 1, RAt( ".", Curl_Version_Info()[ 1 ] ) - 1 ) ) - 8.10 > 0.2
      MsgAlert( "Please use an updated curl DLL" )
   endif    
   
   ::cUrl = "https://api.groq.com/openai/v1/chat/completions"
   ::hCurl = curl_easy_init()

return Self

//----------------------------------------------------------------------------//

METHOD End() CLASS TGroq

   curl_easy_cleanup( ::hCurl )
   ::hCurl = nil

return nil

//----------------------------------------------------------------------------//

METHOD GetValue() CLASS TGroq

   local uValue, hResponse

   if ! Empty( ::cResponse )
      uValue = hb_jsonDecode( ::cResponse, @hResponse )
   endif

   if hb_isHash( hResponse )
      TRY
         uValue = hResponse[ "choices" ][ 1 ][ "message" ][ "content" ]
      CATCH
         TRY
            uValue = hResponse[ "error" ][ "message" ]
         CATCH
            uValue = "Error, no response"
         END
      END
   endif

return uValue

//----------------------------------------------------------------------------//
METHOD Send( cPrompt ) CLASS TGroq

   local aHeaders, cJson, hRequest, hMessages

   curl_easy_setopt( ::hCurl, HB_CURLOPT_POST, .T. )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_URL, ::cUrl )

   aHeaders := { "Content-Type: application/json",;
                 "Authorization: Bearer " + ::cKey }  // Tu API key de Groq

   curl_easy_setopt( ::hCurl, HB_CURLOPT_HTTPHEADER, aHeaders )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_USERNAME, "" )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_DL_BUFF_SETUP )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )

   // Estructura del JSON para Groq
   hMessages := { { "role" => "user", "content" => cPrompt } }
   hRequest := { "model" => ::cModel,;  
                 "temperature" => ::nTemperature,;
                 "messages" => hMessages }

   cJson := hb_jsonEncode( hRequest )
   curl_easy_setopt( ::hCurl, HB_CURLOPT_POSTFIELDS, cJson )
   ::nError := curl_easy_perform( ::hCurl )
   curl_easy_getinfo( ::hCurl, HB_CURLINFO_RESPONSE_CODE, @::nHttpCode )

   if ::nError == HB_CURLE_OK
      ::cResponse := curl_easy_dl_buff_get( ::hCurl )
   else
      ::cResponse := "Error code " + Str( ::nError )
   endif

return ::cResponse

//----------------------------------------------------------------------------//
Por el momento este LLM no permite enviar documentos, pero al menos es una opcion para proabar la IA sin necesidad de pagar por las API Key's

Espero les sirva.

Saludos cordiales.

Carlos Sincuir]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: IA con https://console.groq.com :: Reply by Antonio Linares]]> 2025-02-27T21:35:18-07:00 2025-02-27T21:35:18-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45465&p=278020#p278020
Muy bien! :)]]>

Muy bien! :)]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: El Sr. Rao no se encuentra bien y oremos todos por su pronta recuperación. :: Reply by Joel Andujo]]> 2025-02-28T14:33:11-07:00 2025-02-28T14:33:11-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45449&p=278044#p278044
saludos
Joel Andujo]]>

saludos
Joel Andujo]]>
<![CDATA[FiveWin para Harbour/xHarbour :: OT: ADIOS SKYPE !!!! :: Author sysctrl2]]> 2025-02-28T18:35:33-07:00 2025-02-28T18:35:33-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45474&p=278046#p278046
Image]]>

Image]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Diferencia en la barra de botones (Preview) OLVIDENLO :: Author Armando]]> 2025-02-28T11:45:19-07:00 2025-02-28T19:11:30-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45470&p=278040#p278040
Vuelvo a la andadas, muestro dos imágenes de una vista previa y noten que las barraa de botones son diferentes

Esta primera imagen es obtenida con FWH2012 y Harbour
Image


Y esta segunda imagen es creado con FWH2307 y Harbour
Image

El RPreview.Prg lo tengo modificado a mis necesidades, y debo decir que en ambos script de compilación
esta incluido el RPreview modificado. Copie la DLL Prev32.Dll a Prev64.dll.

Supongo que debo modificar el RPreview original de la versión FWH2307 y tambien la DLL para agregar
un dialogo personalizado.

Intento y aviso

Saludos]]>

Vuelvo a la andadas, muestro dos imágenes de una vista previa y noten que las barraa de botones son diferentes

Esta primera imagen es obtenida con FWH2012 y Harbour
Image


Y esta segunda imagen es creado con FWH2307 y Harbour
Image

El RPreview.Prg lo tengo modificado a mis necesidades, y debo decir que en ambos script de compilación
esta incluido el RPreview modificado. Copie la DLL Prev32.Dll a Prev64.dll.

Supongo que debo modificar el RPreview original de la versión FWH2307 y tambien la DLL para agregar
un dialogo personalizado.

Intento y aviso

Saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Diferencia en la barra de botones (Preview) :: Reply by sysctrl2]]> 2025-02-28T13:56:40-07:00 2025-02-28T13:56:40-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45470&p=278042#p278042 compilar rpreview.prg (el tuyo)
pero tienes que usar la prev32.dll de la ver. FWH2012

En las ultimas versiones de fwh ya no necesitas la DLL en la carpeta de tu aplicación,
asi pasa en mi caso, quisiera que los expertos de FWH, nos saquen de dudas. :? 8) :roll:]]>
compilar rpreview.prg (el tuyo)
pero tienes que usar la prev32.dll de la ver. FWH2012

En las ultimas versiones de fwh ya no necesitas la DLL en la carpeta de tu aplicación,
asi pasa en mi caso, quisiera que los expertos de FWH, nos saquen de dudas. :? 8) :roll:]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Diferencia en la barra de botones (Preview) OLVIDENLO :: Reply by Armando]]> 2025-02-28T19:12:31-07:00 2025-02-28T19:12:31-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45470&p=278047#p278047
Llevas razón, olvidemos este post, mira mi siguiente post.

Saludos]]>

Llevas razón, olvidemos este post, mira mi siguiente post.

Saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: rPreview FWH24.07 :: Author sysctrl2]]> 2025-02-28T14:13:22-07:00 2025-02-28T14:13:22-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45472&p=278043#p278043 mi cliente se acostumbró al preview de las versiones viejitas, por ejemplo 2012 2013
SALUDOS !!!

Image]]>
mi cliente se acostumbró al preview de las versiones viejitas, por ejemplo 2012 2013
SALUDOS !!!

Image]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: rPreview FWH24.07 :: Reply by carlos vargas]]> 2025-02-28T21:46:39-07:00 2025-02-28T21:46:39-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45472&p=278049#p278049

Code: Select all | Expand

#if ( FW_VersionNo >= 22060 )
   tWindow():lHtml := FALSE
#endif
   tPreview():lListViewHide := TRUE
   tPreview():bSetUp := { |oPreview, oWnd| oWnd:oMenu:End() }
 
]]>

Code: Select all | Expand

#if ( FW_VersionNo >= 22060 )
   tWindow():lHtml := FALSE
#endif
   tPreview():lListViewHide := TRUE
   tPreview():bSetUp := { |oPreview, oWnd| oWnd:oMenu:End() }
 
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: rPreview FWH24.07 :: Reply by carlos vargas]]> 2025-02-28T21:47:17-07:00 2025-02-28T21:47:17-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45472&p=278050#p278050 <![CDATA[FiveWin para Harbour/xHarbour :: Re: rPreview FWH24.07 :: Reply by sysctrl2]]> 2025-03-01T08:10:49-07:00 2025-03-01T08:10:49-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45472&p=278065#p278065 <![CDATA[FiveWin para Harbour/xHarbour :: Re: rPreview FWH24.07 :: Reply by sysctrl2]]> 2025-03-01T08:43:39-07:00 2025-03-01T08:43:39-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45472&p=278068#p278068 aparece con el zoom pequeño,
hay manera de que aparezca con el zoom expandido como en la imagen 2 ?
gracias nuevamente !

//IMG1
Image
//IMG2
Image]]>
aparece con el zoom pequeño,
hay manera de que aparezca con el zoom expandido como en la imagen 2 ?
gracias nuevamente !

//IMG1
Image
//IMG2
Image]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Error Nuevo Fwh 25.01 :: Author jgabri]]> 2025-02-28T12:52:29-07:00 2025-02-28T12:52:29-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45471&p=278041#p278041
Estoy haciendo pruebas con la IA y la nueva versión de fwh25.01


Al compilar el ejemplo:


function Main()

local oWnd, oWebView
local oGemini := TGemini():New()

fw_SetUnicode( .F. )

DEFINE WINDOW oWnd TITLE "Chat AI" SIZE 650, 800

oWebView = TWebView2():New( oWnd )

oWebView:SetHtml( hb_memoRead( "chat.html" ) )
oWebView:bOnBind = { | aInfo, cAnswer | oGemini:Send( aInfo[ 1 ] ),;
cAnswer := "sendResponse('" + hb_Utf8ToStr( oGemini:getValue() ) + "')",;
cAnswer := StrTran( cAnswer, Chr( 10 ), "" ),;
oWebView:Eval( cAnswer ) }

ACTIVATE WINDOW oWnd CENTER ;
ON RESIZE oWebView:SetSize( nWidth, nHeight )

oGemini:End()

return nil


Me arroja los siguientes errores, que estoy haciendo mal ?

Un saludo y mil gracias


Error: Unresolved external '__chkstk_noalloc' referenced from C:\HARBOURIA\LIB\HBVM.LIB|extrap
Error: Unresolved external '__LDclass' referenced from C:\HARBOURIA\LIB\HBCOMMON.LIB|hbprintf
Error: Unresolved external '__Dsign' referenced from C:\HARBOURIA\LIB\HBCOMMON.LIB|hbprintf
Error: Unresolved external '___get_std_stream' referenced from C:\HARBOURIA\LIB\HBCPLR.LIB|hbcomp
Error: Unresolved external 'GetAdaptersInfo' referenced from C:\HARBOURIA\LIB\HBRTL.LIB|hbsocket
Error: Unresolved external '__Log' referenced from C:\HARBOURIA\LIB\HBCT.LIB|ctmath2
Error: Unresolved external '__Sinx' referenced from C:\HARBOURIA\LIB\HBCT.LIB|trig
Error: Unresolved external '_curl_global_init_mem' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_global_cleanup' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_mime_free' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_cleanup' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_reset' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_pause' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_perform' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_send' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_recv' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_mime_init' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_mime_addpart' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_mime_name' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_mime_filedata' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_slist_append' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_setopt' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_slist_free_all' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_escape' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_unescape' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_version' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_version_info' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_strerror' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_getdate' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_ws_send' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_ws_recv' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_cleanup' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_add_handle' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_remove_handle' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_perform' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_poll' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_info_read' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_getinfo' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_escape' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_unescape' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_free' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_duphandle' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_init' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_init' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unable to perform link
2 Files, 0 Warnings, 45 Errors
Tiempo de compilación: 1.38s Tiempo de enlazado: 4.25s Tiempo total: 5.65s]]>

Estoy haciendo pruebas con la IA y la nueva versión de fwh25.01


Al compilar el ejemplo:


function Main()

local oWnd, oWebView
local oGemini := TGemini():New()

fw_SetUnicode( .F. )

DEFINE WINDOW oWnd TITLE "Chat AI" SIZE 650, 800

oWebView = TWebView2():New( oWnd )

oWebView:SetHtml( hb_memoRead( "chat.html" ) )
oWebView:bOnBind = { | aInfo, cAnswer | oGemini:Send( aInfo[ 1 ] ),;
cAnswer := "sendResponse('" + hb_Utf8ToStr( oGemini:getValue() ) + "')",;
cAnswer := StrTran( cAnswer, Chr( 10 ), "" ),;
oWebView:Eval( cAnswer ) }

ACTIVATE WINDOW oWnd CENTER ;
ON RESIZE oWebView:SetSize( nWidth, nHeight )

oGemini:End()

return nil


Me arroja los siguientes errores, que estoy haciendo mal ?

Un saludo y mil gracias


Error: Unresolved external '__chkstk_noalloc' referenced from C:\HARBOURIA\LIB\HBVM.LIB|extrap
Error: Unresolved external '__LDclass' referenced from C:\HARBOURIA\LIB\HBCOMMON.LIB|hbprintf
Error: Unresolved external '__Dsign' referenced from C:\HARBOURIA\LIB\HBCOMMON.LIB|hbprintf
Error: Unresolved external '___get_std_stream' referenced from C:\HARBOURIA\LIB\HBCPLR.LIB|hbcomp
Error: Unresolved external 'GetAdaptersInfo' referenced from C:\HARBOURIA\LIB\HBRTL.LIB|hbsocket
Error: Unresolved external '__Log' referenced from C:\HARBOURIA\LIB\HBCT.LIB|ctmath2
Error: Unresolved external '__Sinx' referenced from C:\HARBOURIA\LIB\HBCT.LIB|trig
Error: Unresolved external '_curl_global_init_mem' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_global_cleanup' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_mime_free' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_cleanup' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_reset' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_pause' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_perform' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_send' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_recv' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_mime_init' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_mime_addpart' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_mime_name' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_mime_filedata' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_slist_append' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_setopt' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_slist_free_all' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_escape' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_unescape' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_version' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_version_info' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_strerror' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_getdate' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_ws_send' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_ws_recv' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_cleanup' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_add_handle' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_remove_handle' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_perform' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_poll' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_info_read' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_getinfo' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_escape' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_unescape' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_free' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_duphandle' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_easy_init' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unresolved external '_curl_multi_init' referenced from C:\HARBOURIA\LIB\HBCURL.LIB|core
Error: Unable to perform link
2 Files, 0 Warnings, 45 Errors
Tiempo de compilación: 1.38s Tiempo de enlazado: 4.25s Tiempo total: 5.65s]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Error Nuevo Fwh 25.01 :: Reply by Antonio Linares]]> 2025-02-28T22:14:10-07:00 2025-02-28T22:14:10-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45471&p=278053#p278053
Que versión de bcc estas usando ?]]>

Que versión de bcc estas usando ?]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Error Nuevo Fwh 25.01 :: Reply by jgabri]]> 2025-03-01T06:53:35-07:00 2025-03-01T06:53:35-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45471&p=278062#p278062
He añadido la libcurl.lib y estoy utilizando el Borland bcc70 de 32 bits y fwh25.01


Me da los siguientes errores:


Error: Unresolved external '__chkstk_noalloc' referenced from C:\HARBOURIA\LIB\HBVM.LIB|extrap
Error: Unresolved external '__LDclass' referenced from C:\HARBOURIA\LIB\HBCOMMON.LIB|hbprintf
Error: Unresolved external '__Dsign' referenced from C:\HARBOURIA\LIB\HBCOMMON.LIB|hbprintf
Error: Unresolved external '___get_std_stream' referenced from C:\HARBOURIA\LIB\HBCPLR.LIB|hbcomp
Error: Unresolved external 'GetAdaptersInfo' referenced from C:\HARBOURIA\LIB\HBRTL.LIB|hbsocket
Error: Unresolved external '__Log' referenced from C:\HARBOURIA\LIB\HBCT.LIB|ctmath2
Error: Unresolved external '__Sinx' referenced from C:\HARBOURIA\LIB\HBCT.LIB|trig
Error: Unable to perform link
0 Files, 0 Warnings, 8 Errors

Un saludo y mil gracias
Gabriel]]>

He añadido la libcurl.lib y estoy utilizando el Borland bcc70 de 32 bits y fwh25.01


Me da los siguientes errores:


Error: Unresolved external '__chkstk_noalloc' referenced from C:\HARBOURIA\LIB\HBVM.LIB|extrap
Error: Unresolved external '__LDclass' referenced from C:\HARBOURIA\LIB\HBCOMMON.LIB|hbprintf
Error: Unresolved external '__Dsign' referenced from C:\HARBOURIA\LIB\HBCOMMON.LIB|hbprintf
Error: Unresolved external '___get_std_stream' referenced from C:\HARBOURIA\LIB\HBCPLR.LIB|hbcomp
Error: Unresolved external 'GetAdaptersInfo' referenced from C:\HARBOURIA\LIB\HBRTL.LIB|hbsocket
Error: Unresolved external '__Log' referenced from C:\HARBOURIA\LIB\HBCT.LIB|ctmath2
Error: Unresolved external '__Sinx' referenced from C:\HARBOURIA\LIB\HBCT.LIB|trig
Error: Unable to perform link
0 Files, 0 Warnings, 8 Errors

Un saludo y mil gracias
Gabriel]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Error Nuevo Fwh 25.01 :: Reply by Enrico Maria Giordano]]> 2025-03-01T09:13:07-07:00 2025-03-01T09:13:07-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45471&p=278072#p278072

Code: Select all | Expand

 '__chkstk_noalloc'
It is in cw32.lib.]]>

Code: Select all | Expand

 '__chkstk_noalloc'
It is in cw32.lib.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Error Nuevo Fwh 25.01 :: Reply by Antonio Linares]]> 2025-03-01T13:21:42-07:00 2025-03-01T13:21:42-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45471&p=278089#p278089 <![CDATA[FiveWin para Harbour/xHarbour :: SavetoDbf() de MariaDb tiene error con dbUseArea() (SOLUCIONADO) :: Author CARLOS ATUNCAR]]> 2025-03-01T08:31:43-07:00 2025-03-01T16:11:46-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45478&p=278066#p278066
uso la clase TPUBLIC para crear variable publicas como comento esta funcionando normal pero hoy esta reportando como que si no existen cuando uso el comando dbUseArea()

Code: Select all | Expand


?op:icons   // en este punto esta visible

NetUse( op:temp+"kardeing",.F.,"tmp" )
Set Filter to tmp->flag != "B"
tmp->(DbGoTop())


aCols := {;
          {"codigo"  ,"Codigo"  ,NIL, 80 ,AL_LEFT},;
          {"op"      ,"Op"      ,NIL, 80 ,AL_LEFT},;
          {"partida" ,"Partida" ,NIL, 80 ,AL_LEFT},;
          {"po"      ,"PO"      ,NIL, 80 ,AL_LEFT},;
          {"estilo"  ,"Estilo"  ,NIL, 80 ,AL_LEFT},;
          {"colores" ,"Colores" ,NIL, 80 ,AL_LEFT},;
          {"talla"   ,"Talla"   ,NIL, 80 ,AL_LEFT},;
          {"cantidad","Cantidad",NIL, 80 ,AL_LEFT};
         }

?op:icons // ya no esta visible

esta es la funcion NetUse

Code: Select all | Expand


   LOCAL lForever

   DEFAULT nSeconds TO NET_SECS

   lForever := ( nSeconds == 0 )

   coun := At( ".",cDatabase )
   If coun>0
      xx:= cDatabase
   Else
      xx:=cDatabase+".dbf"
   EndIf

   If !file(xx)
      MsgStop("base de datos "+cdatabase+" no existe","Error de Apertura")
      DbcloseAll()
      SET RESOURCES TO
      SET 3DLOOK OFF
      CLEAR MEMORY
      Quit
      Return .f.
   EndIf

   DO WHILE ( lForever .OR. ( nSeconds > 0 ) )

      ?op:icons,"user"  // aun esta visible
      If dbUseArea(.T.,,cDatabase,(cAlias),lOpenMode,.F.)
         ?op:icons,"user2"   /// Ya no esta visible
         RETURN ( .T. )
      Else
         ?op:icons,"user4"
      ENDIF
      MsgAlert(OemToAnsi("Archivo "+cFileName(cDataBase)+" bloqueado por otro Usuario"),;
          "Compartir")

      ?op:icons,"user2"
   ENDDO

   ?op:icons,"user3"

[
Alguna idea ???]]>

uso la clase TPUBLIC para crear variable publicas como comento esta funcionando normal pero hoy esta reportando como que si no existen cuando uso el comando dbUseArea()

Code: Select all | Expand


?op:icons   // en este punto esta visible

NetUse( op:temp+"kardeing",.F.,"tmp" )
Set Filter to tmp->flag != "B"
tmp->(DbGoTop())


aCols := {;
          {"codigo"  ,"Codigo"  ,NIL, 80 ,AL_LEFT},;
          {"op"      ,"Op"      ,NIL, 80 ,AL_LEFT},;
          {"partida" ,"Partida" ,NIL, 80 ,AL_LEFT},;
          {"po"      ,"PO"      ,NIL, 80 ,AL_LEFT},;
          {"estilo"  ,"Estilo"  ,NIL, 80 ,AL_LEFT},;
          {"colores" ,"Colores" ,NIL, 80 ,AL_LEFT},;
          {"talla"   ,"Talla"   ,NIL, 80 ,AL_LEFT},;
          {"cantidad","Cantidad",NIL, 80 ,AL_LEFT};
         }

?op:icons // ya no esta visible

esta es la funcion NetUse

Code: Select all | Expand


   LOCAL lForever

   DEFAULT nSeconds TO NET_SECS

   lForever := ( nSeconds == 0 )

   coun := At( ".",cDatabase )
   If coun>0
      xx:= cDatabase
   Else
      xx:=cDatabase+".dbf"
   EndIf

   If !file(xx)
      MsgStop("base de datos "+cdatabase+" no existe","Error de Apertura")
      DbcloseAll()
      SET RESOURCES TO
      SET 3DLOOK OFF
      CLEAR MEMORY
      Quit
      Return .f.
   EndIf

   DO WHILE ( lForever .OR. ( nSeconds > 0 ) )

      ?op:icons,"user"  // aun esta visible
      If dbUseArea(.T.,,cDatabase,(cAlias),lOpenMode,.F.)
         ?op:icons,"user2"   /// Ya no esta visible
         RETURN ( .T. )
      Else
         ?op:icons,"user4"
      ENDIF
      MsgAlert(OemToAnsi("Archivo "+cFileName(cDataBase)+" bloqueado por otro Usuario"),;
          "Compartir")

      ?op:icons,"user2"
   ENDDO

   ?op:icons,"user3"

[
Alguna idea ???]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Problema con dbUseArea en Fwh2409 y FWH2501.64 :: Reply by CARLOS ATUNCAR]]> 2025-03-01T09:10:29-07:00 2025-03-01T09:10:29-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45478&p=278071#p278071

Code: Select all | Expand

Application
===========
   Path and name: D:\Proyectos32bits\TallerPro\TallerPro\Bin\TallerPro.Exe (32 bits)
   Size: 4,836,352 bytes
   Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20241008)
   FiveWin  version: FWH 24.07
   C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
   Windows 11 64 Bits, version: 6.2, Build 9200 

   Time from start: 0 hours 0 mins 9 secs 
   Error occurred at: 01/03/2025, 11:07:38
   Error description: Error BASE/1004  Class: 'CHARACTER' has no exported method: RESTORE
   Args:
     [   1] = C             
     [   2] = A   {{"CARPETA","D:\Proyectos32bits\TallerPro\TallerPro\Bin\"},{"TEMP","D:\Proyectos32bits\TallerP ... } length: 19

Stack Calls
===========
   Called from:  => RESTORE( 0 )
   Called from: Source\function.prg => NETUSE( 59 )
   Called from: Source\guiaingresos.prg => ADDREG( 238 )
   Called from: Source\guiaingresos.prg => (b)BRWBTNBAR( 137 )
   Called from: .\source\classes\btnbmp.prg => TBTNBMP:CLICK( 816 )
   Called from: .\source\classes\btnbmp.prg => TBTNBMP:LBUTTONUP( 1103 )
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1867 )
   Called from: .\source\classes\btnbmp.prg => TBTNBMP:HANDLEEVENT( 2143 )
   Called from: .\source\classes\window.prg => _FWH( 1003 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\window.prg => TMDIFRAME:ACTIVATE( 1117 )
   Called from: Source\menu.prg => MAIN( 175 )

System
======
   CPU type: AMD Ryzen 5 5600GT with Radeon Graphics         3593 Mhz
   Hardware memory: 15740 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Windows total applications running: 1
      1 GDI+ Window (AMDRSServ.exe),                                                                                                     

Variables in use
================
   Procedure     Type   Value
   ==========================
   RESTORE
     Param   1:    A    Len:   19
     Local   1:    A    Len:    1
     Local   2:    U    
     Local   3:    U    
   NETUSE
     Param   1:    C    "D:\Proyectos32bits\TallerPro\TallerPro\Bin\temp\kardeing"
     Param   2:    L    .F.
     Param   3:    C    "tmp"
     Local   1:    N    2
     Local   2:    L    .F.
     Local   3:    A    Len:   19

este es el cambio para restaurar

Code: Select all | Expand

   aSave := oP:Save()  // guardamos las variables

   DO WHILE ( lForever .OR. ( nSeconds > 0 ) )


      If dbUseArea(.T.,,cDatabase,(cAlias),lOpenMode,.F.)
         oP:Restore( aSave )
         ?op:icons,"user2"
         RETURN ( .T. )
      Else
         ?op:icons,"user4"
      ENDIF
      MsgAlert(OemToAnsi("Archivo "+cFileName(cDataBase)+" bloqueado por otro Usuario"),;
          "Compartir")

      ?op:icons,"user2"
   ENDDO
]]>

Code: Select all | Expand

Application
===========
   Path and name: D:\Proyectos32bits\TallerPro\TallerPro\Bin\TallerPro.Exe (32 bits)
   Size: 4,836,352 bytes
   Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20241008)
   FiveWin  version: FWH 24.07
   C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
   Windows 11 64 Bits, version: 6.2, Build 9200 

   Time from start: 0 hours 0 mins 9 secs 
   Error occurred at: 01/03/2025, 11:07:38
   Error description: Error BASE/1004  Class: 'CHARACTER' has no exported method: RESTORE
   Args:
     [   1] = C             
     [   2] = A   {{"CARPETA","D:\Proyectos32bits\TallerPro\TallerPro\Bin\"},{"TEMP","D:\Proyectos32bits\TallerP ... } length: 19

Stack Calls
===========
   Called from:  => RESTORE( 0 )
   Called from: Source\function.prg => NETUSE( 59 )
   Called from: Source\guiaingresos.prg => ADDREG( 238 )
   Called from: Source\guiaingresos.prg => (b)BRWBTNBAR( 137 )
   Called from: .\source\classes\btnbmp.prg => TBTNBMP:CLICK( 816 )
   Called from: .\source\classes\btnbmp.prg => TBTNBMP:LBUTTONUP( 1103 )
   Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1867 )
   Called from: .\source\classes\btnbmp.prg => TBTNBMP:HANDLEEVENT( 2143 )
   Called from: .\source\classes\window.prg => _FWH( 1003 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\window.prg => TMDIFRAME:ACTIVATE( 1117 )
   Called from: Source\menu.prg => MAIN( 175 )

System
======
   CPU type: AMD Ryzen 5 5600GT with Radeon Graphics         3593 Mhz
   Hardware memory: 15740 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Windows total applications running: 1
      1 GDI+ Window (AMDRSServ.exe),                                                                                                     

Variables in use
================
   Procedure     Type   Value
   ==========================
   RESTORE
     Param   1:    A    Len:   19
     Local   1:    A    Len:    1
     Local   2:    U    
     Local   3:    U    
   NETUSE
     Param   1:    C    "D:\Proyectos32bits\TallerPro\TallerPro\Bin\temp\kardeing"
     Param   2:    L    .F.
     Param   3:    C    "tmp"
     Local   1:    N    2
     Local   2:    L    .F.
     Local   3:    A    Len:   19

este es el cambio para restaurar

Code: Select all | Expand

   aSave := oP:Save()  // guardamos las variables

   DO WHILE ( lForever .OR. ( nSeconds > 0 ) )


      If dbUseArea(.T.,,cDatabase,(cAlias),lOpenMode,.F.)
         oP:Restore( aSave )
         ?op:icons,"user2"
         RETURN ( .T. )
      Else
         ?op:icons,"user4"
      ENDIF
      MsgAlert(OemToAnsi("Archivo "+cFileName(cDataBase)+" bloqueado por otro Usuario"),;
          "Compartir")

      ?op:icons,"user2"
   ENDDO
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Problema con dbUseArea en Fwh2409 y FWH2501.64 :: Reply by CARLOS ATUNCAR]]> 2025-03-01T09:19:13-07:00 2025-03-01T09:19:13-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45478&p=278073#p278073

Code: Select all | Expand

/*  -----------------------------------------------------------------------------
 *  TPublic()
 *  Clase para el reemplazo de Variables Publicas
 *  Version 2.2b - 01/04/2003
 *
 *  Andrade A. Daniel
 *  Rosario - Santa Fe - Argentina
 *
 *  andrade_2knews@hotmail.com
 *  http://www.dbwide.com.ar
 *
 *  Aportes: [ER]   Eduardo Rizzolo
 *           [WA]   Wilson Alves - wolverine@sercomtel.com.br 18/05/2002
 *           [JJMG] Juan J. Mendez Gonzalez
 *
 *  DATAS
 *  -----------------------------------------------------------------------------
 * aVars      - Arreglo de variables
 * cName      - Nombre ultima variable accedida
 * nPos       - Valor ultimo variable accedida
 * lAutomatic - Asignación automatica, por defecto TRUE [WA]
 *
 *  METODOS
 *  -----------------------------------------------------------------------------
 * New()      - Contructor
 * Add()      - Agrega/define nueva variable
 * Del()      - Borra variable
 * Get()      - Accede a una veriable directamente
 * Set()      - Define nuevo valor directamente
 * GetPos()   - Obtener la posición en el array
 * Release()  - Borra todas las variables
 * IsDef()    - Chequea si una variable fue definida
 * Clone()    - Clona la DATA aVars
 * nCount()   - Devuelve cantidad de variables definidas
 * Save()     - Salva DATA aVars
 * Restore()  - Restaura DATA aVars
 *
 *  NOTA
 *  -----------------------------------------------------------------------------
 * Para acceder al valor de una variable, se puede hacer de 2 formas,
 * una directa usando oPub:Get("Codigo") o por Prueba/Error oPub:Codigo,
 * este último es mas simple de usar pero más lento.
 *
 * Para definir un nuevo valor a una variable tambien puede ser por 2 formas,
 * directamente por oPub:Set("Codigo", "ABC" ), o por Prueba/Error
 * oPub:Codigo := "ABC".
 *
 * Atencion: Los metodos Get() y Set() no controlan si la variable existe,
 * para ganar en velocidad.
 *
 * Las variables definidas NO son case sensitive.
 *
 *  MODIFICACIONES Y AGREGADOS
 *  -----------------------------------------------------------------------------
 * 2.2b Correción Bug en metodo Add() sobre FWH.
 * 2.2a Modificado para não restringir o número de variáveis em [x]Harbour [WA]
 * 2.2  Modificada para funcionar en [x]Harbour
 *
 * 2.1  Se guarda el Nombre y Posición de la última variable accedida para incrementar
 *      la velocidad. (Implementado por Eduardo Rizzolo)
 *
 *  EJEMPLO
 *  -----------------------------------------------------------------------------
 * FUNCTION Test()
 * local oP := TPublic():New(), aSave, nPos
 *
 * oP:Add("Codigo")           // Defino variable sin valor inicial
 * oP:Add("Precio", 1.15)     // Defino variable con valor inicial
 * oP:Add("Cantidad", 10 )
 * oP:Add("TOTAL" )
 *
 * // Acceso a variables por prueba/error
 * oP:Total := oP:Precio * oP:Cantidad
 *
 * // Definicion y Acceso a variables directamente
 * oP:Set("Total", oP:Get("precio") * oP:Get("CANTIDAD") )
 *
 * oP:Del("Total")         // Borro una variable
 * ? oP:IsDef("TOTAL")     // Varifico si existe una variable
 *
 * nPos := oP:GetPos("Total") // Obtengo la posición en el array
 * oP:aVars[nPos,2] := 0      // Modifico el Valor en el array directo
 *
 * aSave := oP:Save()      // Guardo las Variables
 * oP:Release()         // Borro TODAS las variables
 * oP:Restore( aSave )     // Restauro las variables
 *
 * oP:End()       // Termino
 *
 * RETURN NIL
 *
 *  EXEMPLO (Asignación Automática)
 *
 * FUNCTION MAIN()
 * LOCAL oP:=TPublic():New(.T.)
 *
 * op:nome     := "Wilson Alves"
 * op:Endereco := "Rua dos Cravos,75"
 * op:Cidade   := "Londrina-PR"
 * op:Celular  := "9112-5495"
 * op:Empresa  := "WCW Software"
 *
 * ? op:Nome,op:Endereco,op:Cidade,op:celular,op:empresa
 *
 * op:End()
 * RETURN NIL
 *
 */

# include "FiveWin.ch"

#ifdef __HARBOUR__
  # xtranslate BYNAME <V> [, <VN> ]     => ::<V> := <V> [; ::<VN> := <VN> ]
  # xtranslate BYNAME <V> DEFAULT <Val> => ::<V> := BYDEFAULT <V>, <Val>
  # xtranslate BYNAME <V> IFNONIL       => if <V> != NIL ; ::<V> := <V> ; endif
  # xtranslate BYDEFAULT <V>, <Val>     => if( <V> == NIL, <Val>, <V> )
#endif

/*
 * TPublic()
 */
CLASS TPublic

   DATA  lAutomatic  AS LOGICAL     INIT .T.    // [WA]

   DATA  aVars       AS ARRAY       INIT NIL
   DATA  nPos        AS NUMERIC     INIT 0   READONLY // [ER]
   DATA  cName       AS CHARACTER   INIT ""  READONLY // [ER]

   METHOD New( lAutomatic )
   METHOD End()      INLINE ::Release()

   METHOD Add( cName, xValue )
   METHOD Del( cName )
   METHOD Get( cName )
   METHOD Set( cName, xValue )

   METHOD GetPos( cName )

   METHOD Release()
   METHOD IsDef( cName )

   METHOD Clone()    INLINE aClone( ::aClone )
   METHOD nCount()      INLINE Len( ::aVars )

   METHOD Save()     INLINE aClone( ::aVars )
   METHOD Restore( aVars ) INLINE ::aVars := aClone( aVars )

#ifdef __HARBOUR__
   ERROR HANDLER OnError( uParam1 )
#else
   ERROR HANDLER OnError( cMsg, nError )
#endif

ENDCLASS

/*
 *  TPublic:New()
 */
METHOD New( lAutomatic ) CLASS TPublic // [WA]

   ::aVars := {}

   BYNAME  lAutomatic DEFAULT .T.   // [WA]

RETURN Self

/*
 *  TPublic:Add()
 */
METHOD Add( cName, xValue ) CLASS TPublic // [ER]

  if cName != NIL
    if (::nPos := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )) != 0
      ::aVars[::nPos,2] := xValue

#ifndef __HARBOUR__                 // [WA]
    elseif Len(::aVars) < 4000      // [JJMG]
      aAdd( ::aVars, { AllTrim(Upper(cName)), xValue } )
      ::nPos := Len(::aVars)

    else
      MsgAlert("Demasiadas variables definidas para la Clase TPublic()")

#else
    else
      aAdd( ::aVars, { AllTrim(Upper(cName)), xValue } )
      ::nPos := Len(::aVars)
#endif                              // [WA]

    endif

    ::cName  := cName
  endif

RETURN Self

/*
 *  TPublic:Del()
 */
METHOD Del( cName ) CLASS TPublic
   local nPos

   if cName != NIL
      if (nPos := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )) != 0
         aDel( ::aVars, nPos )
         ::aVars := aSize( ::aVars, Len(::aVars) - 1 )

         ::nPos   := 0
         ::cName  := ""
      endif
   endif

RETURN Self

/*
 *  TPublic:Get()
 */
METHOD Get( cName ) CLASS TPublic                  // [by ER]

   if cName != ::cName
      ::nPos   := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )
      ::cName  := cName
   endif

RETURN ::aVars[::nPos,2]

/*
 *  TPublic:Set()
 */
METHOD Set( cName, xValue ) CLASS TPublic             // [by ER]

   if cName != ::cName
      ::nPos   := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )
      ::cName  := cName
   endif

   ::aVars[::nPos,2] := xValue

RETURN Self

/*
 *  TPublic:GetPos()                         // [by ER]
 */
METHOD GetPos( cName ) CLASS TPublic

   ::cName  := cName

RETURN ::nPos := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )


/*
 *  TPublic:Release()
 */
METHOD Release() CLASS TPublic

   ASIZE(::aVars,0)
   ::cName  := ""
   ::nPos   := 0

RETURN Self

/*
 *  TPublic:IsDef()
 */
METHOD IsDef( cName ) CLASS TPublic                // [by ER]

   local lOk := .F.

   if cName != NIL
      if (::nPos := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )) != 0
         ::cName := cName
         lOk := .T.
      endif
   endif

RETURN lOk

/*
 *  OnError()
 */
#ifdef __HARBOUR__
   METHOD OnError( uParam1 ) CLASS TPublic
      local cMsg   := __GetMessage()
      local nError := If( SubStr( cMsg, 1, 1 ) == "_", 1005, 1004 )
#else
   METHOD OnError( cMsg, nError ) CLASS TPublic
      local uParam1 := GetParam( 1, 1 )
#endif

   cMsg := Upper( AllTrim( cMsg ))

   if SubStr( cMsg, 1, 1 ) == "_"
      cMsg := SubStr( cMsg, 2 )

      if cMsg == Upper(::cName)
         ::aVars[::nPos,2] := uParam1

      elseif ( ::nPos := aScan( ::aVars, { |e,n| e[1] == cMsg } ) ) != 0
         ::cName  := cMsg
         ::aVars[::nPos,2] := uParam1

      else

         if !::lAutomatic  // [WA]
            _ClsSetError( _GenError( nError, ::ClassName(), cMsg ) )
            ::cName  := ""
            ::nPos   := 0
         else
            ::add(cmsg)
            ::aVars[::nPos,2] := uParam1
         endif
      endif
   else
      if cMsg == Upper(::cName)           // [by ER]
         RETURN ::aVars[::nPos,2]

      elseif ( ::nPos := aScan( ::aVars, { |e,n| e[1] == cMsg } ) ) != 0
         ::cName  := cMsg
         RETURN ::aVars[::nPos,2]
      else
         _ClsSetError( _GenError( nError, ::ClassName(), cMsg ) )
         ::cName  := ""
         ::nPos   := 0
      endif
   endif

RETURN NIL

// Andrade Daniel (2001-2003)
]]>

Code: Select all | Expand

/*  -----------------------------------------------------------------------------
 *  TPublic()
 *  Clase para el reemplazo de Variables Publicas
 *  Version 2.2b - 01/04/2003
 *
 *  Andrade A. Daniel
 *  Rosario - Santa Fe - Argentina
 *
 *  andrade_2knews@hotmail.com
 *  http://www.dbwide.com.ar
 *
 *  Aportes: [ER]   Eduardo Rizzolo
 *           [WA]   Wilson Alves - wolverine@sercomtel.com.br 18/05/2002
 *           [JJMG] Juan J. Mendez Gonzalez
 *
 *  DATAS
 *  -----------------------------------------------------------------------------
 * aVars      - Arreglo de variables
 * cName      - Nombre ultima variable accedida
 * nPos       - Valor ultimo variable accedida
 * lAutomatic - Asignación automatica, por defecto TRUE [WA]
 *
 *  METODOS
 *  -----------------------------------------------------------------------------
 * New()      - Contructor
 * Add()      - Agrega/define nueva variable
 * Del()      - Borra variable
 * Get()      - Accede a una veriable directamente
 * Set()      - Define nuevo valor directamente
 * GetPos()   - Obtener la posición en el array
 * Release()  - Borra todas las variables
 * IsDef()    - Chequea si una variable fue definida
 * Clone()    - Clona la DATA aVars
 * nCount()   - Devuelve cantidad de variables definidas
 * Save()     - Salva DATA aVars
 * Restore()  - Restaura DATA aVars
 *
 *  NOTA
 *  -----------------------------------------------------------------------------
 * Para acceder al valor de una variable, se puede hacer de 2 formas,
 * una directa usando oPub:Get("Codigo") o por Prueba/Error oPub:Codigo,
 * este último es mas simple de usar pero más lento.
 *
 * Para definir un nuevo valor a una variable tambien puede ser por 2 formas,
 * directamente por oPub:Set("Codigo", "ABC" ), o por Prueba/Error
 * oPub:Codigo := "ABC".
 *
 * Atencion: Los metodos Get() y Set() no controlan si la variable existe,
 * para ganar en velocidad.
 *
 * Las variables definidas NO son case sensitive.
 *
 *  MODIFICACIONES Y AGREGADOS
 *  -----------------------------------------------------------------------------
 * 2.2b Correción Bug en metodo Add() sobre FWH.
 * 2.2a Modificado para não restringir o número de variáveis em [x]Harbour [WA]
 * 2.2  Modificada para funcionar en [x]Harbour
 *
 * 2.1  Se guarda el Nombre y Posición de la última variable accedida para incrementar
 *      la velocidad. (Implementado por Eduardo Rizzolo)
 *
 *  EJEMPLO
 *  -----------------------------------------------------------------------------
 * FUNCTION Test()
 * local oP := TPublic():New(), aSave, nPos
 *
 * oP:Add("Codigo")           // Defino variable sin valor inicial
 * oP:Add("Precio", 1.15)     // Defino variable con valor inicial
 * oP:Add("Cantidad", 10 )
 * oP:Add("TOTAL" )
 *
 * // Acceso a variables por prueba/error
 * oP:Total := oP:Precio * oP:Cantidad
 *
 * // Definicion y Acceso a variables directamente
 * oP:Set("Total", oP:Get("precio") * oP:Get("CANTIDAD") )
 *
 * oP:Del("Total")         // Borro una variable
 * ? oP:IsDef("TOTAL")     // Varifico si existe una variable
 *
 * nPos := oP:GetPos("Total") // Obtengo la posición en el array
 * oP:aVars[nPos,2] := 0      // Modifico el Valor en el array directo
 *
 * aSave := oP:Save()      // Guardo las Variables
 * oP:Release()         // Borro TODAS las variables
 * oP:Restore( aSave )     // Restauro las variables
 *
 * oP:End()       // Termino
 *
 * RETURN NIL
 *
 *  EXEMPLO (Asignación Automática)
 *
 * FUNCTION MAIN()
 * LOCAL oP:=TPublic():New(.T.)
 *
 * op:nome     := "Wilson Alves"
 * op:Endereco := "Rua dos Cravos,75"
 * op:Cidade   := "Londrina-PR"
 * op:Celular  := "9112-5495"
 * op:Empresa  := "WCW Software"
 *
 * ? op:Nome,op:Endereco,op:Cidade,op:celular,op:empresa
 *
 * op:End()
 * RETURN NIL
 *
 */

# include "FiveWin.ch"

#ifdef __HARBOUR__
  # xtranslate BYNAME <V> [, <VN> ]     => ::<V> := <V> [; ::<VN> := <VN> ]
  # xtranslate BYNAME <V> DEFAULT <Val> => ::<V> := BYDEFAULT <V>, <Val>
  # xtranslate BYNAME <V> IFNONIL       => if <V> != NIL ; ::<V> := <V> ; endif
  # xtranslate BYDEFAULT <V>, <Val>     => if( <V> == NIL, <Val>, <V> )
#endif

/*
 * TPublic()
 */
CLASS TPublic

   DATA  lAutomatic  AS LOGICAL     INIT .T.    // [WA]

   DATA  aVars       AS ARRAY       INIT NIL
   DATA  nPos        AS NUMERIC     INIT 0   READONLY // [ER]
   DATA  cName       AS CHARACTER   INIT ""  READONLY // [ER]

   METHOD New( lAutomatic )
   METHOD End()      INLINE ::Release()

   METHOD Add( cName, xValue )
   METHOD Del( cName )
   METHOD Get( cName )
   METHOD Set( cName, xValue )

   METHOD GetPos( cName )

   METHOD Release()
   METHOD IsDef( cName )

   METHOD Clone()    INLINE aClone( ::aClone )
   METHOD nCount()      INLINE Len( ::aVars )

   METHOD Save()     INLINE aClone( ::aVars )
   METHOD Restore( aVars ) INLINE ::aVars := aClone( aVars )

#ifdef __HARBOUR__
   ERROR HANDLER OnError( uParam1 )
#else
   ERROR HANDLER OnError( cMsg, nError )
#endif

ENDCLASS

/*
 *  TPublic:New()
 */
METHOD New( lAutomatic ) CLASS TPublic // [WA]

   ::aVars := {}

   BYNAME  lAutomatic DEFAULT .T.   // [WA]

RETURN Self

/*
 *  TPublic:Add()
 */
METHOD Add( cName, xValue ) CLASS TPublic // [ER]

  if cName != NIL
    if (::nPos := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )) != 0
      ::aVars[::nPos,2] := xValue

#ifndef __HARBOUR__                 // [WA]
    elseif Len(::aVars) < 4000      // [JJMG]
      aAdd( ::aVars, { AllTrim(Upper(cName)), xValue } )
      ::nPos := Len(::aVars)

    else
      MsgAlert("Demasiadas variables definidas para la Clase TPublic()")

#else
    else
      aAdd( ::aVars, { AllTrim(Upper(cName)), xValue } )
      ::nPos := Len(::aVars)
#endif                              // [WA]

    endif

    ::cName  := cName
  endif

RETURN Self

/*
 *  TPublic:Del()
 */
METHOD Del( cName ) CLASS TPublic
   local nPos

   if cName != NIL
      if (nPos := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )) != 0
         aDel( ::aVars, nPos )
         ::aVars := aSize( ::aVars, Len(::aVars) - 1 )

         ::nPos   := 0
         ::cName  := ""
      endif
   endif

RETURN Self

/*
 *  TPublic:Get()
 */
METHOD Get( cName ) CLASS TPublic                  // [by ER]

   if cName != ::cName
      ::nPos   := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )
      ::cName  := cName
   endif

RETURN ::aVars[::nPos,2]

/*
 *  TPublic:Set()
 */
METHOD Set( cName, xValue ) CLASS TPublic             // [by ER]

   if cName != ::cName
      ::nPos   := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )
      ::cName  := cName
   endif

   ::aVars[::nPos,2] := xValue

RETURN Self

/*
 *  TPublic:GetPos()                         // [by ER]
 */
METHOD GetPos( cName ) CLASS TPublic

   ::cName  := cName

RETURN ::nPos := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )


/*
 *  TPublic:Release()
 */
METHOD Release() CLASS TPublic

   ASIZE(::aVars,0)
   ::cName  := ""
   ::nPos   := 0

RETURN Self

/*
 *  TPublic:IsDef()
 */
METHOD IsDef( cName ) CLASS TPublic                // [by ER]

   local lOk := .F.

   if cName != NIL
      if (::nPos := aScan( ::aVars, { |e,n| e[1] == AllTrim(Upper(cName)) } )) != 0
         ::cName := cName
         lOk := .T.
      endif
   endif

RETURN lOk

/*
 *  OnError()
 */
#ifdef __HARBOUR__
   METHOD OnError( uParam1 ) CLASS TPublic
      local cMsg   := __GetMessage()
      local nError := If( SubStr( cMsg, 1, 1 ) == "_", 1005, 1004 )
#else
   METHOD OnError( cMsg, nError ) CLASS TPublic
      local uParam1 := GetParam( 1, 1 )
#endif

   cMsg := Upper( AllTrim( cMsg ))

   if SubStr( cMsg, 1, 1 ) == "_"
      cMsg := SubStr( cMsg, 2 )

      if cMsg == Upper(::cName)
         ::aVars[::nPos,2] := uParam1

      elseif ( ::nPos := aScan( ::aVars, { |e,n| e[1] == cMsg } ) ) != 0
         ::cName  := cMsg
         ::aVars[::nPos,2] := uParam1

      else

         if !::lAutomatic  // [WA]
            _ClsSetError( _GenError( nError, ::ClassName(), cMsg ) )
            ::cName  := ""
            ::nPos   := 0
         else
            ::add(cmsg)
            ::aVars[::nPos,2] := uParam1
         endif
      endif
   else
      if cMsg == Upper(::cName)           // [by ER]
         RETURN ::aVars[::nPos,2]

      elseif ( ::nPos := aScan( ::aVars, { |e,n| e[1] == cMsg } ) ) != 0
         ::cName  := cMsg
         RETURN ::aVars[::nPos,2]
      else
         _ClsSetError( _GenError( nError, ::ClassName(), cMsg ) )
         ::cName  := ""
         ::nPos   := 0
      endif
   endif

RETURN NIL

// Andrade Daniel (2001-2003)
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: SavetoDbf() de MariaDb tiene error con dbUseArea() :: Reply by CARLOS ATUNCAR]]> 2025-03-01T10:27:24-07:00 2025-03-01T10:27:24-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45478&p=278081#p278081 <![CDATA[FiveWin para Harbour/xHarbour :: Re: SavetoDbf() de MariaDb tiene error con dbUseArea() :: Reply by CARLOS ATUNCAR]]> 2025-03-01T16:11:28-07:00 2025-03-01T16:11:28-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45478&p=278091#p278091 <![CDATA[FiveWin para Harbour/xHarbour :: Ayuda para modificar el RPreview, Antonio Linares (SOLUCIONADO) :: Author Armando]]> 2025-02-28T19:31:09-07:00 2025-03-01T11:33:19-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45475&p=278048#p278048
Necesito modificar el RPreview de la versión FWH2307 para ajustarlo a mis necesidades, que ya tenia yo
realizadas en el RPreview de la versión FWH2012, a continuación mis necesidades:

1.- Modificar el método SendEmail() que está vinculado al botón email de la barra de botones, o hacer
una nueva función para:
2.- Primero debo crear un archivo .PDF tomando el nombre del título de la vista previa o documento,
eso ya lo hace el Rpreview original, pero, me parece que solo es para una página,
mi vista previa normalmente tiene más de una página, para crear el PDF utilizo Img2Pdf.Exe
3.- Armar el correo electrónico para enviarlo, adjuntando el archivo PDF recién creado, definir
los posibles correos adicionales CC y/o CCO, encabezado y cuerpo del correo que tomo de un
dialogo personalizado.
4.- Finalmente enviarlo, para esto cuento con MailBee.Exe

Creo que donde estoy liado es en el punto 2, no lo he logrado

Si alguien esta interesado en apoyarme y no fui lo suficientemente claro, por favor dígamelo para aclarar.

Saludos y muchas gracias]]>

Necesito modificar el RPreview de la versión FWH2307 para ajustarlo a mis necesidades, que ya tenia yo
realizadas en el RPreview de la versión FWH2012, a continuación mis necesidades:

1.- Modificar el método SendEmail() que está vinculado al botón email de la barra de botones, o hacer
una nueva función para:
2.- Primero debo crear un archivo .PDF tomando el nombre del título de la vista previa o documento,
eso ya lo hace el Rpreview original, pero, me parece que solo es para una página,
mi vista previa normalmente tiene más de una página, para crear el PDF utilizo Img2Pdf.Exe
3.- Armar el correo electrónico para enviarlo, adjuntando el archivo PDF recién creado, definir
los posibles correos adicionales CC y/o CCO, encabezado y cuerpo del correo que tomo de un
dialogo personalizado.
4.- Finalmente enviarlo, para esto cuento con MailBee.Exe

Creo que donde estoy liado es en el punto 2, no lo he logrado

Si alguien esta interesado en apoyarme y no fui lo suficientemente claro, por favor dígamelo para aclarar.

Saludos y muchas gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Ayuda para modificar el RPreview, Antonio Linares :: Reply by Antonio Linares]]> 2025-02-28T22:11:24-07:00 2025-02-28T22:11:24-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45475&p=278051#p278051
> ya tenia yo realizadas en el RPreview de la versión FWH2012

Y no tienes los cambios que hicistes en el código ?]]>

> ya tenia yo realizadas en el RPreview de la versión FWH2012

Y no tienes los cambios que hicistes en el código ?]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Ayuda para modificar el RPreview, Antonio Linares :: Reply by sysctrl2]]> 2025-03-01T08:09:39-07:00 2025-03-01T08:09:39-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45475&p=278064#p278064

Code: Select all | Expand

function TmpPdf( oPrn )
   local cFilePdf := cTempFile(  '.\tmp\'  , ".pdf" )
   local cMsg := "Exportando a PDF: Aguarda un momento"

   if !File( ".\tmp" )
      lMkDir( ".\tmp" )
    endif

   MSGRUN( cMsg, "Usuario", {||  MSPrintToPDF( oPrn:aMeta, cFilePdf, .T. )  } ) //.t. show pdf

return nil

]]>

Code: Select all | Expand

function TmpPdf( oPrn )
   local cFilePdf := cTempFile(  '.\tmp\'  , ".pdf" )
   local cMsg := "Exportando a PDF: Aguarda un momento"

   if !File( ".\tmp" )
      lMkDir( ".\tmp" )
    endif

   MSGRUN( cMsg, "Usuario", {||  MSPrintToPDF( oPrn:aMeta, cFilePdf, .T. )  } ) //.t. show pdf

return nil

]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Ayuda para modificar el RPreview, Antonio Linares :: Reply by Armando]]> 2025-03-01T08:32:12-07:00 2025-03-01T08:32:12-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45475&p=278067#p278067
Antonio Linares wrote: Sat Mar 01, 2025 5:11 am Estimado Armando,

> ya tenia yo realizadas en el RPreview de la versión FWH2012

Y no tienes los cambios que hicistes en el código ?

Maestro Antonio:

Efectivamente tengo los cambios, he tratado de adaptarlos al nuevo Rprefview pero mi poca experiencia
en Clases no me ayuda. el código siguiente sustituye al original en el método SendEMail(), hasta aquí todo bien.

Code: Select all | Expand

METHOD SendEmail() CLASS TPreview
	LOCAL oDlg,oFont,oIcono

   LOCAL aSays    := Array(03)
	LOCAL aGets	   := ARRAY(07)
	LOCAL acMails  := {}
	LOCAL aChks    := ARRAY(06)

	LOCAL oAceptar,oCancelar

   LOCAL cName := If( ::oReport != nil, ::oReport:cName, ::oDevice:cDocument )

	LOCAL aFiles   := ::oDevice:aMeta[1]

//   ? Len(aFiles)   Me arroja 47

	DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0,-10
	DEFINE ICON oIcono RESOURCE "AppLogo"
	DEFINE DIALOG oDlg RESOURCE "CORREOS" FONT oFont ICON oIcono;
      COLOR oApp:nClrText, oApp:nClrBack

		REDEFINE SAY aSays[01] VAR "Dirección principal:" ID 11 OF oDlg;
         COLOR oApp:nClrText, oApp:nClrBack FONT oFont

		REDEFINE GROUP aSays[02] PROMPT "Con copia para *" ID 12 OF oDlg;
         COLOR oApp:nClrText, oApp:nClrBack FONT oFont TRANSPARENT

		REDEFINE SAY aSays[03] VAR "* Marque la(s) dirección(es) de correo opcional(es) a la(s) que desea enviarle(s) una copia" ID 13 OF oDlg;
         COLOR oApp:nClrText, oApp:nClrBack FONT oFont


		REDEFINE COMBOBOX aGets[01] VAR oApp:cToAddr ID 101 OF oDlg UPDATE;
			PROMPTS acMails;
			MESSAGE "Elija la dirección de correo principal"

			aGets[01]:lIncSearch  := (.T.)

		REDEFINE CHECKBOX aGets[02] VAR aChks[01] ID 102 OF oDlg UPDATE;
			MESSAGE "Active la casilla si desea enviar solo la primera página"

   	REDEFINE CHECKBOX aGets[03] VAR aChks[02] ID 103 OF oDlg UPDATE;
			WHEN ! EMPTY(ALLTRIM(oApp:acMails[02]));
			MESSAGE "Active la casilla si desea enviar copia del correo a esta dirección"

		REDEFINE CHECKBOX aGets[04] VAR aChks[03] ID 104 OF oDlg UPDATE;
			WHEN ! EMPTY(ALLTRIM(oApp:acMails[03]));
			MESSAGE "Active la casilla si desea enviar copia del correo a esta dirección"

		REDEFINE CHECKBOX aGets[05] VAR aChks[04] ID 105 OF oDlg UPDATE;
			WHEN ! EMPTY(ALLTRIM(oApp:acMails[04]));
			MESSAGE "Active la casilla si desea enviar copia del correo a esta dirección"

		REDEFINE CHECKBOX aGets[06] VAR aChks[05] ID 106 OF oDlg UPDATE;
			WHEN ! EMPTY(ALLTRIM(oApp:acMails[05]));
			MESSAGE "Active la casilla si desea enviar copia del correo a esta dirección"

		REDEFINE CHECKBOX aGets[07] VAR aChks[06] ID 107 OF oDlg UPDATE;
			WHEN ! EMPTY(ALLTRIM(oApp:acMails[06]));
			MESSAGE "Active la casilla si desea enviar copia del correo a esta dirección"



      REDEFINE BTNBMP oAceptar PROMPT "&Enviar y salir" ID 901 OF oDlg UPDATE;
         WHEN ! Empty(AllTrim(oApp:cToAddr));
         RESOURCE "SiSave" LEFT ACTION (IIF(EnviarEmail(cName),oDlg:END(),""));
         MESSAGE "Realiza los cambios en la tabla"

      REDEFINE BTNBMP oCancelar PROMPT "&Salir sin enviar" ID 902 OF oDlg UPDATE;
         RESOURCE "NoSave" LEFT ACTION oDlg:END();
         MESSAGE "Cancela el proceso"

         oCancelar:lCancel := .T.

      oDlg:lHelpIcon := (.F.)

	ACTIVATE DIALOG oDlg CENTERED ON PAINT (aGets[03]:SetText(oApp:acMails[02]),;
														aGets[04]:SetText(oApp:acMails[03]),;
														aGets[05]:SetText(oApp:acMails[04]),;
														aGets[06]:SetText(oApp:acMails[05]),;
														aGets[07]:SetText(oApp:acMails[06]),;
														IIF(EMPTY(ALLTRIM(oApp:acMails[02])),aGets[03]:Hide(),),;
														IIF(EMPTY(ALLTRIM(oApp:acMails[03])),aGets[04]:Hide(),),;
														IIF(EMPTY(ALLTRIM(oApp:acMails[04])),aGets[05]:Hide(),),;
														IIF(EMPTY(ALLTRIM(oApp:acMails[05])),aGets[06]:Hide(),),;
														IIF(EMPTY(ALLTRIM(oApp:acMails[06])),aGets[07]:Hide(),))

	oIcono:END()
	oFont:END()
return nil
Con el código anterior obtengo el siguiente dialogo, al fondo se aprecia la vista previa a enviar por corrro

Image


Con CLIC al botón Enviar y salir se ejecuta la siguiente función

Code: Select all | Expand

function EnviarEMail(cPdfFile)
   LOCAL nVez     := 0
	LOCAL aFiles   := ::oDevice:aMeta[1]

   // Limpiamos el arreglo de las paginas (aFiles)
	FOR nVez	:= 2 TO LEN(aFiles)
		aFiles[nVez] := ""
   NEXT

   // Pasamos los correos para enviarles copias
	IF aCheck[02]
		oApp:cCC	:= ALLTRIM(oApp:acMails[02])
   ENDIF

	IF aCheck[03]
		oApp:cCC	:= oApp:cCC + "," + ALLTRIM(oApp:acMails[03])
   ENDIF

	IF aCheck[04]
		oApp:cCC	:= oApp:cCC + "," + ALLTRIM(oApp:acMails[04])
   ENDIF

	IF aCheck[05]
		oApp:cCC	:= oApp:cCC + "," + ALLTRIM(oApp:acMails[05])
   ENDIF

	IF aCheck[06]
		oApp:cCC	:= oApp:cCC + " ," + ALLTRIM(oApp:acMails[06])
   ENDIF

	pdfFileName := AllTrim(pdfFileName)

   pdfFileName := ALLTRIM(SUBSTR(pdfFileName,AT(":",pdfFileName) + 1))

   cPdfFile		:= TRUENAME(ALLTRIM(oApp:cPathPdfs) + "\" +  ALLTRIM(pdfFileName) + ".Pdf")

   ? cPdfFile

	IF ! FILE(".\img2pdf.exe")
		MsgStop("Falta el archivo Img2Pdf.Exe, no se pudo enviar el correo !",oApp:cAplicacion)
		RETURN(.F.)
   ENDIF

	IF ! FILE(".\cImage.Dll")
		MsgStop("Falta el archivo cImage.Dll, no se pudo enviar el correo !",oApp:cAplicacion)
		RETURN(.F.)
   ENDIF

	IF ! FILE(".\ImgDll.Dll")
		MsgStop("Falta el archivo ImgDll.Dll, no se pudo enviar el correo !",oApp:cAplicacion)
		RETURN(.F.)
   ENDIF

	FOR nVez	:= 1 TO LEN(aFiles)
		IF nVez == 1
			/*
				-r = Pone la resolución en el archivo PDF generado
				-1 = Usa la resolución del archivo original
				-o = Va seguido del nombre del archivo PDF que será generado
         */
			WaitRun("img2pdf.exe -$ 55XSD423445544KWET56 -r -1 -o " +;
						'"' + ALLTRIM(cPdfFile) + '"' + SPACE(01) +;
						'"' + ALLTRIM(aFiles[nVez]) + '"',0)	// El cero es para evitar la ventana del DOS
      ELSE
			/*
				-p = Agrega a un archivo PDF existente
             1 = significa que lo agrega al final del archivo existente
				-r = Pone la resolución en el archivo PDF generado
				-1 = Usa la resolución del archivo original
				-o = Va seguido del nombre del archivo PDF que será generado
         */
			WaitRun("img2pdf.exe -$ 55XSD423445544KWET56 -p 1 -r -1 -o " +;
						'"' + ALLTRIM(cPdfFile) + '"' + SPACE(01) +;
						'"' + ALLTRIM(aFiles[nVez]) + '"',0)	// El cero es para evitar la ventana del DOS
      ENDIF
   NEXT
RETURN(.T.)
Y ahí me bota el siguiente error

Code: Select all | Expand

Application
===========
   Path and name: D:\SiaWin40\SiaWin40.Exe (32 bits)
   Size: 6,311,424 bytes
   Compiler version: Harbour 3.2.0dev (r1904111533)
   FiveWin  version: FWH 23.07
   C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
   Windows 11 64 Bits, version: 6.2, Build 9200 

   Time from start: 0 hours 0 mins 22 secs 
   Error occurred at: 01/03/2025, 09:29:57
   Error description: Error BASE/1003  No existe la variable: SELF

Stack Calls
===========
   Called from: Source\rpreview.prg => ENVIAREMAIL( 1967 )
   Called from: Source\rpreview.prg => (b)TPREVIEW_SENDEMAIL( 1937 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 792 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 1083 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1847 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 2135 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3693 )
   Called from:  => DIALOGBOX( 0 )
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 307 )
   Called from: Source\rpreview.prg => TPREVIEW:SENDEMAIL( 1956 )
   Called from: Source\rpreview.prg => (b)TPREVIEW_BUILDBUTTONBAR( 397 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 792 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 1083 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1847 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 2135 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3693 )
   Called from:  => SYSREFRESH( 0 )
   Called from: .\source\function\MSGRUN.PRG => STOPUNTIL( 72 )
   Called from: Source\rpreview.prg => TPREVIEW:ACTIVATE( 181 )
   Called from: Source\rpreview.prg => RPREVIEW( 2051 )
   Called from: Source\vrd.prg => VRD:END( 554 )
   Called from: Source\SiaWin1a.Prg => IMPRIMIR( 4365 )
   Called from: Source\SiaWin1a.Prg => (b)SIAWIN1A( 713 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 792 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 1083 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1847 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 2135 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3693 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 1118 )
   Called from: Source\SiaWin.Prg => MAIN( 168 )
System

La línea 1967 es esta
LOCAL aFiles := ::oDevice:aMeta[1]

Maestro y amigos, muchas gracias por el apoyo]]>
Antonio Linares wrote: Sat Mar 01, 2025 5:11 am Estimado Armando,

> ya tenia yo realizadas en el RPreview de la versión FWH2012

Y no tienes los cambios que hicistes en el código ?

Maestro Antonio:

Efectivamente tengo los cambios, he tratado de adaptarlos al nuevo Rprefview pero mi poca experiencia
en Clases no me ayuda. el código siguiente sustituye al original en el método SendEMail(), hasta aquí todo bien.

Code: Select all | Expand

METHOD SendEmail() CLASS TPreview
	LOCAL oDlg,oFont,oIcono

   LOCAL aSays    := Array(03)
	LOCAL aGets	   := ARRAY(07)
	LOCAL acMails  := {}
	LOCAL aChks    := ARRAY(06)

	LOCAL oAceptar,oCancelar

   LOCAL cName := If( ::oReport != nil, ::oReport:cName, ::oDevice:cDocument )

	LOCAL aFiles   := ::oDevice:aMeta[1]

//   ? Len(aFiles)   Me arroja 47

	DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0,-10
	DEFINE ICON oIcono RESOURCE "AppLogo"
	DEFINE DIALOG oDlg RESOURCE "CORREOS" FONT oFont ICON oIcono;
      COLOR oApp:nClrText, oApp:nClrBack

		REDEFINE SAY aSays[01] VAR "Dirección principal:" ID 11 OF oDlg;
         COLOR oApp:nClrText, oApp:nClrBack FONT oFont

		REDEFINE GROUP aSays[02] PROMPT "Con copia para *" ID 12 OF oDlg;
         COLOR oApp:nClrText, oApp:nClrBack FONT oFont TRANSPARENT

		REDEFINE SAY aSays[03] VAR "* Marque la(s) dirección(es) de correo opcional(es) a la(s) que desea enviarle(s) una copia" ID 13 OF oDlg;
         COLOR oApp:nClrText, oApp:nClrBack FONT oFont


		REDEFINE COMBOBOX aGets[01] VAR oApp:cToAddr ID 101 OF oDlg UPDATE;
			PROMPTS acMails;
			MESSAGE "Elija la dirección de correo principal"

			aGets[01]:lIncSearch  := (.T.)

		REDEFINE CHECKBOX aGets[02] VAR aChks[01] ID 102 OF oDlg UPDATE;
			MESSAGE "Active la casilla si desea enviar solo la primera página"

   	REDEFINE CHECKBOX aGets[03] VAR aChks[02] ID 103 OF oDlg UPDATE;
			WHEN ! EMPTY(ALLTRIM(oApp:acMails[02]));
			MESSAGE "Active la casilla si desea enviar copia del correo a esta dirección"

		REDEFINE CHECKBOX aGets[04] VAR aChks[03] ID 104 OF oDlg UPDATE;
			WHEN ! EMPTY(ALLTRIM(oApp:acMails[03]));
			MESSAGE "Active la casilla si desea enviar copia del correo a esta dirección"

		REDEFINE CHECKBOX aGets[05] VAR aChks[04] ID 105 OF oDlg UPDATE;
			WHEN ! EMPTY(ALLTRIM(oApp:acMails[04]));
			MESSAGE "Active la casilla si desea enviar copia del correo a esta dirección"

		REDEFINE CHECKBOX aGets[06] VAR aChks[05] ID 106 OF oDlg UPDATE;
			WHEN ! EMPTY(ALLTRIM(oApp:acMails[05]));
			MESSAGE "Active la casilla si desea enviar copia del correo a esta dirección"

		REDEFINE CHECKBOX aGets[07] VAR aChks[06] ID 107 OF oDlg UPDATE;
			WHEN ! EMPTY(ALLTRIM(oApp:acMails[06]));
			MESSAGE "Active la casilla si desea enviar copia del correo a esta dirección"



      REDEFINE BTNBMP oAceptar PROMPT "&Enviar y salir" ID 901 OF oDlg UPDATE;
         WHEN ! Empty(AllTrim(oApp:cToAddr));
         RESOURCE "SiSave" LEFT ACTION (IIF(EnviarEmail(cName),oDlg:END(),""));
         MESSAGE "Realiza los cambios en la tabla"

      REDEFINE BTNBMP oCancelar PROMPT "&Salir sin enviar" ID 902 OF oDlg UPDATE;
         RESOURCE "NoSave" LEFT ACTION oDlg:END();
         MESSAGE "Cancela el proceso"

         oCancelar:lCancel := .T.

      oDlg:lHelpIcon := (.F.)

	ACTIVATE DIALOG oDlg CENTERED ON PAINT (aGets[03]:SetText(oApp:acMails[02]),;
														aGets[04]:SetText(oApp:acMails[03]),;
														aGets[05]:SetText(oApp:acMails[04]),;
														aGets[06]:SetText(oApp:acMails[05]),;
														aGets[07]:SetText(oApp:acMails[06]),;
														IIF(EMPTY(ALLTRIM(oApp:acMails[02])),aGets[03]:Hide(),),;
														IIF(EMPTY(ALLTRIM(oApp:acMails[03])),aGets[04]:Hide(),),;
														IIF(EMPTY(ALLTRIM(oApp:acMails[04])),aGets[05]:Hide(),),;
														IIF(EMPTY(ALLTRIM(oApp:acMails[05])),aGets[06]:Hide(),),;
														IIF(EMPTY(ALLTRIM(oApp:acMails[06])),aGets[07]:Hide(),))

	oIcono:END()
	oFont:END()
return nil
Con el código anterior obtengo el siguiente dialogo, al fondo se aprecia la vista previa a enviar por corrro

Image


Con CLIC al botón Enviar y salir se ejecuta la siguiente función

Code: Select all | Expand

function EnviarEMail(cPdfFile)
   LOCAL nVez     := 0
	LOCAL aFiles   := ::oDevice:aMeta[1]

   // Limpiamos el arreglo de las paginas (aFiles)
	FOR nVez	:= 2 TO LEN(aFiles)
		aFiles[nVez] := ""
   NEXT

   // Pasamos los correos para enviarles copias
	IF aCheck[02]
		oApp:cCC	:= ALLTRIM(oApp:acMails[02])
   ENDIF

	IF aCheck[03]
		oApp:cCC	:= oApp:cCC + "," + ALLTRIM(oApp:acMails[03])
   ENDIF

	IF aCheck[04]
		oApp:cCC	:= oApp:cCC + "," + ALLTRIM(oApp:acMails[04])
   ENDIF

	IF aCheck[05]
		oApp:cCC	:= oApp:cCC + "," + ALLTRIM(oApp:acMails[05])
   ENDIF

	IF aCheck[06]
		oApp:cCC	:= oApp:cCC + " ," + ALLTRIM(oApp:acMails[06])
   ENDIF

	pdfFileName := AllTrim(pdfFileName)

   pdfFileName := ALLTRIM(SUBSTR(pdfFileName,AT(":",pdfFileName) + 1))

   cPdfFile		:= TRUENAME(ALLTRIM(oApp:cPathPdfs) + "\" +  ALLTRIM(pdfFileName) + ".Pdf")

   ? cPdfFile

	IF ! FILE(".\img2pdf.exe")
		MsgStop("Falta el archivo Img2Pdf.Exe, no se pudo enviar el correo !",oApp:cAplicacion)
		RETURN(.F.)
   ENDIF

	IF ! FILE(".\cImage.Dll")
		MsgStop("Falta el archivo cImage.Dll, no se pudo enviar el correo !",oApp:cAplicacion)
		RETURN(.F.)
   ENDIF

	IF ! FILE(".\ImgDll.Dll")
		MsgStop("Falta el archivo ImgDll.Dll, no se pudo enviar el correo !",oApp:cAplicacion)
		RETURN(.F.)
   ENDIF

	FOR nVez	:= 1 TO LEN(aFiles)
		IF nVez == 1
			/*
				-r = Pone la resolución en el archivo PDF generado
				-1 = Usa la resolución del archivo original
				-o = Va seguido del nombre del archivo PDF que será generado
         */
			WaitRun("img2pdf.exe -$ 55XSD423445544KWET56 -r -1 -o " +;
						'"' + ALLTRIM(cPdfFile) + '"' + SPACE(01) +;
						'"' + ALLTRIM(aFiles[nVez]) + '"',0)	// El cero es para evitar la ventana del DOS
      ELSE
			/*
				-p = Agrega a un archivo PDF existente
             1 = significa que lo agrega al final del archivo existente
				-r = Pone la resolución en el archivo PDF generado
				-1 = Usa la resolución del archivo original
				-o = Va seguido del nombre del archivo PDF que será generado
         */
			WaitRun("img2pdf.exe -$ 55XSD423445544KWET56 -p 1 -r -1 -o " +;
						'"' + ALLTRIM(cPdfFile) + '"' + SPACE(01) +;
						'"' + ALLTRIM(aFiles[nVez]) + '"',0)	// El cero es para evitar la ventana del DOS
      ENDIF
   NEXT
RETURN(.T.)
Y ahí me bota el siguiente error

Code: Select all | Expand

Application
===========
   Path and name: D:\SiaWin40\SiaWin40.Exe (32 bits)
   Size: 6,311,424 bytes
   Compiler version: Harbour 3.2.0dev (r1904111533)
   FiveWin  version: FWH 23.07
   C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
   Windows 11 64 Bits, version: 6.2, Build 9200 

   Time from start: 0 hours 0 mins 22 secs 
   Error occurred at: 01/03/2025, 09:29:57
   Error description: Error BASE/1003  No existe la variable: SELF

Stack Calls
===========
   Called from: Source\rpreview.prg => ENVIAREMAIL( 1967 )
   Called from: Source\rpreview.prg => (b)TPREVIEW_SENDEMAIL( 1937 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 792 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 1083 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1847 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 2135 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3693 )
   Called from:  => DIALOGBOX( 0 )
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 307 )
   Called from: Source\rpreview.prg => TPREVIEW:SENDEMAIL( 1956 )
   Called from: Source\rpreview.prg => (b)TPREVIEW_BUILDBUTTONBAR( 397 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 792 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 1083 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1847 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 2135 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3693 )
   Called from:  => SYSREFRESH( 0 )
   Called from: .\source\function\MSGRUN.PRG => STOPUNTIL( 72 )
   Called from: Source\rpreview.prg => TPREVIEW:ACTIVATE( 181 )
   Called from: Source\rpreview.prg => RPREVIEW( 2051 )
   Called from: Source\vrd.prg => VRD:END( 554 )
   Called from: Source\SiaWin1a.Prg => IMPRIMIR( 4365 )
   Called from: Source\SiaWin1a.Prg => (b)SIAWIN1A( 713 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 792 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 1083 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1847 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 2135 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3693 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 1118 )
   Called from: Source\SiaWin.Prg => MAIN( 168 )
System

La línea 1967 es esta
LOCAL aFiles := ::oDevice:aMeta[1]

Maestro y amigos, muchas gracias por el apoyo]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Ayuda para modificar el RPreview, Antonio Linares (SOLUCIONADO) :: Reply by Armando]]> 2025-03-01T11:34:24-07:00 2025-03-01T11:34:24-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45475&p=278084#p278084
Problema solucionado, con la orientación de Antonio, lo he solucionado.

Saludos]]>

Problema solucionado, con la orientación de Antonio, lo he solucionado.

Saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Ayuda para modificar el RPreview, Antonio Linares (SOLUCIONADO) :: Reply by sysctrl2]]> 2025-03-01T11:54:52-07:00 2025-03-01T11:54:52-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45475&p=278086#p278086 muestra una pantalla
a ver si me gusta :D :D :D :D]]>
muestra una pantalla
a ver si me gusta :D :D :D :D]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Ayuda para modificar el RPreview, Antonio Linares (SOLUCIONADO) :: Reply by Armando]]> 2025-03-01T12:13:53-07:00 2025-03-01T12:13:53-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45475&p=278087#p278087
La imagen la tienes en el post de arriba, te describo un poco el proceso

Principalmente esta personalización se hizo necesaria pues mi aplicación es un Punto de Venta
donde la gran mayoría de correos es el envío de facturas.

En al RPreview de FWH, al dar clic sobre el botón email, se inicia MAIL adjuntando el PDF y espera
a que el usuario indique los parámetros para el correo, dirección destino, con copia para, encabezado y cuerpo
del correo, etc. es decir, la intervención del usuario y creo que esto lo tienen bien claro todos los colegas.

En mi caso, al dar clic al botón email, se abre un dialogo, como el que ves en el post anterior, donde
se le solicita al usuario indique la dirección destino, ya viene predefinida, hay hasta 6 checks para
hasta 6 posibles correos CC donde el usuario puede elegir a quien enviar copia y a quien no, si no hay
correos adicionales no se muestran todos los checks

El encabezado y cuerpo del correo lo tengo predefinido en una tabla.

Cuando todo esta correcto el usuario da clic sobre el botón Enviar y Salir

Listo, el programa se encarga de crear el PDF, adjuntarlo al correo y enviarlo.

Al final, envía mensaje del resultado del envío

Y, como decía porky pig, eso es to to to todo amigos]]>

La imagen la tienes en el post de arriba, te describo un poco el proceso

Principalmente esta personalización se hizo necesaria pues mi aplicación es un Punto de Venta
donde la gran mayoría de correos es el envío de facturas.

En al RPreview de FWH, al dar clic sobre el botón email, se inicia MAIL adjuntando el PDF y espera
a que el usuario indique los parámetros para el correo, dirección destino, con copia para, encabezado y cuerpo
del correo, etc. es decir, la intervención del usuario y creo que esto lo tienen bien claro todos los colegas.

En mi caso, al dar clic al botón email, se abre un dialogo, como el que ves en el post anterior, donde
se le solicita al usuario indique la dirección destino, ya viene predefinida, hay hasta 6 checks para
hasta 6 posibles correos CC donde el usuario puede elegir a quien enviar copia y a quien no, si no hay
correos adicionales no se muestran todos los checks

El encabezado y cuerpo del correo lo tengo predefinido en una tabla.

Cuando todo esta correcto el usuario da clic sobre el botón Enviar y Salir

Listo, el programa se encarga de crear el PDF, adjuntarlo al correo y enviarlo.

Al final, envía mensaje del resultado del envío

Y, como decía porky pig, eso es to to to todo amigos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Ayuda para modificar el RPreview, Antonio Linares (SOLUCIONADO) :: Reply by sysctrl2]]> 2025-03-01T16:48:21-07:00 2025-03-01T16:48:21-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45475&p=278092#p278092 gracias por la explicación]]> gracias por la explicación]]> <![CDATA[FiveWin para Harbour/xHarbour :: Como está el Sr. Rao :: Author D.Fernandez]]> 2025-02-28T10:55:48-07:00 2025-02-28T10:55:48-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45469&p=278039#p278039 Alguien sabe como está el Sr. Rao por favor?

Gracias

Saludos
Ruben Dario Fernandez]]>
Alguien sabe como está el Sr. Rao por favor?

Gracias

Saludos
Ruben Dario Fernandez]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Como está el Sr. Rao :: Reply by Antonio Linares]]> 2025-02-28T22:15:37-07:00 2025-02-28T22:15:37-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45469&p=278054#p278054 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Como está el Sr. Rao :: Reply by D.Fernandez]]> 2025-03-02T11:30:55-07:00 2025-03-02T11:30:55-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45469&p=278095#p278095
Deseo de todo corazón su mejoría.

Saludos]]>

Deseo de todo corazón su mejoría.

Saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Trabajar Wrapper Java desde C :: Author albeiroval]]> 2025-02-28T08:49:07-07:00 2025-02-28T08:49:07-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45467&p=278035#p278035
Sera esto posible ? De ser asi podriamos trabajar Jaspersoft iReport para reemplazar Fastreport

https://stackoverflow.com/questions/335 ... rap-over-c

https://www.swig.org/

informacion de Jasper :
https://community.jaspersoft.com/knowle ... -designer/
https://community.jaspersoft.com/download-jaspersoft/]]>

Sera esto posible ? De ser asi podriamos trabajar Jaspersoft iReport para reemplazar Fastreport

https://stackoverflow.com/questions/335 ... rap-over-c

https://www.swig.org/

informacion de Jasper :
https://community.jaspersoft.com/knowle ... -designer/
https://community.jaspersoft.com/download-jaspersoft/]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Trabajar Wrapper Java desde C :: Reply by Antonio Linares]]> 2025-02-28T22:16:26-07:00 2025-02-28T22:16:26-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45467&p=278055#p278055
Puedes poner un pantallazo de como se ve ese diseñador de reportes ?

gracias]]>

Puedes poner un pantallazo de como se ve ese diseñador de reportes ?

gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Trabajar Wrapper Java desde C :: Reply by albeiroval]]> 2025-03-02T13:45:33-07:00 2025-03-02T13:45:33-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45467&p=278096#p278096
Antonio Linares wrote: Sat Mar 01, 2025 5:16 am Estimado Albeiro,

Puedes poner un pantallazo de como se ve ese diseñador de reportes ?

gracias
http://avcsistemas.com/images/jasp.png
http://avcsistemas.com/images/jasp1.png
http://avcsistemas.com/images/jasp2.png
http://avcsistemas.com/images/jasp3.png
http://avcsistemas.com/images/jasp4.png
http://avcsistemas.com/images/json5.png
http://avcsistemas.com/images/json6.png]]>
Antonio Linares wrote: Sat Mar 01, 2025 5:16 am Estimado Albeiro,

Puedes poner un pantallazo de como se ve ese diseñador de reportes ?

gracias
http://avcsistemas.com/images/jasp.png
http://avcsistemas.com/images/jasp1.png
http://avcsistemas.com/images/jasp2.png
http://avcsistemas.com/images/jasp3.png
http://avcsistemas.com/images/jasp4.png
http://avcsistemas.com/images/json5.png
http://avcsistemas.com/images/json6.png]]>
<![CDATA[FiveWin para Harbour/xHarbour :: FWH/24.07 / DrXlsx32_bcc.lib ERROR COMPILE :: Author sysctrl2]]> 2025-03-04T09:57:23-07:00 2025-03-04T09:57:23-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45487&p=278128#p278128
ERROR : CON BUILDH.BAT :( :( :( :(

Error: Unresolved external '__streams' referenced from C:\FWH24.07\LIB\DRXLSX32_BCC.LIB|drawing]]>

ERROR : CON BUILDH.BAT :( :( :( :(

Error: Unresolved external '__streams' referenced from C:\FWH24.07\LIB\DRXLSX32_BCC.LIB|drawing]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: FWH/24.07 / DrXlsx32_bcc.lib ERROR COMPILE :: Reply by karinha]]> 2025-03-04T10:01:06-07:00 2025-03-04T10:01:06-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45487&p=278129#p278129 viewtopic.php?p=274368#p274368

viewtopic.php?p=273812&hilit=__streams#p273812

Regards, saludos.]]>
viewtopic.php?p=274368#p274368

viewtopic.php?p=273812&hilit=__streams#p273812

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: FWH/24.07 / DrXlsx32_bcc.lib ERROR COMPILE :: Reply by sysctrl2]]> 2025-03-04T10:45:37-07:00 2025-03-04T10:45:37-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45487&p=278131#p278131 saludos !!]]> saludos !!]]> <![CDATA[FiveWin para Harbour/xHarbour :: Multihilo y cierre de DBF :: Author FiveWiDi]]> 2025-02-28T17:02:40-07:00 2025-02-28T17:02:40-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278045#p278045
En un proceso abro una ventana, en esta ventana muestro un XBrowse de una DBF.
En el Valid de la ventana cierro la DBF.

En otra función lanzo un proceso en un Hilo independiente, esta función deberá cerrar la ventana del XBrowse.

Entonces el proceso que está trabajando en el hilo independiente, cuando intenta cerrar la ventana no puede cerrar el DBF.

¿Cómo puedo cerrar un DBF abierto en el hilo principal del programa, desde un hilo diferente?

Muchas gracias,]]>

En un proceso abro una ventana, en esta ventana muestro un XBrowse de una DBF.
En el Valid de la ventana cierro la DBF.

En otra función lanzo un proceso en un Hilo independiente, esta función deberá cerrar la ventana del XBrowse.

Entonces el proceso que está trabajando en el hilo independiente, cuando intenta cerrar la ventana no puede cerrar el DBF.

¿Cómo puedo cerrar un DBF abierto en el hilo principal del programa, desde un hilo diferente?

Muchas gracias,]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Multihilo y cierre de DBF :: Reply by Antonio Linares]]> 2025-02-28T22:12:28-07:00 2025-02-28T22:12:28-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278052#p278052
Has probado a abrir la DBF como SHARED ?]]>

Has probado a abrir la DBF como SHARED ?]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Multihilo y cierre de DBF :: Reply by FiveWiDi]]> 2025-03-01T00:57:24-07:00 2025-03-01T00:57:24-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278056#p278056
Al final acaba cerrándolas, pero me envía un mensaje de error la clase que manejo que me da que no le gusta el multihilo.

Leí que en multihilo puedes incluso usar el mismo alias en diferentes hilos, de ahí mi temor, de que hubiera algún impedimento en cerrarlas.

Investigaré más.

Muchas gracias,]]>

Al final acaba cerrándolas, pero me envía un mensaje de error la clase que manejo que me da que no le gusta el multihilo.

Leí que en multihilo puedes incluso usar el mismo alias en diferentes hilos, de ahí mi temor, de que hubiera algún impedimento en cerrarlas.

Investigaré más.

Muchas gracias,]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Multihilo y cierre de DBF :: Reply by FiveWiDi]]> 2025-03-01T01:09:33-07:00 2025-03-01T01:09:33-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278057#p278057
Sin multihilo va de 10.

Las abro shared.

De momento lo salvo quitando el multihilo. De hecho en esa situación en la que se encuentra el programa no es necesario.

Pero siguiré con ello.]]>

Sin multihilo va de 10.

Las abro shared.

De momento lo salvo quitando el multihilo. De hecho en esa situación en la que se encuentra el programa no es necesario.

Pero siguiré con ello.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Multihilo y cierre de DBF :: Reply by Otto]]> 2025-03-01T01:52:35-07:00 2025-03-01T01:52:35-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278058#p278058 May I ask why you want to use multithreading?
Actually, I always read about problems with multithreading, even in Xbase.
Couldn't you solve this with a microservice or a well-thought-out architecture (Master/Slave)?

Example: Monthly Financial Report Generation

Step 1: Master EXE (Start.exe)
Starts the following slave EXE files:

- SalesData.exe: Processes sales data and calculates sales tax.
- PurchaseData.exe: Processes purchase data and calculates profit margins.
- InventoryData.exe: Processes inventory data and calculates inventory metrics.
- Reports.exe: Generates the PDF or Excel reports.

Monitors the progress of the slave EXE files using a timer.

Step 2: Slave EXE Files
Each slave EXE writes its results into a shared database or a temporary file.

Step 3: Result Merging
The master EXE checks whether all slave EXE files have completed.

It reads the results from the database or temporary files and generates the final report.

Regards,
Otto]]>
May I ask why you want to use multithreading?
Actually, I always read about problems with multithreading, even in Xbase.
Couldn't you solve this with a microservice or a well-thought-out architecture (Master/Slave)?

Example: Monthly Financial Report Generation

Step 1: Master EXE (Start.exe)
Starts the following slave EXE files:

- SalesData.exe: Processes sales data and calculates sales tax.
- PurchaseData.exe: Processes purchase data and calculates profit margins.
- InventoryData.exe: Processes inventory data and calculates inventory metrics.
- Reports.exe: Generates the PDF or Excel reports.

Monitors the progress of the slave EXE files using a timer.

Step 2: Slave EXE Files
Each slave EXE writes its results into a shared database or a temporary file.

Step 3: Result Merging
The master EXE checks whether all slave EXE files have completed.

It reads the results from the database or temporary files and generates the final report.

Regards,
Otto]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Multihilo y cierre de DBF :: Reply by FiveWiDi]]> 2025-03-01T10:04:43-07:00 2025-03-01T10:04:43-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278074#p278074
El caso es que en un principio se trataba de una aplicación que generaba facturas, y en un corto espacio de tiempo se debía enviar información a la hacienda pública española.
Este envío pensé que podía ser un proceso independiente, transparente para el usuario, que no penalizará las tareas habituales y que tuviera la posibilidad de interactuar con él.

Siendo así, descarté los servicios por que además no estoy habituado a ellos y quería que su instalación fuera muy simple (de hecho con un copiar-pegar, el programa funciona, y es un sólo EXE).]]>

El caso es que en un principio se trataba de una aplicación que generaba facturas, y en un corto espacio de tiempo se debía enviar información a la hacienda pública española.
Este envío pensé que podía ser un proceso independiente, transparente para el usuario, que no penalizará las tareas habituales y que tuviera la posibilidad de interactuar con él.

Siendo así, descarté los servicios por que además no estoy habituado a ellos y quería que su instalación fuera muy simple (de hecho con un copiar-pegar, el programa funciona, y es un sólo EXE).]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Multihilo y cierre de DBF :: Reply by Otto]]> 2025-03-01T11:08:49-07:00 2025-03-01T11:08:49-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278083#p278083 I see the advantages you are talking about, and indeed, one of FIVEWIN's strengths is that you practically only need to copy an EXE.

One disadvantage I see when packing everything into a single EXE is that the entire program becomes very complex. You have to weigh the pros and cons. I personally use EXEs with a timer function more frequently. For example, when I make a request from the internet, I first create a TXT file with the data for the request. The EXE with the timer then detects it and calls a FIVEWIN program with parameters. If the FIVEWIN program detects that it was called with the "onlinerequest" parameter, I simply start the request within the FIVEWIN program and generate, for example, a PDF, which I then retrieve from the internet.

This works very well for me, and the speed is also good.

Best regards,
Otto]]>
I see the advantages you are talking about, and indeed, one of FIVEWIN's strengths is that you practically only need to copy an EXE.

One disadvantage I see when packing everything into a single EXE is that the entire program becomes very complex. You have to weigh the pros and cons. I personally use EXEs with a timer function more frequently. For example, when I make a request from the internet, I first create a TXT file with the data for the request. The EXE with the timer then detects it and calls a FIVEWIN program with parameters. If the FIVEWIN program detects that it was called with the "onlinerequest" parameter, I simply start the request within the FIVEWIN program and generate, for example, a PDF, which I then retrieve from the internet.

This works very well for me, and the speed is also good.

Best regards,
Otto]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Multihilo y cierre de DBF :: Reply by FiveWiDi]]> 2025-03-01T11:43:15-07:00 2025-03-01T11:43:15-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278085#p278085
Ciertamente el EXE lleva muchísimo código, en su momento intenté separar funciones que podrían ser reutilizadas en otros proyectos (arquitectura), pero hace 4 meses me di cuenta de que fracasé en este propósito.
Eso sí el mantenimiento es fácil, tiene 2 clases que son la base de todo el sistema y una estructura de trabajo similar en todos los módulos.

La solución fue relativamente fácil; según para que necesidades o módulos debo habilitar, cambio el menú y los permisos.
El usuario no sabe realmente lo que está dentro de este exe (recibos periódicos, base de personas, actividades de asociaciones, albaranes, facturas, contabilidad, etc. y ahora Verifactu [*]).

Tal como dices es sopesar los pros y contras.

[*] Tanto para sus 'propios' módulos de facturación como para programas externos de terceros.]]>

Ciertamente el EXE lleva muchísimo código, en su momento intenté separar funciones que podrían ser reutilizadas en otros proyectos (arquitectura), pero hace 4 meses me di cuenta de que fracasé en este propósito.
Eso sí el mantenimiento es fácil, tiene 2 clases que son la base de todo el sistema y una estructura de trabajo similar en todos los módulos.

La solución fue relativamente fácil; según para que necesidades o módulos debo habilitar, cambio el menú y los permisos.
El usuario no sabe realmente lo que está dentro de este exe (recibos periódicos, base de personas, actividades de asociaciones, albaranes, facturas, contabilidad, etc. y ahora Verifactu [*]).

Tal como dices es sopesar los pros y contras.

[*] Tanto para sus 'propios' módulos de facturación como para programas externos de terceros.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Multihilo y cierre de DBF :: Reply by Carles]]> 2025-03-02T23:19:18-07:00 2025-03-02T23:19:18-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278100#p278100
El sistema de hilos de harbour funciona perfectamente, lo que pasa es que debes ser cuidadoso al programarlo y entender lo que haces. Te recomiendo que te les as este artículo de Rafa que es es tremendo, intentes probar los ejemplos y luego aplicarlo a tu caso.

https://carles9000.github.io/index_doc_ ... arch=hilos

En la página 22 tienes un ejemplo brutal.

Te recomiendo usar un alias para tu dbf en tu hilo...

Saludos.
C.]]>

El sistema de hilos de harbour funciona perfectamente, lo que pasa es que debes ser cuidadoso al programarlo y entender lo que haces. Te recomiendo que te les as este artículo de Rafa que es es tremendo, intentes probar los ejemplos y luego aplicarlo a tu caso.

https://carles9000.github.io/index_doc_ ... arch=hilos

En la página 22 tienes un ejemplo brutal.

Te recomiendo usar un alias para tu dbf en tu hilo...

Saludos.
C.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Multihilo y cierre de DBF :: Reply by FiveWiDi]]> 2025-03-03T03:27:44-07:00 2025-03-03T03:27:44-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278103#p278103
Este documento lo leí una vez pero no sabía donde lo tenía.

Lo releeré.

Seguimos,]]>

Este documento lo leí una vez pero no sabía donde lo tenía.

Lo releeré.

Seguimos,]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Multihilo y cierre de DBF :: Reply by JoséQuintas]]> 2025-03-03T06:36:51-07:00 2025-03-03T06:36:51-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278107#p278107
FiveWiDi wrote: Sat Mar 01, 2025 12:02 am En otra función lanzo un proceso en un Hilo independiente, esta función deberá cerrar la ventana del XBrowse.
Entonces el proceso que está trabajando en el hilo independiente, cuando intenta cerrar la ventana no puede cerrar el DBF.
¿Cómo puedo cerrar un DBF abierto en el hilo principal del programa, desde un hilo diferente?
Para mí esto no tiene sentido.
El multihilo es como tener varios EXEs.
¿Por qué un EXE cerraría archivos del otro EXE?]]>
FiveWiDi wrote: Sat Mar 01, 2025 12:02 am En otra función lanzo un proceso en un Hilo independiente, esta función deberá cerrar la ventana del XBrowse.
Entonces el proceso que está trabajando en el hilo independiente, cuando intenta cerrar la ventana no puede cerrar el DBF.
¿Cómo puedo cerrar un DBF abierto en el hilo principal del programa, desde un hilo diferente?
Para mí esto no tiene sentido.
El multihilo es como tener varios EXEs.
¿Por qué un EXE cerraría archivos del otro EXE?]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Multihilo y cierre de DBF :: Reply by FiveWiDi]]> 2025-03-05T15:57:31-07:00 2025-03-05T15:57:31-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45473&p=278167#p278167
JoséQuintas wrote: Mon Mar 03, 2025 1:36 pm
FiveWiDi wrote: Sat Mar 01, 2025 12:02 am En otra función lanzo un proceso en un Hilo independiente, esta función deberá cerrar la ventana del XBrowse.
Entonces el proceso que está trabajando en el hilo independiente, cuando intenta cerrar la ventana no puede cerrar el DBF.
¿Cómo puedo cerrar un DBF abierto en el hilo principal del programa, desde un hilo diferente?
Para mí esto no tiene sentido.
El multihilo es como tener varios EXEs.
¿Por qué un EXE cerraría archivos del otro EXE?
En cierta manera así es.
Se trata de un software que INICIALMENTE permitía unas tareas y enviaba desatendidamente información mientras el usuario lo usaba, de ahí el multihilo para ese envío.
El caso es que se le modifica su funcionalidad de manera que el envío pasa a ser la única tarea que debe realizar, pero durante la adaptación a ese nuevo propósito no se elimina el multihilo y se establece que se cierre el programa a una hora determinada.
Y esto provocó mi consulta.
¿Cómo cerrar un programa desde un hilo hijo del 'principal', cuando hay una ventana con un Browse de unas DBF que ha sido creada desde el hilo 'principal'?
Este escenario no tenía sentido, y se ha eliminado el multihilo.

Muchas gracias,]]>
JoséQuintas wrote: Mon Mar 03, 2025 1:36 pm
FiveWiDi wrote: Sat Mar 01, 2025 12:02 am En otra función lanzo un proceso en un Hilo independiente, esta función deberá cerrar la ventana del XBrowse.
Entonces el proceso que está trabajando en el hilo independiente, cuando intenta cerrar la ventana no puede cerrar el DBF.
¿Cómo puedo cerrar un DBF abierto en el hilo principal del programa, desde un hilo diferente?
Para mí esto no tiene sentido.
El multihilo es como tener varios EXEs.
¿Por qué un EXE cerraría archivos del otro EXE?
En cierta manera así es.
Se trata de un software que INICIALMENTE permitía unas tareas y enviaba desatendidamente información mientras el usuario lo usaba, de ahí el multihilo para ese envío.
El caso es que se le modifica su funcionalidad de manera que el envío pasa a ser la única tarea que debe realizar, pero durante la adaptación a ese nuevo propósito no se elimina el multihilo y se establece que se cierre el programa a una hora determinada.
Y esto provocó mi consulta.
¿Cómo cerrar un programa desde un hilo hijo del 'principal', cuando hay una ventana con un Browse de unas DBF que ha sido creada desde el hilo 'principal'?
Este escenario no tenía sentido, y se ha eliminado el multihilo.

Muchas gracias,]]>
<![CDATA[FiveWin para Harbour/xHarbour :: To Mr. Rao :: Author Armando]]> 2025-03-05T18:32:52-07:00 2025-03-05T18:32:52-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45494&p=278169#p278169
How is your health today? I hope it is geting better.

With Best regards]]>

How is your health today? I hope it is geting better.

With Best regards]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Presentamos HDBC – La Mejor Conexión a Bases de Datos para Harbour :: Author Lailton]]> 2025-03-05T10:18:14-07:00 2025-03-05T10:18:14-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45492&p=278153#p278153
Me complace presentar Harbour Database Connect (HDBC), una nueva y potente librería desarrollada por Manuel Expósito (Manu), un desarrollador altamente experimentado y sofisticado con un profundo conocimiento de Harbour a nivel C.

HDBC es una librería de alto rendimiento escrita en C/C++, diseñada para brindar a los desarrolladores de Harbour máxima velocidad y flexibilidad al conectarse a bases de datos. Con HDBC, puedes acceder fácilmente a PostgreSQL, SQLite y ODBC, y pronto habrá soporte para SQL Server y MySQL/MariaDB—¡con tu apoyo, podemos acelerar su desarrollo!

¿Por qué elegir HDBC?

✅ Núcleo en C/C++ para interacciones con bases de datos de alto rendimiento
✅ Compatible con Harbour puro, FiveWin y modHarbour
✅ Funciona con Harbour 32-bit y 64-bit (BCC/MSVC) – otros compiladores disponibles bajo petición
✅ Soporte para Linux incluido

¡Oferta especial – Promoción por tiempo limitado!

Si compras HDBC este mes, también recibirás HDO a un precio exclusivo. Con HDBC + HDO, tendrás soporte para:
✔ SQLite, SQLCipher, MySQL, MariaDB, PostgreSQL, ODBC y HDORDD

Además, Manuel ofrece 1 año de actualizaciones gratuitas, todo por un precio muy asequible.

📌 Descubre más e inicia hoy mismo: https://harbour.blog/hdbc/

Si tienes alguna pregunta, no dudes en contactarnos.

¡Gracias!]]>

Me complace presentar Harbour Database Connect (HDBC), una nueva y potente librería desarrollada por Manuel Expósito (Manu), un desarrollador altamente experimentado y sofisticado con un profundo conocimiento de Harbour a nivel C.

HDBC es una librería de alto rendimiento escrita en C/C++, diseñada para brindar a los desarrolladores de Harbour máxima velocidad y flexibilidad al conectarse a bases de datos. Con HDBC, puedes acceder fácilmente a PostgreSQL, SQLite y ODBC, y pronto habrá soporte para SQL Server y MySQL/MariaDB—¡con tu apoyo, podemos acelerar su desarrollo!

¿Por qué elegir HDBC?

✅ Núcleo en C/C++ para interacciones con bases de datos de alto rendimiento
✅ Compatible con Harbour puro, FiveWin y modHarbour
✅ Funciona con Harbour 32-bit y 64-bit (BCC/MSVC) – otros compiladores disponibles bajo petición
✅ Soporte para Linux incluido

¡Oferta especial – Promoción por tiempo limitado!

Si compras HDBC este mes, también recibirás HDO a un precio exclusivo. Con HDBC + HDO, tendrás soporte para:
✔ SQLite, SQLCipher, MySQL, MariaDB, PostgreSQL, ODBC y HDORDD

Además, Manuel ofrece 1 año de actualizaciones gratuitas, todo por un precio muy asequible.

📌 Descubre más e inicia hoy mismo: https://harbour.blog/hdbc/

Si tienes alguna pregunta, no dudes en contactarnos.

¡Gracias!]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Presentamos HDBC – La Mejor Conexión a Bases de Datos para Harbour :: Reply by Carles]]> 2025-03-05T11:45:15-07:00 2025-03-05T11:45:15-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45492&p=278160#p278160
Felicidades Manu

C.]]>

Felicidades Manu

C.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Presentamos HDBC – La Mejor Conexión a Bases de Datos para Harbour :: Reply by sysctrl2]]> 2025-03-05T12:00:14-07:00 2025-03-05T12:00:14-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45492&p=278161#p278161 HDBC LIB, es compatible con xBrowse ? puede mostrar codigo de uso?
gracias.]]>
HDBC LIB, es compatible con xBrowse ? puede mostrar codigo de uso?
gracias.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Presentamos HDBC – La Mejor Conexión a Bases de Datos para Harbour :: Reply by Lailton]]> 2025-03-05T12:18:41-07:00 2025-03-05T12:18:41-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45492&p=278164#p278164
Si, la xBrowse de FiveWin es muy avanzada, y te permite muy facil usar Array para los dados de browse
se verificar los ejemplos en la URL tiene ejemplos de como obter los resultado como array, hash, json etc.

Como siempre la limitacion de harbour es la imaginacion :D]]>

Si, la xBrowse de FiveWin es muy avanzada, y te permite muy facil usar Array para los dados de browse
se verificar los ejemplos en la URL tiene ejemplos de como obter los resultado como array, hash, json etc.

Como siempre la limitacion de harbour es la imaginacion :D]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Presentamos HDBC – La Mejor Conexión a Bases de Datos para Harbour :: Reply by Marco Augusto]]> 2025-03-05T13:01:30-07:00 2025-03-05T13:01:30-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45492&p=278165#p278165 puedo usar MYSQL via ADO]]> puedo usar MYSQL via ADO]]> <![CDATA[FiveWin para Harbour/xHarbour :: Re: Presentamos HDBC – La Mejor Conexión a Bases de Datos para Harbour :: Reply by xmanuel]]> 2025-03-06T17:23:31-07:00 2025-03-06T17:23:31-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45492&p=278189#p278189 - SQLite y SQLCipher (SQLite cifrado)
- PostgreSQL
- MS SQLServer
- ODBC
En proyecto está:
- MariaDB/MySQL
- Firebird
- Oracle

Todas ellas con accesos nativos, usando el estándar C++20 con los compiladores MSVC 32 y 64, MinGW 32 y 64, CLang 32 y 64 y Bcc 64 (no he probado el de 32 que posiblemente no implemente el C++20)
Para que tengáis una idea estas son las clases virtuales en C++ desde las que derivan las demás especializadas en un base de datos concreta:

Code: Select all | Expand

//-----------------------------------------------------------------------------
// Harbour Data Base Connection (HDBC)
// Archivo: hdbc.hpp
// Clase virtual desde la se derivan todas
// Autor: Manu Exposito (2024)
// Notas:
//-----------------------------------------------------------------------------

#ifndef _HVDBC_HPP
#define _HVDBC_HPP

#pragma once

// De HDbc
#include "hvobject.hpp"
#include "hcompclass.hpp"

// Definicion anticipada de clases
class TVHDbc;
class TVHDbcStmt;

// De C++
#include <string>

//-----------------------------------------------------------------------------
// Clase TVHDbc: Gestion de la conexion y la base de datos

class TVHDbc : public TXVObject
{
	public:
		// Atributos
		HB_UINT ATTR_TIMEOUT = 0; // Tiempo de espera
		HB_UINT ATTR_ERRMODE = 1; // Lanaza exception
		// Metodos
		virtual void init() {}

		virtual bool connect() = 0;
		virtual bool isConnected() const = 0;
		virtual void disconnect() = 0;
		virtual bool reconnect() = 0;
		virtual bool ping();
		virtual TVHDbcStmt *prepare( const char *zSql ) const = 0;
		virtual void query( const char *zSql, PHB_ITEM aColNames ) const;
		virtual void tables() const = 0;
		virtual void scalar( const char *zSql, HB_UINT columnIndex ) const;
		virtual bool setAttribute( HB_UINT uiAttribute, PHB_ITEM xValue );
		virtual PHB_ITEM getAttribute( HB_UINT uiAttribute ) const;
		virtual bool beginTrans() const;
		virtual bool commit() const;
		virtual bool rollback() const;
		virtual HB_INT exec( const char *szStmt ) const = 0;
		virtual HB_INT errorCode() const noexcept = 0;
		virtual const char *lastError() const noexcept = 0;
		virtual HB_SIZE lastInsertId() const;
		virtual std::string escapeStr( const std::string &inputStr ) = 0;
		virtual std::string quote( const std::string &inputStr ) = 0;
		virtual void *gethConn() const = 0;

	protected:
	private:
};

//-----------------------------------------------------------------------------
// Clase TVHDbcStmt: Gestion de sentencias

class TVHDbcStmt : public TXVObject
{
	private:
		HB_UINT uiColumnCount = 0;
		HB_UINT uiParamCount = 0;

	protected:
		TBindList *listParam = nullptr;
		TBindList *listColumn = nullptr;
		int iRowCount = 0;
		int iCurrentRow = -1;

	public:
		// Atributos
		// Los ATTR_ poner en una estructura o en una enumeracion
		HB_UINT ATTR_ERRMODE = 1; // Lanaza exception
		// Metodos
		virtual void close() = 0;
		virtual bool closeCursor() = 0;
		virtual void bindParam( HB_UINT index, PHB_ITEM xParam );
		virtual void bindValue( HB_UINT index, PHB_ITEM xValue );
		virtual void bindColumn( HB_UINT index, PHB_ITEM xColumn );
		virtual bool bindParamC( const char *szIndex, PHB_ITEM xParam );
		virtual bool bindValueC( const char *szIndex, PHB_ITEM xValue );
		virtual HB_INT errorCode() const noexcept = 0;
		virtual const char *lastError() const noexcept = 0;
		virtual bool executeStmt() = 0;
		virtual bool executeQuery() = 0;
		virtual HB_SIZE affectedRows() const = 0;
		virtual bool setAttribute( HB_UINT uiAttribute, PHB_ITEM xValue );
		virtual PHB_ITEM getAttribute( HB_UINT uiAttribute ) const;
		virtual bool isPrepared() const = 0;
		virtual HB_SIZE rowCount() const = 0;
		virtual bool fetchDirect() noexcept = 0;
		virtual bool next(); // Va a la fila siguiente
		virtual bool prev(); // Va a la fila anterior
		virtual bool first(); // Va a la fila primera
		virtual bool last(); // Va a la fila ultima
		virtual bool moveTo( HB_SIZE ulRow ); // Va a la fila indicada
		virtual bool move( HB_LONGLONG llSkip ); // Va a la fila iSkip siguiente o anterior (skip)
		virtual void getBound() const;
		virtual void getArray( PHB_ITEM aRec ) const;
		virtual void getHash( PHB_ITEM hRec ) const;
		virtual void getJson( PHB_ITEM cJson ) const;
		virtual void getAllArray();
		virtual void getAllArray( PHB_ITEM aRec );
		virtual void getAllHash();
		virtual void getAllJson();
		virtual void columnGet( HB_UINT columnIndex = 1 ) const;
		virtual const char *columnName( HB_UINT columnIndex ) const = 0;
		virtual int columnLen( HB_UINT columnIndex ) const = 0;
		virtual int columnNativeType( HB_UINT columnIndex ) const = 0;
		virtual const char *columnType( HB_UINT columnIndex ) const = 0;
		virtual void columnNames() const;
		virtual void columnNames( PHB_ITEM aColNames ) const;
		virtual bool nextRowset() = 0;
		virtual void *gethStmt() const = 0;
		virtual void getString( HB_UINT columnIndex ) const = 0;
		virtual void getInteger( HB_UINT columnIndex ) const = 0;
		virtual void getDouble( HB_UINT columnIndex ) const = 0;
		virtual void getDate( HB_UINT columnIndex ) const = 0;
		virtual void getDateTime( HB_UINT columnIndex ) const = 0;
		virtual void getBool( HB_UINT columnIndex ) const = 0;
		virtual void getBlob( HB_UINT columnIndex ) const = 0;
		// Metodos inline
		inline HB_UINT columnCount() const
		{
			return uiColumnCount;
		}

		inline void setColumnCount( HB_UINT uiColumns = 0 )
		{
			uiColumnCount = uiColumns;
		}

		inline HB_UINT paramCount() const
		{
			return uiParamCount;
		}

		inline void setParamCount( HB_UINT uiParams = 0 )
		{
			uiParamCount = uiParams;
		}

		virtual inline bool bof() const
		{
			return iRowCount == 0 || iCurrentRow == -1;
		}

		virtual inline bool eof() const
		{
			return iRowCount == 0 || iCurrentRow >= iRowCount;
		}

	protected:
		virtual void setBindParam( HB_UINT index ) const = 0;
		virtual void setBindColumn( HB_UINT columnIndex, PHB_ITEM xResult ) const = 0;

	private:
};

class THResultSet : public TXVObject
{
	private:
		PHB_ITEM aData; // Array de arrays que contiene los datos
		PHB_ITEM aColumnNames; // Array de nombres de columnas
		HB_SIZE uiRowCount = 0; // Total de filas
		HB_SIZE uiCurrentRow; // Índice de la fila actual (base 1)
		HB_SIZE uiColumnCount = 0; // Numero de columnas

	public:
		// Constructor y destructor /* crear otro constructor especifico para usar en TStatement sin hacer los hb_itemCopy() */
		THResultSet( PHB_ITEM data, PHB_ITEM columnNames );
		THResultSet();
		virtual ~THResultSet() override;
		// Eliminar constructor de copia y operador de asignación
		THResultSet( const THResultSet & ) = delete;
		THResultSet &operator=( const THResultSet & ) = delete;
		// Métodos de navegación
		virtual bool next(); // Avanza a la siguiente fila
		virtual bool previous(); // Retrocede a la fila anterior
		virtual bool first(); // Va a la primera fila
		virtual bool last(); // Va a la última fila
		virtual bool moveTo( HB_SIZE row ); // Va a una fila específica
		virtual bool move( HB_ISIZ offset ); // Mueve el cursor un número relativo de filas
		// Métodos de estado del cursor
		virtual bool bof() const; // Comprueba si estamos antes de la primera fila
		virtual bool eof() const; // Comprueba si estamos después de la última fila
		// Métodos de acceso a datos
		virtual PHB_ITEM valueByPos( HB_SIZE index ) const; // Obtiene el valor de una columna
		virtual PHB_ITEM valueByName( const char *colName ) const; // Obtiene el valor de una columna

		virtual inline HB_SIZE getCurrentRow() const
		{
			return uiCurrentRow; // Obtiene el número de fila actual
		}

		virtual inline HB_SIZE getRowCount() const
		{
			return uiRowCount; // Obtiene el número total de filas
		}

		virtual inline void setRowCount( HB_SIZE uiNewRowCount = 0 )
		{
			uiRowCount = uiNewRowCount;
		}

		virtual inline void setColumnCount( HB_SIZE uiNewColumnCount = 0 )
		{
			uiColumnCount = uiNewColumnCount;
		}

		inline PHB_ITEM getData() const
		{
			return aData;
		}

		inline PHB_ITEM getColumnNames() const
		{
			return aColumnNames;
		}

	private:
		// Métodos auxiliares
		virtual HB_SIZE findColumnIndex( const char* columnName ) const; // Busca el índice de una columna por nombre
};

//-----------------------------------------------------------------------------
#endif // _HVDBC_HPP
//-----------------------------------------------------------------------------

Espero vuestro apoyo 8)]]>
- SQLite y SQLCipher (SQLite cifrado)
- PostgreSQL
- MS SQLServer
- ODBC
En proyecto está:
- MariaDB/MySQL
- Firebird
- Oracle

Todas ellas con accesos nativos, usando el estándar C++20 con los compiladores MSVC 32 y 64, MinGW 32 y 64, CLang 32 y 64 y Bcc 64 (no he probado el de 32 que posiblemente no implemente el C++20)
Para que tengáis una idea estas son las clases virtuales en C++ desde las que derivan las demás especializadas en un base de datos concreta:

Code: Select all | Expand

//-----------------------------------------------------------------------------
// Harbour Data Base Connection (HDBC)
// Archivo: hdbc.hpp
// Clase virtual desde la se derivan todas
// Autor: Manu Exposito (2024)
// Notas:
//-----------------------------------------------------------------------------

#ifndef _HVDBC_HPP
#define _HVDBC_HPP

#pragma once

// De HDbc
#include "hvobject.hpp"
#include "hcompclass.hpp"

// Definicion anticipada de clases
class TVHDbc;
class TVHDbcStmt;

// De C++
#include <string>

//-----------------------------------------------------------------------------
// Clase TVHDbc: Gestion de la conexion y la base de datos

class TVHDbc : public TXVObject
{
	public:
		// Atributos
		HB_UINT ATTR_TIMEOUT = 0; // Tiempo de espera
		HB_UINT ATTR_ERRMODE = 1; // Lanaza exception
		// Metodos
		virtual void init() {}

		virtual bool connect() = 0;
		virtual bool isConnected() const = 0;
		virtual void disconnect() = 0;
		virtual bool reconnect() = 0;
		virtual bool ping();
		virtual TVHDbcStmt *prepare( const char *zSql ) const = 0;
		virtual void query( const char *zSql, PHB_ITEM aColNames ) const;
		virtual void tables() const = 0;
		virtual void scalar( const char *zSql, HB_UINT columnIndex ) const;
		virtual bool setAttribute( HB_UINT uiAttribute, PHB_ITEM xValue );
		virtual PHB_ITEM getAttribute( HB_UINT uiAttribute ) const;
		virtual bool beginTrans() const;
		virtual bool commit() const;
		virtual bool rollback() const;
		virtual HB_INT exec( const char *szStmt ) const = 0;
		virtual HB_INT errorCode() const noexcept = 0;
		virtual const char *lastError() const noexcept = 0;
		virtual HB_SIZE lastInsertId() const;
		virtual std::string escapeStr( const std::string &inputStr ) = 0;
		virtual std::string quote( const std::string &inputStr ) = 0;
		virtual void *gethConn() const = 0;

	protected:
	private:
};

//-----------------------------------------------------------------------------
// Clase TVHDbcStmt: Gestion de sentencias

class TVHDbcStmt : public TXVObject
{
	private:
		HB_UINT uiColumnCount = 0;
		HB_UINT uiParamCount = 0;

	protected:
		TBindList *listParam = nullptr;
		TBindList *listColumn = nullptr;
		int iRowCount = 0;
		int iCurrentRow = -1;

	public:
		// Atributos
		// Los ATTR_ poner en una estructura o en una enumeracion
		HB_UINT ATTR_ERRMODE = 1; // Lanaza exception
		// Metodos
		virtual void close() = 0;
		virtual bool closeCursor() = 0;
		virtual void bindParam( HB_UINT index, PHB_ITEM xParam );
		virtual void bindValue( HB_UINT index, PHB_ITEM xValue );
		virtual void bindColumn( HB_UINT index, PHB_ITEM xColumn );
		virtual bool bindParamC( const char *szIndex, PHB_ITEM xParam );
		virtual bool bindValueC( const char *szIndex, PHB_ITEM xValue );
		virtual HB_INT errorCode() const noexcept = 0;
		virtual const char *lastError() const noexcept = 0;
		virtual bool executeStmt() = 0;
		virtual bool executeQuery() = 0;
		virtual HB_SIZE affectedRows() const = 0;
		virtual bool setAttribute( HB_UINT uiAttribute, PHB_ITEM xValue );
		virtual PHB_ITEM getAttribute( HB_UINT uiAttribute ) const;
		virtual bool isPrepared() const = 0;
		virtual HB_SIZE rowCount() const = 0;
		virtual bool fetchDirect() noexcept = 0;
		virtual bool next(); // Va a la fila siguiente
		virtual bool prev(); // Va a la fila anterior
		virtual bool first(); // Va a la fila primera
		virtual bool last(); // Va a la fila ultima
		virtual bool moveTo( HB_SIZE ulRow ); // Va a la fila indicada
		virtual bool move( HB_LONGLONG llSkip ); // Va a la fila iSkip siguiente o anterior (skip)
		virtual void getBound() const;
		virtual void getArray( PHB_ITEM aRec ) const;
		virtual void getHash( PHB_ITEM hRec ) const;
		virtual void getJson( PHB_ITEM cJson ) const;
		virtual void getAllArray();
		virtual void getAllArray( PHB_ITEM aRec );
		virtual void getAllHash();
		virtual void getAllJson();
		virtual void columnGet( HB_UINT columnIndex = 1 ) const;
		virtual const char *columnName( HB_UINT columnIndex ) const = 0;
		virtual int columnLen( HB_UINT columnIndex ) const = 0;
		virtual int columnNativeType( HB_UINT columnIndex ) const = 0;
		virtual const char *columnType( HB_UINT columnIndex ) const = 0;
		virtual void columnNames() const;
		virtual void columnNames( PHB_ITEM aColNames ) const;
		virtual bool nextRowset() = 0;
		virtual void *gethStmt() const = 0;
		virtual void getString( HB_UINT columnIndex ) const = 0;
		virtual void getInteger( HB_UINT columnIndex ) const = 0;
		virtual void getDouble( HB_UINT columnIndex ) const = 0;
		virtual void getDate( HB_UINT columnIndex ) const = 0;
		virtual void getDateTime( HB_UINT columnIndex ) const = 0;
		virtual void getBool( HB_UINT columnIndex ) const = 0;
		virtual void getBlob( HB_UINT columnIndex ) const = 0;
		// Metodos inline
		inline HB_UINT columnCount() const
		{
			return uiColumnCount;
		}

		inline void setColumnCount( HB_UINT uiColumns = 0 )
		{
			uiColumnCount = uiColumns;
		}

		inline HB_UINT paramCount() const
		{
			return uiParamCount;
		}

		inline void setParamCount( HB_UINT uiParams = 0 )
		{
			uiParamCount = uiParams;
		}

		virtual inline bool bof() const
		{
			return iRowCount == 0 || iCurrentRow == -1;
		}

		virtual inline bool eof() const
		{
			return iRowCount == 0 || iCurrentRow >= iRowCount;
		}

	protected:
		virtual void setBindParam( HB_UINT index ) const = 0;
		virtual void setBindColumn( HB_UINT columnIndex, PHB_ITEM xResult ) const = 0;

	private:
};

class THResultSet : public TXVObject
{
	private:
		PHB_ITEM aData; // Array de arrays que contiene los datos
		PHB_ITEM aColumnNames; // Array de nombres de columnas
		HB_SIZE uiRowCount = 0; // Total de filas
		HB_SIZE uiCurrentRow; // Índice de la fila actual (base 1)
		HB_SIZE uiColumnCount = 0; // Numero de columnas

	public:
		// Constructor y destructor /* crear otro constructor especifico para usar en TStatement sin hacer los hb_itemCopy() */
		THResultSet( PHB_ITEM data, PHB_ITEM columnNames );
		THResultSet();
		virtual ~THResultSet() override;
		// Eliminar constructor de copia y operador de asignación
		THResultSet( const THResultSet & ) = delete;
		THResultSet &operator=( const THResultSet & ) = delete;
		// Métodos de navegación
		virtual bool next(); // Avanza a la siguiente fila
		virtual bool previous(); // Retrocede a la fila anterior
		virtual bool first(); // Va a la primera fila
		virtual bool last(); // Va a la última fila
		virtual bool moveTo( HB_SIZE row ); // Va a una fila específica
		virtual bool move( HB_ISIZ offset ); // Mueve el cursor un número relativo de filas
		// Métodos de estado del cursor
		virtual bool bof() const; // Comprueba si estamos antes de la primera fila
		virtual bool eof() const; // Comprueba si estamos después de la última fila
		// Métodos de acceso a datos
		virtual PHB_ITEM valueByPos( HB_SIZE index ) const; // Obtiene el valor de una columna
		virtual PHB_ITEM valueByName( const char *colName ) const; // Obtiene el valor de una columna

		virtual inline HB_SIZE getCurrentRow() const
		{
			return uiCurrentRow; // Obtiene el número de fila actual
		}

		virtual inline HB_SIZE getRowCount() const
		{
			return uiRowCount; // Obtiene el número total de filas
		}

		virtual inline void setRowCount( HB_SIZE uiNewRowCount = 0 )
		{
			uiRowCount = uiNewRowCount;
		}

		virtual inline void setColumnCount( HB_SIZE uiNewColumnCount = 0 )
		{
			uiColumnCount = uiNewColumnCount;
		}

		inline PHB_ITEM getData() const
		{
			return aData;
		}

		inline PHB_ITEM getColumnNames() const
		{
			return aColumnNames;
		}

	private:
		// Métodos auxiliares
		virtual HB_SIZE findColumnIndex( const char* columnName ) const; // Busca el índice de una columna por nombre
};

//-----------------------------------------------------------------------------
#endif // _HVDBC_HPP
//-----------------------------------------------------------------------------

Espero vuestro apoyo 8)]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Presentamos HDBC – La Mejor Conexión a Bases de Datos para Harbour :: Reply by xmanuel]]> 2025-03-06T17:28:51-07:00 2025-03-06T17:28:51-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45492&p=278190#p278190
Marco Augusto wrote: Wed Mar 05, 2025 8:01 pm Saludos
puedo usar MYSQL via ADO
HDBC con acceso nativo a MySQL/MaríaDb será mucho más rápida que "MYSQL vía ADO" por lo que no renta usar ADO.

Saludos]]>
Marco Augusto wrote: Wed Mar 05, 2025 8:01 pm Saludos
puedo usar MYSQL via ADO
HDBC con acceso nativo a MySQL/MaríaDb será mucho más rápida que "MYSQL vía ADO" por lo que no renta usar ADO.

Saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Presentamos HDBC – La Mejor Conexión a Bases de Datos para Harbour :: Reply by xmanuel]]> 2025-03-06T17:42:40-07:00 2025-03-06T17:42:40-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45492&p=278192#p278192

Code: Select all | Expand

///////////////////////////////////////////////////////////////////////////////
// Proyecto: hdbc
// Fichero: test008.prg
// Autor: Manu Exposito
// Fecha: 
// Descripcion: Traspasa test.dbf de los ejemplos de Harbour a SQL.
//              Si no existe la bases de datos la crea.
//              Si no existe la tabla test la crea.
//              Uso de bindParam
///////////////////////////////////////////////////////////////////////////////

//------------------------------------------------------------------------------

#include "hdbc.ch" 
#include "postgresql_connect.ch" 

#define ID_CARGA	500

//------------------------------------------------------------------------------
// Programa principal

procedure main()

    local oDb, e
    local cCreaTable 

    TEXT INTO cCreaTable
    CREATE TABLE IF NOT EXISTS test
    (
        id          SERIAL,
        first       VARCHAR( 20 ),
        last        VARCHAR( 20 ),
        street      VARCHAR( 30 ),
        city        VARCHAR( 30 ),
        state       VARCHAR( 2 ),
        zip         VARCHAR( 10 ),
        hiredate    DATE,
        married     BOOLEAN,
        age         INTEGER,
        salary      DECIMAL( 9, 2 ),
        notes       VARCHAR( 70 ),
        PRIMARY KEY ( id )
    )

    ENDTEXT
 
    cls

    msg( "Traspaso de datos..." )

    try
        oDb := THDbc():new( _DRIVER_ )

        oDb:connect( _CONN_STRING_ )        
        oDb:exec( cCreaTable )
        
        traspasa( oDb )

    catch  e
        eval( errorBlock(), e )
    finally
        oDb:disconnect()
        msg( "Esto es todo!!!" )
    end	
return

//------------------------------------------------------------------------------
// Usa sentencias preparadas en el lado del servidor y transacciones.

static procedure traspasa( oDb )

    local n := 0, nSec
    local oInsert
    local first, last, street, city, state, zip, hiredate, married, age, salary, notes

    local cSentencia := "INSERT INTO test ( first, last, street, city, state, zip, "  + ;
        "hiredate, married, age, salary, notes ) " + ;
        "VALUES ( $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11 );"

    if file( "test.dbf" )
		
        use test new
		
        oInsert := oDb:prepareStatement( cSentencia ) // Crea el objeto y prepara la sentencia

        // Vincula las variables harbour con cada una de las "?" por su posicion
        oInsert:bindParam(  1, @first  )
        oInsert:bindParam(  2, @last  )
        oInsert:bindParam(  3, @street )
        oInsert:bindParam(  4, @city )
        oInsert:bindParam(  5, @state )
        oInsert:bindParam(  6, @zip )
        oInsert:bindParam(  7, @hiredate )
        oInsert:bindParam(  8, @married )
        oInsert:bindParam(  9, @age )
        oInsert:bindParam( 10, @salary )
        oInsert:bindParam( 11, @notes )

        nSec := hb_milliSeconds()
	
        oDb:beginTrans()
		
        while n < ID_CARGA	
	
            while test->( !eof() )
                first    := test->first
                last     := test->last
                street   := test->street
                city     := test->city
                state    := test->state
                zip      := test->zip
                hiredate := test->hiredate 
                married  := test->married
                age      := test->age
                salary   := test->salary
                notes    := test->notes
		
                oInsert:execute()
                
                ++n

                test->( dbskip( 1 ) )
            end
	
            test->( DbGoTop() )
        end

        oDb:commit()		

        nSec := hb_milliSeconds() - nSec 

        msg( "Se han pasado " + Hb_NToS( n ) + " registros en " + Hb_NToS( nSec ) + " milisegundos", "Uso de bindParam" )
    else
        msg( "Fichero test.dbf no existe" )
    endif

return

//------------------------------------------------------------------------------

]]>

Code: Select all | Expand

///////////////////////////////////////////////////////////////////////////////
// Proyecto: hdbc
// Fichero: test008.prg
// Autor: Manu Exposito
// Fecha: 
// Descripcion: Traspasa test.dbf de los ejemplos de Harbour a SQL.
//              Si no existe la bases de datos la crea.
//              Si no existe la tabla test la crea.
//              Uso de bindParam
///////////////////////////////////////////////////////////////////////////////

//------------------------------------------------------------------------------

#include "hdbc.ch" 
#include "postgresql_connect.ch" 

#define ID_CARGA	500

//------------------------------------------------------------------------------
// Programa principal

procedure main()

    local oDb, e
    local cCreaTable 

    TEXT INTO cCreaTable
    CREATE TABLE IF NOT EXISTS test
    (
        id          SERIAL,
        first       VARCHAR( 20 ),
        last        VARCHAR( 20 ),
        street      VARCHAR( 30 ),
        city        VARCHAR( 30 ),
        state       VARCHAR( 2 ),
        zip         VARCHAR( 10 ),
        hiredate    DATE,
        married     BOOLEAN,
        age         INTEGER,
        salary      DECIMAL( 9, 2 ),
        notes       VARCHAR( 70 ),
        PRIMARY KEY ( id )
    )

    ENDTEXT
 
    cls

    msg( "Traspaso de datos..." )

    try
        oDb := THDbc():new( _DRIVER_ )

        oDb:connect( _CONN_STRING_ )        
        oDb:exec( cCreaTable )
        
        traspasa( oDb )

    catch  e
        eval( errorBlock(), e )
    finally
        oDb:disconnect()
        msg( "Esto es todo!!!" )
    end	
return

//------------------------------------------------------------------------------
// Usa sentencias preparadas en el lado del servidor y transacciones.

static procedure traspasa( oDb )

    local n := 0, nSec
    local oInsert
    local first, last, street, city, state, zip, hiredate, married, age, salary, notes

    local cSentencia := "INSERT INTO test ( first, last, street, city, state, zip, "  + ;
        "hiredate, married, age, salary, notes ) " + ;
        "VALUES ( $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11 );"

    if file( "test.dbf" )
		
        use test new
		
        oInsert := oDb:prepareStatement( cSentencia ) // Crea el objeto y prepara la sentencia

        // Vincula las variables harbour con cada una de las "?" por su posicion
        oInsert:bindParam(  1, @first  )
        oInsert:bindParam(  2, @last  )
        oInsert:bindParam(  3, @street )
        oInsert:bindParam(  4, @city )
        oInsert:bindParam(  5, @state )
        oInsert:bindParam(  6, @zip )
        oInsert:bindParam(  7, @hiredate )
        oInsert:bindParam(  8, @married )
        oInsert:bindParam(  9, @age )
        oInsert:bindParam( 10, @salary )
        oInsert:bindParam( 11, @notes )

        nSec := hb_milliSeconds()
	
        oDb:beginTrans()
		
        while n < ID_CARGA	
	
            while test->( !eof() )
                first    := test->first
                last     := test->last
                street   := test->street
                city     := test->city
                state    := test->state
                zip      := test->zip
                hiredate := test->hiredate 
                married  := test->married
                age      := test->age
                salary   := test->salary
                notes    := test->notes
		
                oInsert:execute()
                
                ++n

                test->( dbskip( 1 ) )
            end
	
            test->( DbGoTop() )
        end

        oDb:commit()		

        nSec := hb_milliSeconds() - nSec 

        msg( "Se han pasado " + Hb_NToS( n ) + " registros en " + Hb_NToS( nSec ) + " milisegundos", "Uso de bindParam" )
    else
        msg( "Fichero test.dbf no existe" )
    endif

return

//------------------------------------------------------------------------------

]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Presentamos HDBC – La Mejor Conexión a Bases de Datos para Harbour :: Reply by xmanuel]]> 2025-03-06T17:46:34-07:00 2025-03-06T17:46:34-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45492&p=278193#p278193 - Las transacciones que garantizan que el proceso ha finalizado correctamente.
- Las sentencias preparadas en el lado del servidor que evitan enviar las sentencias como tramas en la red y evitan inyección de código lo que además de velocidad proporcionan seguridad total.]]>
- Las transacciones que garantizan que el proceso ha finalizado correctamente.
- Las sentencias preparadas en el lado del servidor que evitan enviar las sentencias como tramas en la red y evitan inyección de código lo que además de velocidad proporcionan seguridad total.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Error con funciones internas :: Author Compuin]]> 2025-03-06T22:06:33-07:00 2025-03-06T22:06:33-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45497&p=278194#p278194
Como puedo solucionar este error?

Code: Select all | Expand

hbct.lib(files.obj) : error LNK2005: _HB_FUN_FILESIZE already defined in
Tengo esta funcion en un archivo propio pero aparentemente esta en una lib de Harbour. Usando hbmk2 .hbp como puedo utilizar forzar que me permita utilizar mi funcion?

Gracias]]>

Como puedo solucionar este error?

Code: Select all | Expand

hbct.lib(files.obj) : error LNK2005: _HB_FUN_FILESIZE already defined in
Tengo esta funcion en un archivo propio pero aparentemente esta en una lib de Harbour. Usando hbmk2 .hbp como puedo utilizar forzar que me permita utilizar mi funcion?

Gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Error con funciones internas :: Reply by Antonio Linares]]> 2025-03-06T22:59:16-07:00 2025-03-06T22:59:16-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45497&p=278195#p278195 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Error con funciones internas :: Reply by Compuin]]> 2025-03-07T05:54:10-07:00 2025-03-07T05:54:10-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45497&p=278205#p278205
Antonio Linares wrote: Fri Mar 07, 2025 5:59 am -ldflag=/force:multiple
Muchas gracias maestro, lo resolvio!]]>
Antonio Linares wrote: Fri Mar 07, 2025 5:59 am -ldflag=/force:multiple
Muchas gracias maestro, lo resolvio!]]>
<![CDATA[FiveWin para Harbour/xHarbour :: FW 2409, Message not found: TDIALOG:OGRPOPUP ( FIXED ) :: Author elmoiquique]]> 2025-03-03T11:33:18-07:00 2025-03-03T11:33:18-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278116#p278116
Application
===========
Path and name: C:\sistema\QAsve\QASVE.exe (32 bits)
Size: 7,214,592 bytes
Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20241008)
FiveWin version: FWH 24.07
C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
Windows 10 64 Bits, version: 6.2, Build 9200

Time from start: 0 hours 0 mins 27 secs
Error occurred at: 03/03/2025, 15:21:28
Error description: Warning BASE/1004 Message not found: TDIALOG:OGRPOPUP

Stack Calls
===========
Called from: source\rtl\tobject.prg => TDIALOG:ERROR( 0 )
Called from: source\rtl\tobject.prg => TDIALOG:MSGNOTFOUND( 0 )
Called from: source\rtl\tobject.prg => TDIALOG:OGRPOPUP( 0 )
Called from: .\source\classes\trbtn.prg => TRBTN:LBUTTONUP( 865 )
Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1867 )
Called from: .\source\classes\trbtn.prg => TRBTN:HANDLEEVENT( 1576 )
Called from: .\source\classes\window.prg => _FWH( 257 )
Called from: => DIALOGBOX( 0 )
Called from: .\source\classes\dialog.prg => TDIALOG:ACTIVATE( 309 )
Called from: .\menu.PRG => SVEMENU( 0 )
Called from: .\menu.PRG => (b)MAIN( 0 )
Called from: .\source\classes\btnbmp.prg => TBTNBMP:CLICK( 816 )
Called from: .\source\classes\btnbmp.prg => TBTNBMP:LBUTTONUP( 1103 )
Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1867 )
Called from: .\source\classes\btnbmp.prg => TBTNBMP:HANDLEEVENT( 2143 )
Called from: .\source\classes\window.prg => _FWH( 1003 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\window.prg => TWINDOW:ACTIVATE( 1117 )
Called from: .\tmetro.PRG => TMETRO:ACTIVATE( 0 )
Called from: .\menu.PRG => MAIN( 0 )

System
======
CPU type: AMD E1-1500 APU with Radeon(tm) HD Graphics 1477 Mhz
Hardware memory: 3683 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Windows total applications running: 1
1 ,

Variables in use
================
Procedure Type Value
==========================
TDIALOG:ERROR
Param 1: C "Message not found"
Param 2: C "TDIALOG"
Param 3: C "OGRPOPUP"
Param 4: N 1004
Local 1: U
Local 2: O Class: TDIALOG
Local 3: N 13
TDIALOG:MSGNOTFOUND
Param 1: C "OGRPOPUP"
Local 1: O Class: TDIALOG
TDIALOG:OGRPOPUP
TRBTN:LBUTTONUP
Param 1: N 59
Param 2: N 41
Param 3: O Class: TRBTN
Local 1: O Class: TDIALOG
Local 2: L .T.
Local 3: L .F.
TCONTROL:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 3866665
Local 1: O Class: TRBTN
Local 2: U
TRBTN:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 3866665
Local 1: O Class: TRBTN
_FWH
Param 1: N 3866665
Param 2: N 514
Param 3: N 0
Param 4: N 3866665
Param 5: N 19
Local 1: O Class: TRBTN
DIALOGBOX
Param 1: N 16711680
Param 2: C "SVEMENU03"
Param 3: N 330954
Param 4: O Class: TDIALOG
TDIALOG:ACTIVATE
Param 1: U
Param 2: U
Param 3: U
Param 4: L .T.
Param 5: U
Param 6: L .T.
Param 7: U
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Param 12: L .F.
Param 13: O Class: TDIALOG
Param 14: U
Local 1: O Class: TDIALOG
Local 2: N 330954
Local 3: U
Local 4: O Class: TDIALOG
SVEMENU
Param 1: N 3
Local 1: O Class: TDIALOG
Local 2: O Class: TIMAGE
Local 3: O Class: TRBTN
Local 4: U
Local 5: U
Local 6: C "\QAsve\config\bmp2\svemen03.jpg"
Local 7: C "SVEMENU03"
Local 8: C ""
Local 9: C ""
Local 10: C " "
Local 11: L .T.
Local 12: N 15
(b)MAIN
Param 1: O Class: TBTNBMP
TBTNBMP:CLICK
Local 1: O Class: TBTNBMP
TBTNBMP:LBUTTONUP
Param 1: N 106
Param 2: N 93
Param 3: O Class: TBTNBMP
Local 1: U
Local 2: L .T.
Local 3: N 0
TCONTROL:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 6946909
Local 1: O Class: TBTNBMP
Local 2: U
TBTNBMP:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 6946909
Local 1: O Class: TBTNBMP
_FWH
Param 1: N 6946909
Param 2: N 514
Param 3: N 0
Param 4: N 6946909
Param 5: N 4
Local 1: O Class: TBTNBMP
WINRUN
Param 1: N 330954
TWINDOW:ACTIVATE
Param 1: C "MAXIMIZED"
Param 2: U
Param 3: U
Param 4: U
Param 5: U
Param 6: B {|| ... }
Param 7: U
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Param 12: U
Param 13: U
Param 14: U
Param 15: U
Param 16: U
Param 17: U
Param 18: U
Param 19: U
Param 20: L .F.
Local 1: O Class: TWINDOW
Local 2: U
Local 3: U
TMETRO:ACTIVATE
Local 1: O Class: TMETRO
MAIN
Local 1: O Class: TMETRO
Local 2: C "IMPORT-EXPORT RAUL MENESES BARRIOS EIRL"

Linked RDDs
===========
DBF
DBFFPT
DBFBLOB
DBFNTX
DBFCDX

DataBases in use
================

Classes in use:
===============
1 ERROR
2 HASHENTRY
3 HBCLASS
4 HBOBJECT
5 TWINDOW
6 TCONTROL
7 TGET
8 TDATABASE
9 TDIALOG
10 TBRUSH
11 TCOMBOBOX
12 GET
13 TCLIPGET
14 TBUTTON
15 TBITMAP
16 TFONT
17 TRECT
18 TINI
19 TMETRO
20 TREG32
21 TBTNBMP
22 TRBTN
23 TMENU
24 TMENUITEM
25 TIMAGE
26 TCHECKBOX
27 TRADMENU
28 TRADIO
29 TMETER
30 TSTRUCT

Memory Analysis
===============
943 Static variables

Dynamic memory consume:
Actual Value: 0 bytes
Highest Value: 0 bytes
]]>
Application
===========
Path and name: C:\sistema\QAsve\QASVE.exe (32 bits)
Size: 7,214,592 bytes
Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20241008)
FiveWin version: FWH 24.07
C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
Windows 10 64 Bits, version: 6.2, Build 9200

Time from start: 0 hours 0 mins 27 secs
Error occurred at: 03/03/2025, 15:21:28
Error description: Warning BASE/1004 Message not found: TDIALOG:OGRPOPUP

Stack Calls
===========
Called from: source\rtl\tobject.prg => TDIALOG:ERROR( 0 )
Called from: source\rtl\tobject.prg => TDIALOG:MSGNOTFOUND( 0 )
Called from: source\rtl\tobject.prg => TDIALOG:OGRPOPUP( 0 )
Called from: .\source\classes\trbtn.prg => TRBTN:LBUTTONUP( 865 )
Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1867 )
Called from: .\source\classes\trbtn.prg => TRBTN:HANDLEEVENT( 1576 )
Called from: .\source\classes\window.prg => _FWH( 257 )
Called from: => DIALOGBOX( 0 )
Called from: .\source\classes\dialog.prg => TDIALOG:ACTIVATE( 309 )
Called from: .\menu.PRG => SVEMENU( 0 )
Called from: .\menu.PRG => (b)MAIN( 0 )
Called from: .\source\classes\btnbmp.prg => TBTNBMP:CLICK( 816 )
Called from: .\source\classes\btnbmp.prg => TBTNBMP:LBUTTONUP( 1103 )
Called from: .\source\classes\control.prg => TCONTROL:HANDLEEVENT( 1867 )
Called from: .\source\classes\btnbmp.prg => TBTNBMP:HANDLEEVENT( 2143 )
Called from: .\source\classes\window.prg => _FWH( 1003 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\window.prg => TWINDOW:ACTIVATE( 1117 )
Called from: .\tmetro.PRG => TMETRO:ACTIVATE( 0 )
Called from: .\menu.PRG => MAIN( 0 )

System
======
CPU type: AMD E1-1500 APU with Radeon(tm) HD Graphics 1477 Mhz
Hardware memory: 3683 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Windows total applications running: 1
1 ,

Variables in use
================
Procedure Type Value
==========================
TDIALOG:ERROR
Param 1: C "Message not found"
Param 2: C "TDIALOG"
Param 3: C "OGRPOPUP"
Param 4: N 1004
Local 1: U
Local 2: O Class: TDIALOG
Local 3: N 13
TDIALOG:MSGNOTFOUND
Param 1: C "OGRPOPUP"
Local 1: O Class: TDIALOG
TDIALOG:OGRPOPUP
TRBTN:LBUTTONUP
Param 1: N 59
Param 2: N 41
Param 3: O Class: TRBTN
Local 1: O Class: TDIALOG
Local 2: L .T.
Local 3: L .F.
TCONTROL:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 3866665
Local 1: O Class: TRBTN
Local 2: U
TRBTN:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 3866665
Local 1: O Class: TRBTN
_FWH
Param 1: N 3866665
Param 2: N 514
Param 3: N 0
Param 4: N 3866665
Param 5: N 19
Local 1: O Class: TRBTN
DIALOGBOX
Param 1: N 16711680
Param 2: C "SVEMENU03"
Param 3: N 330954
Param 4: O Class: TDIALOG
TDIALOG:ACTIVATE
Param 1: U
Param 2: U
Param 3: U
Param 4: L .T.
Param 5: U
Param 6: L .T.
Param 7: U
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Param 12: L .F.
Param 13: O Class: TDIALOG
Param 14: U
Local 1: O Class: TDIALOG
Local 2: N 330954
Local 3: U
Local 4: O Class: TDIALOG
SVEMENU
Param 1: N 3
Local 1: O Class: TDIALOG
Local 2: O Class: TIMAGE
Local 3: O Class: TRBTN
Local 4: U
Local 5: U
Local 6: C "\QAsve\config\bmp2\svemen03.jpg"
Local 7: C "SVEMENU03"
Local 8: C ""
Local 9: C ""
Local 10: C " "
Local 11: L .T.
Local 12: N 15
(b)MAIN
Param 1: O Class: TBTNBMP
TBTNBMP:CLICK
Local 1: O Class: TBTNBMP
TBTNBMP:LBUTTONUP
Param 1: N 106
Param 2: N 93
Param 3: O Class: TBTNBMP
Local 1: U
Local 2: L .T.
Local 3: N 0
TCONTROL:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 6946909
Local 1: O Class: TBTNBMP
Local 2: U
TBTNBMP:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 6946909
Local 1: O Class: TBTNBMP
_FWH
Param 1: N 6946909
Param 2: N 514
Param 3: N 0
Param 4: N 6946909
Param 5: N 4
Local 1: O Class: TBTNBMP
WINRUN
Param 1: N 330954
TWINDOW:ACTIVATE
Param 1: C "MAXIMIZED"
Param 2: U
Param 3: U
Param 4: U
Param 5: U
Param 6: B {|| ... }
Param 7: U
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Param 12: U
Param 13: U
Param 14: U
Param 15: U
Param 16: U
Param 17: U
Param 18: U
Param 19: U
Param 20: L .F.
Local 1: O Class: TWINDOW
Local 2: U
Local 3: U
TMETRO:ACTIVATE
Local 1: O Class: TMETRO
MAIN
Local 1: O Class: TMETRO
Local 2: C "IMPORT-EXPORT RAUL MENESES BARRIOS EIRL"

Linked RDDs
===========
DBF
DBFFPT
DBFBLOB
DBFNTX
DBFCDX

DataBases in use
================

Classes in use:
===============
1 ERROR
2 HASHENTRY
3 HBCLASS
4 HBOBJECT
5 TWINDOW
6 TCONTROL
7 TGET
8 TDATABASE
9 TDIALOG
10 TBRUSH
11 TCOMBOBOX
12 GET
13 TCLIPGET
14 TBUTTON
15 TBITMAP
16 TFONT
17 TRECT
18 TINI
19 TMETRO
20 TREG32
21 TBTNBMP
22 TRBTN
23 TMENU
24 TMENUITEM
25 TIMAGE
26 TCHECKBOX
27 TRADMENU
28 TRADIO
29 TMETER
30 TSTRUCT

Memory Analysis
===============
943 Static variables

Dynamic memory consume:
Actual Value: 0 bytes
Highest Value: 0 bytes
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by Antonio Linares]]> 2025-03-03T12:32:42-07:00 2025-03-03T12:32:42-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278118#p278118
De ser asi, prueba a hacer esto después de DEFINE DIALOG oDlg:

__objAddData( oDlg, "OGRPOPUP" )]]>

De ser asi, prueba a hacer esto después de DEFINE DIALOG oDlg:

__objAddData( oDlg, "OGRPOPUP" )]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by elmoiquique]]> 2025-03-07T12:37:02-07:00 2025-03-07T12:37:02-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278223#p278223
El problema persiste, pero he logrado identificarlo pero no solucionarlo te explico donde esta el problema, en el RBBTN ,al usar el TYPE SPLITPOPUP, da el error de MESSAGE NOT FOUND: TDIALOG:OGROUP, el solo desplegarlo y salir de el. Al usar untipo distinto no emite ningun error, por lo que deduzco que el problema esta ahi, en la version FW11,07, lo compilo y no da ningun error,
REDEFINE RBBTN [ <oBtn> ] ;
[ ID <nID> ];
[ PROMPT <cCaption> ];
[ BITMAP <cBitmap> ] ;
[ ACTION <uAction> ] ;
[ <of: OF, DIALOG, WINDOW> <oWnd> ] ;
[ WHEN <WhenFunc> ] ;
[ <lBorder: BORDER> ] ;
[ <lRound: ROUND> [ <rs: RSIZE, ROUNDSIZE><nRound> ] ] ;
[ <lAdjust: ADJUST> ] ;
[ <layout: TOP, LEFT, BOTTOM, RIGHT, MOSTLEFT, MOSTRIGHT, CENTER> ] ;
[ <type: NORMAL, POPUP, SPLITPOPUP, SAYBUTTON> ] ;
[ <lGrouping: GROUPBUTTON> [<lFirstElm: FIRST>][ <lEndElm: END> ] ];
[ MENU <oPopup> ];
[ MESSAGE <cMsg> ] ;
[ TOOLTIP <cToolTip> ];
[ FONT <oFont> ];
[ <lTrans: TRANSPARENT> ];
[ GRADIANT <aGradiant> ];
[ LINECOLORS <nClrBoxIn>, <nClrBoxOut> ]
]]>

El problema persiste, pero he logrado identificarlo pero no solucionarlo te explico donde esta el problema, en el RBBTN ,al usar el TYPE SPLITPOPUP, da el error de MESSAGE NOT FOUND: TDIALOG:OGROUP, el solo desplegarlo y salir de el. Al usar untipo distinto no emite ningun error, por lo que deduzco que el problema esta ahi, en la version FW11,07, lo compilo y no da ningun error,
REDEFINE RBBTN [ <oBtn> ] ;
[ ID <nID> ];
[ PROMPT <cCaption> ];
[ BITMAP <cBitmap> ] ;
[ ACTION <uAction> ] ;
[ <of: OF, DIALOG, WINDOW> <oWnd> ] ;
[ WHEN <WhenFunc> ] ;
[ <lBorder: BORDER> ] ;
[ <lRound: ROUND> [ <rs: RSIZE, ROUNDSIZE><nRound> ] ] ;
[ <lAdjust: ADJUST> ] ;
[ <layout: TOP, LEFT, BOTTOM, RIGHT, MOSTLEFT, MOSTRIGHT, CENTER> ] ;
[ <type: NORMAL, POPUP, SPLITPOPUP, SAYBUTTON> ] ;
[ <lGrouping: GROUPBUTTON> [<lFirstElm: FIRST>][ <lEndElm: END> ] ];
[ MENU <oPopup> ];
[ MESSAGE <cMsg> ] ;
[ TOOLTIP <cToolTip> ];
[ FONT <oFont> ];
[ <lTrans: TRANSPARENT> ];
[ GRADIANT <aGradiant> ];
[ LINECOLORS <nClrBoxIn>, <nClrBoxOut> ]
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by Antonio Linares]]> 2025-03-07T14:41:15-07:00 2025-03-07T14:41:15-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278224#p278224
gracias]]>

gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by elmoiquique]]> 2025-03-08T11:23:36-07:00 2025-03-08T11:23:36-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278240#p278240
Este es Testrbtn.Prg, lo unico que cambie fue el POPUP por SPLITPOPUP, y ahi puedes reproducir el error

FW24.09 Borland 770

quedo atento

Code: Select all | Expand

#include "FiveWin.ch"
#include "Ribbon.ch"

function Main()

   local oDlg, oPopup, oBtn

   DEFINE DIALOG oDlg RESOURCE "Test"

   REDEFINE RBBTN oBtn ID 100 OF oDlg SPLITPOPUP ;
      MENU BuildPopup() ROUND ACTION MsgInfo( "click" ) ;
      PROMPT "Class TRBtn" BITMAP "..\bitmaps\16x16\fivetech.bmp" LEFT

   ACTIVATE DIALOG oDlg CENTERED

return nil

function BuildPopup()

   local oPopup
   
   MENU oPopup POPUP 2007
      MENUITEM "One" ACTION MsgInfo( "One" ) FILE "..\bitmaps\16x16\fivetech.bmp"
      MENUITEM "Two" ACTION MsgInfo( "Two" ) FILE "..\bitmaps\16x16\fivetech.bmp"
      SEPARATOR
      MENUITEM "Three" ACTION MsgInfo( "Three" ) FILE "..\bitmaps\16x16\fivetech.bmp"
   ENDMENU
   
return oPopup      

]]>

Este es Testrbtn.Prg, lo unico que cambie fue el POPUP por SPLITPOPUP, y ahi puedes reproducir el error

FW24.09 Borland 770

quedo atento

Code: Select all | Expand

#include "FiveWin.ch"
#include "Ribbon.ch"

function Main()

   local oDlg, oPopup, oBtn

   DEFINE DIALOG oDlg RESOURCE "Test"

   REDEFINE RBBTN oBtn ID 100 OF oDlg SPLITPOPUP ;
      MENU BuildPopup() ROUND ACTION MsgInfo( "click" ) ;
      PROMPT "Class TRBtn" BITMAP "..\bitmaps\16x16\fivetech.bmp" LEFT

   ACTIVATE DIALOG oDlg CENTERED

return nil

function BuildPopup()

   local oPopup
   
   MENU oPopup POPUP 2007
      MENUITEM "One" ACTION MsgInfo( "One" ) FILE "..\bitmaps\16x16\fivetech.bmp"
      MENUITEM "Two" ACTION MsgInfo( "Two" ) FILE "..\bitmaps\16x16\fivetech.bmp"
      SEPARATOR
      MENUITEM "Three" ACTION MsgInfo( "Three" ) FILE "..\bitmaps\16x16\fivetech.bmp"
   ENDMENU
   
return oPopup      

]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by cnavarro]]> 2025-03-08T14:41:36-07:00 2025-03-08T14:41:36-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278241#p278241 <![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by elmoiquique]]> 2025-03-08T14:46:16-07:00 2025-03-08T14:46:16-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278242#p278242 <![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by cnavarro]]> 2025-03-08T14:47:21-07:00 2025-03-08T14:47:21-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278243#p278243 <![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by elmoiquique]]> 2025-03-08T14:48:52-07:00 2025-03-08T14:48:52-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278244#p278244 <![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by cnavarro]]> 2025-03-08T14:51:29-07:00 2025-03-08T14:51:29-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278245#p278245 Acabo de probar el ejemplo y funciona correctamente con la version actual, veré de probarlo con la version que indicas]]> Acabo de probar el ejemplo y funciona correctamente con la version actual, veré de probarlo con la version que indicas]]> <![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by elmoiquique]]> 2025-03-08T14:54:45-07:00 2025-03-08T14:54:45-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278246#p278246 <![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by cnavarro]]> 2025-03-08T15:06:21-07:00 2025-03-08T15:06:21-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278247#p278247

Code: Select all | Expand

METHOD LButtonUp( nRow, nCol )  CLASS TRBtn

.../...

                        // Modified to handle Codeblock as oPopup 2014-10-10
                        if oWnd:oPopup == nil
                           oWnd:oPopup = XEval( ::oPopup, Self )
                           oWnd:oPopup:Activate( ::nTop + ::nHeight(), ::nLeft, oWnd, .F. )
                       
                           // ESTA ES LA LINEA QUE HAS DE MODIFICAR
                           if oWnd:ClassName() == "TRBGROUP" .and. oWnd:oGrPopup != nil
                        
                              Eval( oWnd:oGrPopup:bLostFocus )
                           endif   
                        endif

De todas formas miraré más profundamente el problema]]>

Code: Select all | Expand

METHOD LButtonUp( nRow, nCol )  CLASS TRBtn

.../...

                        // Modified to handle Codeblock as oPopup 2014-10-10
                        if oWnd:oPopup == nil
                           oWnd:oPopup = XEval( ::oPopup, Self )
                           oWnd:oPopup:Activate( ::nTop + ::nHeight(), ::nLeft, oWnd, .F. )
                       
                           // ESTA ES LA LINEA QUE HAS DE MODIFICAR
                           if oWnd:ClassName() == "TRBGROUP" .and. oWnd:oGrPopup != nil
                        
                              Eval( oWnd:oGrPopup:bLostFocus )
                           endif   
                        endif

De todas formas miraré más profundamente el problema]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by elmoiquique]]> 2025-03-08T15:29:06-07:00 2025-03-08T15:29:06-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278248#p278248 <![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by cnavarro]]> 2025-03-08T15:31:17-07:00 2025-03-08T15:31:17-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278249#p278249 <![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP :: Reply by elmoiquique]]> 2025-03-08T15:44:07-07:00 2025-03-08T15:44:07-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278250#p278250
Gracias por la ayuda y tiempo

Saludos]]>

Gracias por la ayuda y tiempo

Saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, Message not found: TDIALOG:OGRPOPUP ( FIXED ) :: Reply by Antonio Linares]]> 2025-03-09T00:42:09-07:00 2025-03-09T00:42:09-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45483&p=278251#p278251
Gracias a ambos! :)]]>

Gracias a ambos! :)]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Curso virtual implementación IA en nuestras aplicaciones :: Reply by Compuin]]> 2025-02-27T07:28:00-07:00 2025-02-27T07:28:00-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45373&p=278010#p278010
Para los que pagamos el webinar con la ultima versión de FW 32 y 64, estas ya fueron enviadas o se descargan de algun lugar?

Gracias]]>

Para los que pagamos el webinar con la ultima versión de FW 32 y 64, estas ya fueron enviadas o se descargan de algun lugar?

Gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Curso virtual implementación IA en nuestras aplicaciones :: Reply by Antonio Linares]]> 2025-02-27T10:13:20-07:00 2025-02-27T10:13:20-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45373&p=278013#p278013 https://youtu.be/JKKJ8qOJW24?si=H8qSC-KdMoOM5tvt]]> https://youtu.be/JKKJ8qOJW24?si=H8qSC-KdMoOM5tvt]]> <![CDATA[FiveWin para Harbour/xHarbour :: Re: Curso virtual implementación IA en nuestras aplicaciones :: Reply by Verhoven]]> 2025-03-09T13:51:14-06:00 2025-03-09T13:51:14-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45373&p=278252#p278252 Como todo el domingo se lo ha pasado lloviendo he tenido tiempo de ponerme a probar con GROK.

Necesitaba construir unas estructuras en C para la lectura de unos chips de Texas Instruments a los que se conectan unos sensores industriales de los del tipo de corriente entre 4mA a 20mA. Aunque no me voy a enrollar con la parte de electrónica.

El caso es, que tenía la idea clara de lo que quería y traté de hacerlo todo a mano aunque como quiera que lo de los punteros y no digamos ya lo de los punteros de los punteros y estructuras anidadas es bastante complicado, después de varias horas, me desesperé y probé, siguiendo las recomendaciones del Master Antonio con GROK.

NO DOY CRÉDITO. ME HA PARECIDO LITERALMENTE CIENCIA FICCIÓN.

Se ha enterado de lo que le preguntaba a la primera, lo ha ido perfeccionando según se lo iba solicitando, y aunque es verdad que algunas veces se quedaba colgado y había que volver a empezar, le metía el código que había ido elaborando, parte mía y parte de Grok y una vez lo analizaba sabía exactamente para lo que lo quería, y podíamos continuar.

No tengo palabras para describir la experiencia, es algo inefable.

Lo que si es cierto, es que uno tiene que saber por donde se está moviendo y las cosas, al menos, te tienen que sonar. No se puede dejar todo en manos de Grok y darlo por terminado, pero la ayuda ha sido muy muy grande y muy técnica. El código te lo devuelve con explicaciones y ejemplos, en fin...tremendo.

Si esto es ahora, que acaba de empezar, no se a lo que va a llegar, para lo bueno y para lo malo. Un poco de miedito también da. Aunque entran auténticas ganas de pillarse uno de esos equipos de nvidia que recomendó Antonio y ponerse a entrenarlo.

Los padres de la Física Nuclear, que sirvió luego de base a otros para la fabricación bomba atómica, llegaron a la conclusión de que lo único que garantizaba la seguridad de que nadie empezaría a usarla era que todos la tuvieran. Me pregunto si estarían también estarían de acuerdo en que el descubrimiento matemático que subyace a esta tecnología del conocimiento deberá también estar en manos de todos, con no pocos riesgos, o habrá unas diferencias entre unos y otros que pueden también ser preocupantes. Tal vez por ello, los padres de la IA digan que hay que parar un poco, aunque todos sabemos que no va a parar nadie (hay muchos dólares y control del poder en juego). Mientras las máquinas no se conecten a un relé y además tengan la decisión de activarlo...

En cualquier caso, una experiencia que ha sido extraordinaria, gracias a la información que Antonio nos ha proporcionado.

Muchas Gracias Antonio.]]>
Como todo el domingo se lo ha pasado lloviendo he tenido tiempo de ponerme a probar con GROK.

Necesitaba construir unas estructuras en C para la lectura de unos chips de Texas Instruments a los que se conectan unos sensores industriales de los del tipo de corriente entre 4mA a 20mA. Aunque no me voy a enrollar con la parte de electrónica.

El caso es, que tenía la idea clara de lo que quería y traté de hacerlo todo a mano aunque como quiera que lo de los punteros y no digamos ya lo de los punteros de los punteros y estructuras anidadas es bastante complicado, después de varias horas, me desesperé y probé, siguiendo las recomendaciones del Master Antonio con GROK.

NO DOY CRÉDITO. ME HA PARECIDO LITERALMENTE CIENCIA FICCIÓN.

Se ha enterado de lo que le preguntaba a la primera, lo ha ido perfeccionando según se lo iba solicitando, y aunque es verdad que algunas veces se quedaba colgado y había que volver a empezar, le metía el código que había ido elaborando, parte mía y parte de Grok y una vez lo analizaba sabía exactamente para lo que lo quería, y podíamos continuar.

No tengo palabras para describir la experiencia, es algo inefable.

Lo que si es cierto, es que uno tiene que saber por donde se está moviendo y las cosas, al menos, te tienen que sonar. No se puede dejar todo en manos de Grok y darlo por terminado, pero la ayuda ha sido muy muy grande y muy técnica. El código te lo devuelve con explicaciones y ejemplos, en fin...tremendo.

Si esto es ahora, que acaba de empezar, no se a lo que va a llegar, para lo bueno y para lo malo. Un poco de miedito también da. Aunque entran auténticas ganas de pillarse uno de esos equipos de nvidia que recomendó Antonio y ponerse a entrenarlo.

Los padres de la Física Nuclear, que sirvió luego de base a otros para la fabricación bomba atómica, llegaron a la conclusión de que lo único que garantizaba la seguridad de que nadie empezaría a usarla era que todos la tuvieran. Me pregunto si estarían también estarían de acuerdo en que el descubrimiento matemático que subyace a esta tecnología del conocimiento deberá también estar en manos de todos, con no pocos riesgos, o habrá unas diferencias entre unos y otros que pueden también ser preocupantes. Tal vez por ello, los padres de la IA digan que hay que parar un poco, aunque todos sabemos que no va a parar nadie (hay muchos dólares y control del poder en juego). Mientras las máquinas no se conecten a un relé y además tengan la decisión de activarlo...

En cualquier caso, una experiencia que ha sido extraordinaria, gracias a la información que Antonio nos ha proporcionado.

Muchas Gracias Antonio.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Curso virtual implementación IA en nuestras aplicaciones :: Reply by Antonio Linares]]> 2025-03-09T15:22:52-06:00 2025-03-09T15:22:52-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45373&p=278253#p278253
https://manus.im/

Un agente IA que funciona realmente bien :!: :)]]>

https://manus.im/

Un agente IA que funciona realmente bien :!: :)]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Leer mails :: Author Enrrique Vertiz]]> 2025-03-07T18:20:25-07:00 2025-03-07T18:20:25-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45500&p=278230#p278230
He tratado con la ayuda de la IA de crear una funcion para leer correos, de una cuenta nuestra, pop3, gmail, en fin lo ideal desde cualquier cuenta, la idea es leer el asunto, contenido y descargar el archivo adjunto para automatizar un proceso ... pero el codigo que me dan da errores y lo que usan TSocket o Curl no es algo que maneje muy bien ... alguien tendra un ejemplo de como leer correos ?
Gracias]]>

He tratado con la ayuda de la IA de crear una funcion para leer correos, de una cuenta nuestra, pop3, gmail, en fin lo ideal desde cualquier cuenta, la idea es leer el asunto, contenido y descargar el archivo adjunto para automatizar un proceso ... pero el codigo que me dan da errores y lo que usan TSocket o Curl no es algo que maneje muy bien ... alguien tendra un ejemplo de como leer correos ?
Gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Leer mails :: Reply by Antonio Linares]]> 2025-03-08T00:23:48-07:00 2025-03-08T00:23:48-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45500&p=278231#p278231
En FWH 25.01 en la carpeta FWH\samples\gmail\ tienes un ejemplo completo testgmail.prg desarrollado por Lailton.

Si no tienes dicha carpeta, contacta conmigo por whatsapp y te la facilito.]]>

En FWH 25.01 en la carpeta FWH\samples\gmail\ tienes un ejemplo completo testgmail.prg desarrollado por Lailton.

Si no tienes dicha carpeta, contacta conmigo por whatsapp y te la facilito.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Leer mails :: Reply by Enrrique Vertiz]]> 2025-03-08T07:55:02-07:00 2025-03-08T07:55:02-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45500&p=278236#p278236 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Leer mails :: Reply by Enrrique Vertiz]]> 2025-03-09T17:51:00-06:00 2025-03-09T17:51:00-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45500&p=278254#p278254
Me sale error al compilar Testgmail, el mismo con xHarbour y Harbour, pregunte a la IA y me dice que revise el archivo prsht.h que es de Borland 77 ??, pero este mensaje solo sale con este prg, compile todos los samples y compilan casi todos y algunos dan error, pero no este, que podra ser ?? (abajo la line de error)

Error prsht.h 918 9: '#endif' before '#if'
* Linking errors *]]>

Me sale error al compilar Testgmail, el mismo con xHarbour y Harbour, pregunte a la IA y me dice que revise el archivo prsht.h que es de Borland 77 ??, pero este mensaje solo sale con este prg, compile todos los samples y compilan casi todos y algunos dan error, pero no este, que podra ser ?? (abajo la line de error)

Error prsht.h 918 9: '#endif' before '#if'
* Linking errors *]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Leer mails :: Reply by Antonio Linares]]> 2025-03-10T04:16:24-06:00 2025-03-10T04:16:24-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45500&p=278257#p278257
Modifica testgmail.rc así:

Code: Select all | Expand

#include <windows.h>

LANGUAGE LANG_ENGLISH,SUBLANG_ENGLISH_US

GMAIL DIALOGEX DISCARDABLE 6, 18, 346, 78
STYLE DS_SHELLFONT|WS_POPUP|DS_MODALFRAME|DS_3DLOOK|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "GMAIL oAUTH"
FONT 8, "Tahoma"
{
  CONTROL "Connect with Gmail", 4001, "Button", WS_TABSTOP, 103, 21, 140, 36
  CONTROL "", 4002, "Static", SS_BITMAP|SS_CENTERIMAGE|WS_BORDER, 8, 8, 60, 60
  CONTROL "This is a label:", 4003, "Static", WS_GROUP, 76, 8, 200, 8
  CONTROL "This is a label:", 4004, "Static", WS_GROUP, 76, 24, 200, 8
  CONTROL "Disconnect", 4005, "Button", WS_TABSTOP, 80, 52, 56, 14
  CONTROL "Send Mail", 4006, "Button", WS_TABSTOP, 280, 4, 58, 20
}
y copia libcurl.dll desde FWH\samples a esa carpeta]]>

Modifica testgmail.rc así:

Code: Select all | Expand

#include <windows.h>

LANGUAGE LANG_ENGLISH,SUBLANG_ENGLISH_US

GMAIL DIALOGEX DISCARDABLE 6, 18, 346, 78
STYLE DS_SHELLFONT|WS_POPUP|DS_MODALFRAME|DS_3DLOOK|WS_CAPTION|WS_SYSMENU|WS_VISIBLE
CAPTION "GMAIL oAUTH"
FONT 8, "Tahoma"
{
  CONTROL "Connect with Gmail", 4001, "Button", WS_TABSTOP, 103, 21, 140, 36
  CONTROL "", 4002, "Static", SS_BITMAP|SS_CENTERIMAGE|WS_BORDER, 8, 8, 60, 60
  CONTROL "This is a label:", 4003, "Static", WS_GROUP, 76, 8, 200, 8
  CONTROL "This is a label:", 4004, "Static", WS_GROUP, 76, 24, 200, 8
  CONTROL "Disconnect", 4005, "Button", WS_TABSTOP, 80, 52, 56, 14
  CONTROL "Send Mail", 4006, "Button", WS_TABSTOP, 280, 4, 58, 20
}
y copia libcurl.dll desde FWH\samples a esa carpeta]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Leer mails :: Reply by Antonio Linares]]> 2025-03-10T04:20:11-06:00 2025-03-10T04:20:11-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45500&p=278258#p278258
go.bat

Code: Select all | Expand

set path=c:\bcc77\bin
c:\harbour\bin\win\bcc\hbmk2 testgmail.hbp -comp=bcc
testgmail.hbp

Code: Select all | Expand

-gui

-Ic:\fwh\include

testgmail.prg
testgmail.rc

-Lc:\fwh\lib
-lFiveH
-lFiveHC

xhb.hbc
hbct.hbc
hbmzip.hbc
hbziparc.hbc
hbcurl.hbc
]]>

go.bat

Code: Select all | Expand

set path=c:\bcc77\bin
c:\harbour\bin\win\bcc\hbmk2 testgmail.hbp -comp=bcc
testgmail.hbp

Code: Select all | Expand

-gui

-Ic:\fwh\include

testgmail.prg
testgmail.rc

-Lc:\fwh\lib
-lFiveH
-lFiveHC

xhb.hbc
hbct.hbc
hbmzip.hbc
hbziparc.hbc
hbcurl.hbc
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Leer mails :: Reply by Enrrique Vertiz]]> 2025-03-10T06:55:12-06:00 2025-03-10T06:55:12-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45500&p=278260#p278260 <![CDATA[FiveWin para Harbour/xHarbour :: Exportar xBrowse a Excel en Segundo Plano :: Author JoseAlvarez]]> 2025-03-03T13:30:35-07:00 2025-03-03T13:30:35-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45485&p=278122#p278122
Mi app presenta este browse, que muestra la información más importante de mis usuarios.

Image

Quiero que una vez al día, en determinado momento, el sistema haga una exportación de ese Browse a una hoja de excel y la envíe a un correo.

Ya se hacer todo eso, lo que no encuentro es la manera en que la exportación se haga sin necesidad de abrir el excel. que todo ocurra de manera transparente para el usuario.

La forma actual en que hago la exportación, siempre abre el excel. Si no la hay, habrá una forma entonces de que el excel se cierre solo?

¿hay alguna manera?]]>

Mi app presenta este browse, que muestra la información más importante de mis usuarios.

Image

Quiero que una vez al día, en determinado momento, el sistema haga una exportación de ese Browse a una hoja de excel y la envíe a un correo.

Ya se hacer todo eso, lo que no encuentro es la manera en que la exportación se haga sin necesidad de abrir el excel. que todo ocurra de manera transparente para el usuario.

La forma actual en que hago la exportación, siempre abre el excel. Si no la hay, habrá una forma entonces de que el excel se cierre solo?

¿hay alguna manera?]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar xBrowse a Excel en Segundo Plano :: Reply by Antonio Linares]]> 2025-03-03T23:25:25-07:00 2025-03-03T23:25:25-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45485&p=278124#p278124
Rao nos anunció esta funcionalidad:
viewtopic.php?p=276640#p276640

Le acabo de enviar un mensaje preguntándole. Confiemos en que su salud esté mejor.]]>

Rao nos anunció esta funcionalidad:
viewtopic.php?p=276640#p276640

Le acabo de enviar un mensaje preguntándole. Confiemos en que su salud esté mejor.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar xBrowse a Excel en Segundo Plano :: Reply by Antonio Linares]]> 2025-03-04T01:36:27-07:00 2025-03-04T01:36:27-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45485&p=278125#p278125

samples\xlsx01.prg]]>


samples\xlsx01.prg]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar xBrowse a Excel en Segundo Plano :: Reply by JoseAlvarez]]> 2025-03-04T06:37:27-07:00 2025-03-04T06:37:27-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45485&p=278126#p278126
Como siempre el Sr. Rao, así como todos uds los expertos en FW, prestos a servir sin importar las condiciones ni esperar nada a cambio.

Personas asi, hacen que el mundo pueda seguir girando.
Dios los Bendiga.

Sigamos esperando que mr Rao se recupere por completo con el favor de Dios.

Probaré lo que me indican y estaré comentado.]]>

Como siempre el Sr. Rao, así como todos uds los expertos en FW, prestos a servir sin importar las condiciones ni esperar nada a cambio.

Personas asi, hacen que el mundo pueda seguir girando.
Dios los Bendiga.

Sigamos esperando que mr Rao se recupere por completo con el favor de Dios.

Probaré lo que me indican y estaré comentado.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar xBrowse a Excel en Segundo Plano :: Reply by JoseAlvarez]]> 2025-03-11T15:55:47-06:00 2025-03-11T15:55:47-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45485&p=278305#p278305
Antonio Linares wrote: Tue Mar 04, 2025 8:36 am Me contesta Rao que tienes un ejemplo funcionando en: :)

samples\xlsx01.prg
Estimado Master Antonio,

el archivo samples\xlsx01.prg se encuentra a partir de cual versión de fw? tengo la 19.06 y no aparece.]]>
Antonio Linares wrote: Tue Mar 04, 2025 8:36 am Me contesta Rao que tienes un ejemplo funcionando en: :)

samples\xlsx01.prg
Estimado Master Antonio,

el archivo samples\xlsx01.prg se encuentra a partir de cual versión de fw? tengo la 19.06 y no aparece.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar xBrowse a Excel en Segundo Plano :: Reply by cnavarro]]> 2025-03-11T16:05:31-06:00 2025-03-11T16:05:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45485&p=278306#p278306 <![CDATA[FiveWin para Harbour/xHarbour :: Perdida de control de varias funciones en un prg :: Author lubin]]> 2025-03-11T20:29:38-06:00 2025-03-11T20:29:38-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45517&p=278309#p278309
tengo un problema que aparece de vez en cuando:

En un fichero PRG con varias funciones definidas dentro como se muestra, lineas abajo.. resulta que algunas veces me ha sucedido que llamo a la función MIPROG02, se ejecuta correctamente hasta cuando llega a la "LineaC" .. se sigue de largo, no considera el RETURN y termina ejecutando la "raya1" el MIPROG03 obviamente con un mensaje de error que "raya1" no existe...

La única solución que encontré es a partir de esa funcion MIPROG03... y todas las otras funciones que siguen, las saco de ese PRG y la pongo en otro archivo PRG. saben a que se debe ? ( nota : mi aplicacion tendra unas 150 prg... y dentro de ellas muchas funciones internas )


FUNCTION MIPRG01(xdata,xpes)
linea1
linea2
liena3
RETURN .T.

FUNCTION MIPRG02(xperso)
LineaA
LineaB
lineaC
RETURN .T.

FUNCTION MIPRG03(xperso)
raya1
raya2
raya3
RETURN .T.]]>

tengo un problema que aparece de vez en cuando:

En un fichero PRG con varias funciones definidas dentro como se muestra, lineas abajo.. resulta que algunas veces me ha sucedido que llamo a la función MIPROG02, se ejecuta correctamente hasta cuando llega a la "LineaC" .. se sigue de largo, no considera el RETURN y termina ejecutando la "raya1" el MIPROG03 obviamente con un mensaje de error que "raya1" no existe...

La única solución que encontré es a partir de esa funcion MIPROG03... y todas las otras funciones que siguen, las saco de ese PRG y la pongo en otro archivo PRG. saben a que se debe ? ( nota : mi aplicacion tendra unas 150 prg... y dentro de ellas muchas funciones internas )


FUNCTION MIPRG01(xdata,xpes)
linea1
linea2
liena3
RETURN .T.

FUNCTION MIPRG02(xperso)
LineaA
LineaB
lineaC
RETURN .T.

FUNCTION MIPRG03(xperso)
raya1
raya2
raya3
RETURN .T.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Perdida de control de varias funciones en un prg :: Reply by cmsoft]]> 2025-03-11T20:47:36-06:00 2025-03-11T20:47:36-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45517&p=278310#p278310 Me suena mas a que sea un tema de llamadas a las funciones a que una función no respete un return.
En error.log te puede dar una pista de eso, si quieres publicarlo podríamos analizarlo]]>
Me suena mas a que sea un tema de llamadas a las funciones a que una función no respete un return.
En error.log te puede dar una pista de eso, si quieres publicarlo podríamos analizarlo]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Perdida de control de varias funciones en un prg :: Reply by karinha]]> 2025-03-12T07:46:22-06:00 2025-03-12T07:46:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45517&p=278320#p278320
Regards, saludos.]]>

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: No me funciona shellexecute. Saber caducidad certificado digital :: Author Garbi]]> 2025-03-11T10:34:30-06:00 2025-03-11T10:34:30-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45509&p=278289#p278289
Estoy probando esta sentencia para saber la fecha de caducidad de un certificado digital

..\openssl\bin\openssl.exe x509 -in ..\dbf\certificado.pem -noout -enddate >..\dbf\fecha.txt

Si lo ejecuto desde comando me funciona y me crea el fichero fecha.txt, que aunque no lo pone claro se puede obtener la fecha de caducidad del certificado digital :certificado.pem

Pero al ejecutarlo en aplicación he probado :

Code: Select all | Expand

shellexecute(0,"runas","..\openssl\bin\openssl x509 -in ..\dbf\certificado.pem -noout -enddate >..\dbf\fecha.txt","","",1)
Pero no me crea el fichero fecha.txt que desde el comando si me crea.

¿Alguna sugerencia?

Gracias]]>

Estoy probando esta sentencia para saber la fecha de caducidad de un certificado digital

..\openssl\bin\openssl.exe x509 -in ..\dbf\certificado.pem -noout -enddate >..\dbf\fecha.txt

Si lo ejecuto desde comando me funciona y me crea el fichero fecha.txt, que aunque no lo pone claro se puede obtener la fecha de caducidad del certificado digital :certificado.pem

Pero al ejecutarlo en aplicación he probado :

Code: Select all | Expand

shellexecute(0,"runas","..\openssl\bin\openssl x509 -in ..\dbf\certificado.pem -noout -enddate >..\dbf\fecha.txt","","",1)
Pero no me crea el fichero fecha.txt que desde el comando si me crea.

¿Alguna sugerencia?

Gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: No me funciona shellexecute. Saber caducidad certificado digital :: Reply by sysctrl2]]> 2025-03-11T10:57:39-06:00 2025-03-11T10:57:39-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45509&p=278290#p278290 <![CDATA[FiveWin para Harbour/xHarbour :: Re: No me funciona shellexecute. Saber caducidad certificado digital :: Reply by Garbi]]> 2025-03-11T11:19:41-06:00 2025-03-11T11:19:41-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45509&p=278291#p278291

Code: Select all | Expand

   vresultado:=waitrun("..\openssl\bin\openssl.exe x509 -in ..\dbf\b96370556.pem -noout -enddate >..\dbf\fecha.txt")
   msgalert(vresultado)
Y el vresultado es 1,que un resultado que no aparece en la ayuda de waitrun
Y además de que no me crea el fichero fecha.txt me abre una ventana y se cierra, cuando con shellexecute no abre ninguna ventana cuando "realiza" el comando

¿Algo estoy haciendo mal? ¿Alguna sugerencia?]]>

Code: Select all | Expand

   vresultado:=waitrun("..\openssl\bin\openssl.exe x509 -in ..\dbf\b96370556.pem -noout -enddate >..\dbf\fecha.txt")
   msgalert(vresultado)
Y el vresultado es 1,que un resultado que no aparece en la ayuda de waitrun
Y además de que no me crea el fichero fecha.txt me abre una ventana y se cierra, cuando con shellexecute no abre ninguna ventana cuando "realiza" el comando

¿Algo estoy haciendo mal? ¿Alguna sugerencia?]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: No me funciona shellexecute. Saber caducidad certificado digital :: Reply by sysctrl2]]> 2025-03-11T13:01:40-06:00 2025-03-11T13:01:40-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45509&p=278298#p278298

Code: Select all | Expand

cFileCer := "b96370556.pem"
cToTxt := "fecha.txt"
bBloc := {|cCer, cTxt| "openssl.exe x509 -in " + cCer + " -noout -enddate > " + cTxt }
WaitRun( (Eval(bBloc , cFileCer, cToTxt )), 0 )

saludos]]>

Code: Select all | Expand

cFileCer := "b96370556.pem"
cToTxt := "fecha.txt"
bBloc := {|cCer, cTxt| "openssl.exe x509 -in " + cCer + " -noout -enddate > " + cTxt }
WaitRun( (Eval(bBloc , cFileCer, cToTxt )), 0 )

saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: No me funciona shellexecute. Saber caducidad certificado digital :: Reply by Ariel]]> 2025-03-12T05:06:49-06:00 2025-03-12T05:06:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45509&p=278314#p278314
prueba de poner el path completo, reemplace ..\ por c:\....turuta

Slds.]]>

prueba de poner el path completo, reemplace ..\ por c:\....turuta

Slds.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: No me funciona shellexecute. Saber caducidad certificado digital :: Reply by cmsoft]]> 2025-03-12T06:13:52-06:00 2025-03-12T06:13:52-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45509&p=278315#p278315

Code: Select all | Expand

cComando := cComando + '..\openssl\bin\openssl.exe x509 -in ..\dbf\certificado.pem -noout -enddate >..\dbf\fecha.txt'
memowrit( 'cert.bat', cComando )
WaitRun( 'cert.bat' , 0 )
]]>

Code: Select all | Expand

cComando := cComando + '..\openssl\bin\openssl.exe x509 -in ..\dbf\certificado.pem -noout -enddate >..\dbf\fecha.txt'
memowrit( 'cert.bat', cComando )
WaitRun( 'cert.bat' , 0 )
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: No me funciona shellexecute. Saber caducidad certificado digital :: Reply by Garbi]]> 2025-03-12T09:53:43-06:00 2025-03-12T09:53:43-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45509&p=278328#p278328 Muchas gracias.

Ahora tocar obtener una fecha validad de la información que da.
Pero eso ya es más sencillo. Solo leer caracteres y transformar el mes.
Ejemplo de fecha.txt : notAfter=Dec 27 10:16:45 2026 GMT -> 27/12/2026

Un saludo]]>
Muchas gracias.

Ahora tocar obtener una fecha validad de la información que da.
Pero eso ya es más sencillo. Solo leer caracteres y transformar el mes.
Ejemplo de fecha.txt : notAfter=Dec 27 10:16:45 2026 GMT -> 27/12/2026

Un saludo]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Erros conv. sistema para fw25-01 xharbour 1.31 :: Author jair]]> 2025-03-10T12:15:17-06:00 2025-03-10T12:15:17-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45505&p=278263#p278263

Code: Select all | Expand

10/03/25 14:52:15: EXCESS RELEASE OF FONT Ms Sans Serif[ hFont : 0] ( nCount : 0 )
	 <-TFONT:END(310) <-TCONTROL:DESTROY(2367) <-TGET:DESTROY(854) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1877) <-TGET:HANDLEEVENT(666) <-_FWH(259) <-DIALOGBOXINDIRECTW(0) <-TDIALOG:ACTIVATE(325)
	------------------------------------------------------------	
10/03/25 14:52:15: EXCESS RELEASE OF FONT Ms Sans Serif[ hFont : 0] ( nCount : 0 )
	 <-TFONT:END(310) <-TCONTROL:DESTROY(2367) <-TCOMBOBOX:DESTROY(1125) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1877) <-TCOMBOBOX:HANDLEEVENT(932) <-_FWH(259) <-DIALOGBOXINDIRECTW(0) <-TDIALOG:ACTIVATE(325)
	------------------------------------------------------------	
10/03/25 15:05:33: EXCESS RELEASE OF FONT Ms Sans Serif[ hFont : 0] ( nCount : 0 )
	 <-TFONT:END(310) <-TCONTROL:DESTROY(2367) <-TGET:DESTROY(854) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1877) <-TGET:HANDLEEVENT(666) <-_FWH(259) <-DIALOGBOXINDIRECTW(0) <-TDIALOG:ACTIVATE(325)
	------------------------------------------------------------	
10/03/25 15:05:33: EXCESS RELEASE OF FONT Ms Sans Serif[ hFont : 0] ( nCount : 0 )
	 <-TFONT:END(310) <-TCONTROL:DESTROY(2367) <-TCOMBOBOX:DESTROY(1125) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1877) <-TCOMBOBOX:HANDLEEVENT(932) <-_FWH(259) <-DIALOGBOXINDIRECTW(0) <-TDIALOG:ACTIVATE(325)
	------------------------------------------------------------	

]]>

Code: Select all | Expand

10/03/25 14:52:15: EXCESS RELEASE OF FONT Ms Sans Serif[ hFont : 0] ( nCount : 0 )
	 <-TFONT:END(310) <-TCONTROL:DESTROY(2367) <-TGET:DESTROY(854) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1877) <-TGET:HANDLEEVENT(666) <-_FWH(259) <-DIALOGBOXINDIRECTW(0) <-TDIALOG:ACTIVATE(325)
	------------------------------------------------------------	
10/03/25 14:52:15: EXCESS RELEASE OF FONT Ms Sans Serif[ hFont : 0] ( nCount : 0 )
	 <-TFONT:END(310) <-TCONTROL:DESTROY(2367) <-TCOMBOBOX:DESTROY(1125) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1877) <-TCOMBOBOX:HANDLEEVENT(932) <-_FWH(259) <-DIALOGBOXINDIRECTW(0) <-TDIALOG:ACTIVATE(325)
	------------------------------------------------------------	
10/03/25 15:05:33: EXCESS RELEASE OF FONT Ms Sans Serif[ hFont : 0] ( nCount : 0 )
	 <-TFONT:END(310) <-TCONTROL:DESTROY(2367) <-TGET:DESTROY(854) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1877) <-TGET:HANDLEEVENT(666) <-_FWH(259) <-DIALOGBOXINDIRECTW(0) <-TDIALOG:ACTIVATE(325)
	------------------------------------------------------------	
10/03/25 15:05:33: EXCESS RELEASE OF FONT Ms Sans Serif[ hFont : 0] ( nCount : 0 )
	 <-TFONT:END(310) <-TCONTROL:DESTROY(2367) <-TCOMBOBOX:DESTROY(1125) <-TWINDOW:HANDLEEVENT(0) <-TCONTROL:HANDLEEVENT(1877) <-TCOMBOBOX:HANDLEEVENT(932) <-_FWH(259) <-DIALOGBOXINDIRECTW(0) <-TDIALOG:ACTIVATE(325)
	------------------------------------------------------------	

]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Erros conv. sistema para fw25-01 xharbour 1.31 :: Reply by Antonio Linares]]> 2025-03-10T12:22:57-06:00 2025-03-10T12:22:57-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45505&p=278265#p278265
Esa información que has mostrado es relativa al consumo de recursos]]>

Esa información que has mostrado es relativa al consumo de recursos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Erros conv. sistema para fw25-01 xharbour 1.31 :: Reply by Enrico Maria Giordano]]> 2025-03-10T12:46:44-06:00 2025-03-10T12:46:44-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45505&p=278267#p278267
https://github.com/FiveTechSoft/harbour ... our_builds]]>

https://github.com/FiveTechSoft/harbour ... our_builds]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Erros conv. sistema para fw25-01 xharbour 1.31 :: Reply by karinha]]> 2025-03-10T14:58:53-06:00 2025-03-10T14:58:53-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45505&p=278270#p278270
Enrico Maria Giordano wrote: Mon Mar 10, 2025 6:46 pm What is "xHarbour 1.31"? Latest xHarbour builds are here:

https://github.com/FiveTechSoft/harbour ... our_builds
Enrico, we are struggling to understand how this old system works and bring it up to date. I have already detected some errors in the system and am helping Jair. When checking the version of xHBBCC77 that you posted, I saw this:

Code: Select all | Expand

xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)
Copyright 1999-2024, http://www.xharbour.org http://www.harbour-project.org/
Copyright 1999-2024 ??

Only the HARBOUR staff makes these mistakes. hahahahaha.

gracias, tks.

Regards, saludos.]]>
Enrico Maria Giordano wrote: Mon Mar 10, 2025 6:46 pm What is "xHarbour 1.31"? Latest xHarbour builds are here:

https://github.com/FiveTechSoft/harbour ... our_builds
Enrico, we are struggling to understand how this old system works and bring it up to date. I have already detected some errors in the system and am helping Jair. When checking the version of xHBBCC77 that you posted, I saw this:

Code: Select all | Expand

xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)
Copyright 1999-2024, http://www.xharbour.org http://www.harbour-project.org/
Copyright 1999-2024 ??

Only the HARBOUR staff makes these mistakes. hahahahaha.

gracias, tks.

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Erros conv. sistema para fw25-01 xharbour 1.31 :: Reply by Enrico Maria Giordano]]> 2025-03-10T16:28:15-06:00 2025-03-10T16:28:15-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45505&p=278275#p278275 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Erros conv. sistema para fw25-01 xharbour 1.31 :: Reply by karinha]]> 2025-03-11T07:18:59-06:00 2025-03-11T07:18:59-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45505&p=278286#p278286
Enrico, ¿qué tal: Versión: Mes/Año - 1.3.Mes?

Gracias, tks.

Regards, saludos.]]>

Enrico, ¿qué tal: Versión: Mes/Año - 1.3.Mes?

Gracias, tks.

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Erros conv. sistema para fw25-01 xharbour 1.31 :: Reply by Enrico Maria Giordano]]> 2025-03-11T07:38:13-06:00 2025-03-11T07:38:13-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45505&p=278287#p278287

Code: Select all | Expand

2025-03-11 09:20 UTC+0100 Enrico Maria Giordano <e.m.giordano@emagsoftware.it>
  * include\hbver.ch
    * Bumped to 2025
  * include/hbver.h
    * Bumped to 1.3.2
]]>

Code: Select all | Expand

2025-03-11 09:20 UTC+0100 Enrico Maria Giordano <e.m.giordano@emagsoftware.it>
  * include\hbver.ch
    * Bumped to 2025
  * include/hbver.h
    * Bumped to 1.3.2
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Erros conv. sistema para fw25-01 xharbour 1.31 :: Reply by karinha]]> 2025-03-11T07:55:19-06:00 2025-03-11T07:55:19-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45505&p=278288#p278288
Excellent Enrico, xHarbour towards the future, it will certainly be much better than HARBOUR, always keep compatibility with CLIPPER 5.3b and all future advances. I have the greatest faith in you. You are great!

Gracias, tks.

Regards, saludos.]]>

Excellent Enrico, xHarbour towards the future, it will certainly be much better than HARBOUR, always keep compatibility with CLIPPER 5.3b and all future advances. I have the greatest faith in you. You are great!

Gracias, tks.

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Erros conv. sistema para fw25-01 xharbour 1.31 :: Reply by jair]]> 2025-03-12T13:57:42-06:00 2025-03-12T13:57:42-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45505&p=278336#p278336

Code: Select all | Expand

Empresa
======== 
  Empresa:.01 -Filial:.01
  Fantasia:.EMPRESA TESTE
  Real:.EMPRESA TESTE
  Telefone:.
  Email:.
  Cidade:.SH/PR

Application
===========
   Path and name: Y:\Sistemas\Sig_Win\CompuRMT.exe (32 bits)
   Size: ********* bytes
   Time from start: 0 hours 0 mins 23 secs 
   Error occurred at: 12/03/25, 16:48:06
   Error description: 

Stack Calls
===========
   Called from: .\source\classes\meter.prg => TMETER:PAINT(247) 
   Called from: .\source\classes\meter.prg => TMETER:DISPLAY(236) 
   Called from: .\source\classes\control.prg => TMETER:HANDLEEVENT(1843) 
   Called from: .\source\classes\window.prg => _FWH(14) 
   Called from:  => SYSREFRESH(0) 
   Called from: .\source\internal\system.prg => SYSWAIT(13) 
   Called from: Y:\SISTEMAS\SIG_WIN\RPO\CompuUDM\UDMA900.RPO => CARGANCM2024(1699) 
   Called from: Y:\SISTEMAS\SIG_WIN\RPO\CompuUDM\UDMA900.RPO => CARGASVIAFTP(524) 
   Called from: .\PRG\CompuRmt.PRG => LOGABERT(1152) 
   Called from: .\PRG\CompuRmt.PRG => (b)MAIN(673) 
   Called from: .\source\classes\window.prg => TWINDOW:ACTIVATE(1120) 
   Called from: .\PRG\CompuRmt.PRG => MAIN(673) 

System
======
   CPU type: Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz 2794 Mhz
   Hardware memory:      16290 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)
   Windows version: 6.2, Build 9200 
   Fivewin: FWH 25.01


Variables in use
================
   Procedure     Type   Value
   ==========================
   TMETER:PAINT
     Local   1:    O    Class: TMETER
     Local   2:    N             0
     Local   3:    U    NIL
     Local   4:    U    
     Local   5:    U    NIL
     Local   6:    C    "Processando..."
     Local   7:    N             0
     Local   8:    N             0
     Local   9:    U    NIL
     Local  10:    U    NIL
   TMETER:DISPLAY
     Local   1:    O    Class: TMETER
   TMETER:HANDLEEVENT
     Param   1:    N            15
     Param   2:    N             0
     Param   3:    N             0
     Local   1:    O    Class: TMETER
     Local   2:    U    NIL
   _FWH
     Param   1:    N             0
     Param   2:    N            15
     Param   3:    N             0
     Param   4:    N             0
     Param   5:    N            15
     Local   1:    O    Class: TMETER
   SYSREFRESH
   SYSWAIT
     Param   1:    N             1
     Local   1:    N         60487.82
   CARGANCM2024
     Local   1:    L    F
     Local   2:    L    F
     Local   3:    A    Len:     0
     Local   4:    A    Len:     5
                               1          O   :-_-{ TDIALOG Object }:
                               2          O   :-_-{ TMETER Object }:
                               3          O   :-_-{ TSTSAY Object }:
                               4          O   :-_-{ TSAY Object }:
                               5          N   :         0:
     Local   5:    N             0
     Local   6:    L    F
     Local   7:    C    "Y:\SISTEMAS\SIG_WIN\Dados\NCM010"
   CARGASVIAFTP
     Param   1:    L    T
     Local   1:    C    ""
     Local   2:    L    T
     Local   3:    A    Len:     3
                               1          C   :SM0:
                               2          N   :         1:
                               3          N   :         1:
     Local   4:    C    "Y:\SISTEMAS\SIG_WIN\Dados\NCM010.dbf"
     Local   5:    C    "Y:\SISTEMAS\SIG_WIN\Dados\NCM010"
     Local   6:    C    "NCM"
     Local   7:    C    "11/03/25"
     Local   8:    O    Class: TINI
     Local   9:    N             6
     Local  10:    N             0
     Local  11:    N             6
     Local  12:    L    T
     Local  13:    A    Len:     6
                               1          C   :ALQ:
                               2          C   :ANP:
                               3          C   :AVS:
                               4          C   :CBF:
                               5          C   :CES:
                               6          C   :NCM:
     Local  14:    A    Len:     6
                               1          L   :F:
                               2          L   :T:
                               3          L   :F:
                               4          L   :F:
                               5          L   :F:
                               6          L   :F:
     Local  15:    L    T
   LOGABERT
     Param   1:    L    F
     Param   2:    L    T
     Param   3:    L    T
     Param   4:    L    T
     Param   5:    L    F
     Param   6:    L    T
     Local   1:    L    T
     Local   2:    L    F
     Local   3:    O    Class: TDIALOG
     Local   4:    U    NIL
     Local   5:    U    NIL
     Local   6:    U    NIL
     Local   7:    N             0
     Local   8:    U    NIL
     Local   9:    U    NIL
     Local  10:    C    ""
     Local  11:    A    Len:     0
     Local  12:    C    ""
   (b)MAIN
     Param   1:    O    Class: TWINDOW
   TWINDOW:ACTIVATE
     Param   1:    C    "MAXIMIZED"
     Param   2:    U    NIL
     Param   3:    U    NIL
     Param   4:    U    NIL
     Param   5:    U    NIL
     Param   6:    U    NIL
     Param   7:    B    {|| Block }
     Param   8:    B    {|| Block }
     Param   9:    U    NIL
     Param  10:    U    NIL
     Param  11:    U    NIL
     Param  12:    U    NIL
     Param  13:    U    NIL
     Param  14:    U    NIL
     Param  15:    U    NIL
     Param  16:    U    NIL
     Param  17:    B    {|| Block }
     Param  18:    U    NIL
     Param  19:    U    NIL
     Param  20:    L    F
     Param  21:    U    NIL
     Local   1:    O    Class: TWINDOW
     Local   2:    U    NIL
     Local   3:    U    NIL
   MAIN
     Local   1:    U    NIL
     Local   2:    U    NIL
     Local   3:    U    NIL
     Local   4:    U    NIL
     Local   5:    U    NIL
     Local   6:    U    NIL
     Local   7:    C    "Release {dt}{h}: {12/03/25}{16:40:49}"
     Local   8:    C    "xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)"
     Local   9:    C    "FWH 25.01"
     Local  10:    N           680
     Local  11:    L    T
     Local  12:    L    F
     Local  13:    L    T
     Local  14:    O    Class: TCURSOR
     Local  15:    C    "10740"
     Local  16:    C    "ReleasePAF .003.000"
     Local  17:    C    "ReleasePDV .003.321"
     Local  18:    C    "ReleaseNFe .003.029"
     Local  19:    C    "ReleaseSql .003.015"
     Local  20:    A    Len:     0
     Local  21:    A    Len:     0
     Local  22:    U    NIL
     Local  23:    O    Class: TFONT

Linked RDDs
===========
   DBF
   DBFFPT
   SIXCDX
   DBFBLOB
   DBFCDX
   DBFNTX
   ADS
   ADT
   ADSVFP
   ADSCDX
   ADSNTX

DataBases in use
================

  1:    MNT              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         12           12      .F.   .F.

     Indexes in use                           TagName
        => CODUSUARIO+INICONEXAO              TAG_MNT_01
           USUREDE                            TAG_MNT_02
           HOST                               TAG_MNT_03
           IP                                 TAG_MNT_04
           INICONEXAO                         TAG_MNT_05
           AMBIENTE+USUREDE                   TAG_MNT_06
           NOMUSUARIO                         TAG_MNT_07
           FUNCAO                             TAG_MNT_08
           ROTINA                             TAG_MNT_09
           SETOR                              TAG_MNT_10
           DEPARTAMEN                         TAG_MNT_11
           COD_FIL                            TAG_MNT_12
           EMPRESA                            TAG_MNT_13
           MODULO                             TAG_MNT_14

     Relations in use

  2:    HLP              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         20           28      .F.   .F.

     Indexes in use                           TagName
        => VARIAVEL                           TAG_TOP_01
           ALIAS+VARIAVEL                     TAG_TOP_02
           FUNNAME+VARIAVEL                   TAG_TOP_03

     Relations in use

  3:    TOP              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            4      .F.   .F.

     Indexes in use                           TagName
        => ID                                 TAG_TOP_01

     Relations in use

  4:    USU              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            3      .F.   .F.

     Indexes in use                           TagName
        => CodUsu                             TAG_USU_01
           NomUsu                             TAG_USU_02
           SenUsu                             TAG_USU_03

     Relations in use

  5:    SM0              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => M0_CODIGO+M0_CODFIL                TAG_EMP_01

     Relations in use

  6:    MOD              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         16           17      .F.   .F.

     Indexes in use                           TagName
           ID                                 TAG_MOD_01
           NOME                               TAG_MOD_02
        => DESC                               TAG_MOD_03

     Relations in use

  7:    PER              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         24           23      .F.   .T.

     Indexes in use                           TagName
        => CODUSU+CODEMP+CODFIL+MODULO        TAG_PER_01
           CODUSU+CODEMP+CODFIL+ARQMNU        TAG_PER_02

     Relations in use

  8:    SX1              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            2      .F.   .F.

     Indexes in use                           TagName
        => X1_GRUPO+X1_ORDEM                  TAG_SX1_01
           X1_GRUPO+X1_VARIAVL+X1_ORDEM       TAG_SX1_02
           X1_GRUPO+X1_VARIAVL+X1_VAR01       TAG_SX1_03

     Relations in use

  9:    SX2              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        241          240      .F.   .T.

     Indexes in use                           TagName
        => X2_CHAVE                           TAG_SX2_01
           X2_ARQUIVO                         TAG_SX2_02

     Relations in use

 10:    SX3              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
       5489         5944      .F.   .F.

     Indexes in use                           TagName
        => X3_ARQUIVO+X3_ORDEM                TAG_SX3_01
           X3_CAMPO+X3_ARQUIVO                TAG_SX3_02
           X3_ARQUIVO+X3_FOLDER               TAG_SX3_03
           X3_ARQUIVO+X3_CAMPO                TAG_SX3_04

     Relations in use

 11:    SX4              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => X4_FILIAL+DTOS(X4_DATA)+X4_CODUSU  TAG_SX4_01
           X4_FILIAL+DTOS(X4_DATA)+X4_NOMUSU  TAG_SX4_02
           X4_FILIAL+DTOS(X4_DTCOMP)+X4_CODUSU
                                              TAG_SX4_03
           X4_FILIAL+X4_CODUSU+DTOS(X4_DATA)+X4_HORA
                                              TAG_SX4_04
           X4_FILIAL+DTOS(X4_DATA)+X4_HORA    TAG_SX4_05
           X4_FILIAL+X4_CODUSU+DTOS(X4_DTCOMP)+X4_HRCOMP
                                              TAG_SX4_06
           X4_FILIAL+DTOS(X4_DTCOMP)+X4_HRCOMP
                                              TAG_SX4_07
           X4_FILIAL+X4_NOMUSU                TAG_SX4_08

     Relations in use

 12:    SX6              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        201          451      .F.   .F.

     Indexes in use                           TagName
        => X6_VAR                             TAG_SX6_01

     Relations in use

 13:    SX7              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          938      .F.   .F.

     Indexes in use                           TagName
        => X7_CAMPO+X7_SEQUENC                TAG_SX6_01

     Relations in use

 14:    SIX              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        876          950      .F.   .F.

     Indexes in use                           TagName
        => INDICE+ORDEM                       TAG_SIX_01
           CHAVE                              TAG_SIX_02

     Relations in use

 15:    SIY              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          2          108      .F.   .F.

     Indexes in use                           TagName
        => INDICE+ORDEM+CAMPO                 TAG_SIY_01

     Relations in use

 16:    SXA              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         34           48      .F.   .F.

     Indexes in use                           TagName
        => XA_ALIAS+XA_ORDEM                  TAG_SXA_01

     Relations in use

 17:    SXB              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        949         1113      .F.   .F.

     Indexes in use                           TagName
        => XB_ALIAS+XB_TIPO+XB_SEQ+XB_COLUNA  TAG_SXB_01
           XB_ALIAS+XB_TIPO+XB_COLUNA+XB_SEQ  TAG_SXB_02

     Relations in use

 18:    SXC              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         12           61      .F.   .F.

     Indexes in use                           TagName
        => XC_CAMPO+XC_RAMO+XC_SEGMENT        TAG_SXC_01

     Relations in use

 19:    SXE              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            5      .F.   .F.

     Indexes in use                           TagName

     Relations in use

 20:    SXF              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => XF_FILIAL+XF_MODULO+XF_USUARIO+XF_TIPO+DESCEND(DTOS(XF_DATA))+DESCEND(XF_HORA)
                                              TAG_SXF_01
           XF_FILIAL+XF_MODULO+XF_USUARIO+XF_TIPO+XF_FUNCAO+XF_PARAMET
                                              TAG_SXF_02
           XF_FILIAL+XF_MODULO+XF_USUARIO+XF_FUNCAO+XF_PARAMET+XF_TIPO
                                              TAG_SXF_03

     Relations in use

 21:    LOG              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => CALIAS+DTOS(DATA)                  TAG_LOG_01
           USU +CALIAS+DTOS(DATA)             TAG_LOG_02
           DTOS(DATA)                         TAG_LOG_03
           USU + DTOS(DATA)                   TAG_LOG_04
           UPPER( MODU ) + DTOS(DATA)         TAG_LOG_05
           USU + UPPER( MODU ) + DTOS(DATA)   TAG_LOG_06

     Relations in use

 22:    SXG              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        132          414      .F.   .F.

     Indexes in use                           TagName
        => XG_MODULO+XG_ORDEM+XG_CODUSU       TAG_SXG_01
           XG_CODUSU+XG_FUNCAO                TAG_SXG_02
           XG_MODULO+XG_CODUSU+XG_ORDEM       TAG_SXG_03

     Relations in use

 23:    SM2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          4            4      .F.   .F.

     Indexes in use                           TagName
        => Upper(M2_FILIAL+DESCEND(DTOS(M2_DATA))+DESCEND(M2_SEQ))
                                              SM201001
           Upper(M2_FILIAL+DTOS(M2_DATA))     SM201002

     Relations in use

 24:    SX5              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1         2813      .F.   .F.

     Indexes in use                           TagName
        => Upper(X5_FILIAL+X5_TABELA+X5_CHAVE)
                                              SX501001
           Upper(X5_FILIAL+X5_TABELA+substr(X5_DESCRI,1,100))
                                              SX501002

     Relations in use

 25:    AGE              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(GE_FILIAL+GE_TIPO+DESCEND(DTOS(GE_DTAGE)))
                                              AGE01001
           Upper(GE_FILIAL+GE_TIPO+DESCEND(DTOS(GE_DTCAD)))
                                              AGE01002
           Upper(GE_FILIAL+GE_NOMCLI)         AGE01003
           Upper(GE_FILIAL+GE_CODCLI)         AGE01004
           Upper(GE_FILIAL+GE_TIPO+DTOS(GE_DTAGE))
                                              AGE01005

     Relations in use

 26:    TEL              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(EL_FILIAL+EL_NOMEFON)        TEL01001
           Upper(EL_FILIAL+EL_FONEFON)        TEL01002
           Upper(EL_FILIAL+EL_FANTASI)        TEL01003
           Upper(EL_FILIAL+EL_CODFON)         TEL01004

     Relations in use

 27:    SA1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => Upper(A1_FILIAL+A1_CODCLI)         SA101001
           Upper(A1_FILIAL+A1_NOMCLI)         SA101002
           Upper(A1_FILIAL+STRZERO(MONTH(A1_DTNASCL),2)+STRZERO(DAY(A1_DTNASCL),2)+A1_NOMCLI)
                                              SA101003
           Upper(A1_FILIAL+(STRZERO(MONTH(A1_DTNASCO),2)+STRZERO(DAY(A1_DTNASCO),2)))
                                              SA101004
           Upper(A1_FILIAL+A1_CIDCLI+A1_NOMCLI)
                                              SA101005
           Upper(A1_FILIAL+DTOS(A1_DTCAD))    SA101006
           Upper(A1_FILIAL+A1_FANTASI)        SA101007
           Upper(A1_FILIAL+A1_CICLI)          SA101008
           Upper(A1_FILIAL+A1_CODVEND+A1_CODCLI)
                                              SA101009
           Upper(A1_FILIAL+A1_CODVEND+A1_NOMCLI)
                                              SA101010
           Upper(A1_FILIAL+A1_ROTA)           SA101011
           Upper(A1_FILIAL+A1_UFCLI+A1_CODCLI)
                                              SA101012
           Upper(A1_FILIAL+A1_UFCLI+A1_NOMCLI)
                                              SA101013
           Upper(A1_FILIAL+A1_CODCLI+A1_EXPORTA)
                                              SA101014
           Upper(A1_FILIAL+A1_UFCLI+A1_CIDCLI+A1_NOMCLI)
                                              SA101015

     Relations in use

 28:    SF5              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            2      .F.   .F.

     Indexes in use                           TagName
        => Upper(F5_FILIAL+F5_CODIGO)         SF501001
           Upper(F5_FILIAL+F5_DESC)           SF501002

     Relations in use

 29:    SB1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B1_FILIAL+B1_CODPRO)         SB101001
           Upper(B1_FILIAL+B1_DESPRO)         SB101002
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_CODPRO)
                                              SB101003
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_DESPRO)
                                              SB101004
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_MARCA+B1_DESPRO)
                                              SB101005
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_REF)
                                              SB101006
           Upper(B1_FILIAL+B1_MARCA+B1_DESPRO+B1_REF)
                                              SB101007
           Upper(B1_FILIAL+B1_CODBARR)        SB101008
           Upper(B1_FILIAL+B1_REF)            SB101009
           Upper(B1_FILIAL+DTOS(B1_DTCAD))    SB101010
           Upper(B1_FILIAL+B1_TIPO+B1_GRUPRO+B1_SGRUPRO+B1_CODPRO)
                                              SB101011
           Upper(B1_FILIAL+B1_TAMANHO+B1_DESPRO)
                                              SB101012
           Upper(B1_FILIAL+B1_CODGRAD)        SB101013
           Upper(B1_FILIAL+B1_TECRAPI)        SB101014
           Upper(B1_FILIAL+B1_CODEMBA)        SB101015

     Relations in use

 30:    SFB              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1           26      .F.   .F.

     Indexes in use                           TagName
        => Upper(FB_FILIAL+FB_COD+FB_CODECF)  SFB01001
           Upper(FB_FILIAL+FB_CODECF+FB_COD)  SFB01002
           Upper(FB_FILIAL+FB_DESC)           SFB01003

     Relations in use

 31:    SA3              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => Upper(A3_FILIAL+A3_CODVEN)         SA301001
           Upper(A3_FILIAL+A3_NOME)           SA301002
           Upper(A3_FILIAL+STRZERO(MONTH(A3_DTNASC),2)+STRZERO(DAY(A3_DTNASC),2)+A3_NOME)
                                              SA301003
           Upper(A3_FILIAL+A3_GERENTE)        SA301004
           A3_CODVEN                          SA39999

     Relations in use

 32:    SAF              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(AF_FILIAL+AF_CODVEN)         SAF01001

     Relations in use

 33:    SF2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_CLIENTE+DTOS(F2_DTEMISS))
                                              SF201001
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_VEND+DTOS(F2_DTEMISS))
                                              SF201002
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_TRANSP+DTOS(F2_DTEMISS))
                                              SF201003
           Upper(F2_FILIAL+DTOS(F2_DTEMISS)+F2_CLIENTE+F2_SERIE+F2_DOC)
                                              SF201004
           Upper(F2_FILIAL+DTOS(F2_DTEMISS)+F2_VEND+F2_SERIE+F2_DOC)
                                              SF201005
           Upper(F2_FILIAL+F2_CLIENTE+F2_SERIE+F2_DOC+DTOS(F2_DTEMISS))
                                              SF201006
           Upper(F2_FILIAL+F2_CLIENTE+DTOS(F2_DTEMISS)+F2_SERIE+F2_DOC)
                                              SF201007
           Upper(F2_FILIAL+F2_VEND+F2_SERIE+F2_DOC+DTOS(F2_DTEMISS))
                                              SF201008
           Upper(F2_FILIAL+F2_VEND+DTOS(F2_DTEMISS)+F2_SERIE+F2_DOC)
                                              SF201009
           Upper(F2_FILIAL+DTOS(F2_DTENTRE)+F2_HORA)
                                              SF201010
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+DESCEND(F2_DOC))
                                              SF201011
           Upper(F2_FILIAL+F2_NOMCLI+DTOS(F2_DTEMISS)+F2_TIPIMP+F2_SERIE+F2_DOC)
                                              SF201012
           Upper(F2_FILIAL+F2_NFEID)          SF201013
           Upper(F2_FILIAL+F2_NSERECF+F2_LIMFECF+F2_CUPFIS)
                                              SF201014
           Upper(F2_FILIAL+F2_PEDIDO)         SF201015

     Relations in use

 34:    NFS              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(NFS_FILIAL+NFS_SERIE+NFS_DOC)
                                              NFS01001
           Upper(NFS_FILIAL+NFS_CHNFE)        NFS01002
           Upper(NFS_FILIAL+NFS_SITUAC+NFS_SERIE+NFS_DOC)
                                              NFS01003
           Upper(NFS_FILIAL+NFS_STATUS+NFS_SERIE+NFS_DOC)
                                              NFS01004
           Upper(NFS_FILIAL+NFS_TIPDOC+NFS_SERIE+NFS_DOC+NFS_CLIFOR)
                                              NFS01005
           Upper(NFS_FILIAL+NFS_STATUS+NFS_SERIE+descend(NFS_DOC))
                                              NFS01006
           Upper(NFS_FILIAL+NFS_SERIE+descend(NFS_DOC))
                                              NFS01007
           Upper(NFS_FILIAL+NFS_SITUAC+NFS_SERIE+descend(NFS_DOC))
                                              NFS01008
           Upper(NFS_FILIAL+NFS_MODEMI+NFS_SITUAC+NFS_SERIE+NFS_DOC)
                                              NFS01009
           Upper(NFS_FILIAL+DTOS(NFS_DIGITA)+NFS_SERIE+NFS_DOC)
                                              NFS01010
           Upper(NFS_FILIAL+NFS_SERIE+DTOS(NFS_AUTORI)+NFS_DOC)
                                              NFS01011

     Relations in use

 35:    SD2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_ITEM)
                                              SD201001
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+DTOS(D2_DTEMISS))
                                              SD201002
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_CLIENTE+D2_ITEM)
                                              SD201003
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_PRODUTO+D2_ALMOX+D2_LOTE)
                                              SD201004
           Upper(D2_FILIAL+DTOS(D2_DTEMISS)+D2_SERIE+D2_DOC)
                                              SD201005
           Upper(D2_FILIAL+D2_CLIENTE+D2_SERIE+D2_DOC)
                                              SD201006
           Upper(D2_FILIAL+D2_PRODUTO+D2_SERIE+D2_DOC)
                                              SD201007
           Upper(D2_FILIAL+D2_PEDIDO+D2_SERIE+D2_DOC+D2_ITEM)
                                              SD201008
           Upper(D2_FILIAL+D2_TPIMORI+D2_SERORI+D2_NFORI+D2_CLIENTE+D2_PRODUTO+D2_ALMOX+D2_LOTE)
                                              SD201009
           Upper(D2_FILIAL+D2_NSERECF+D2_LIMFECF+D2_CUPFIS+D2_ITEM)
                                              SD201010
           Upper(D2_FILIAL+D2_TIPIMP+DTOS(D2_DTEMISS))
                                              SD201011
           Upper(D2_FILIAL+D2_PRODUTO+DESCEND(DTOS(D2_DTEMISS)))
                                              SD201012

     Relations in use

 36:    SDM              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(DM_FILIAL+DM_TIPIMP+DM_SERIE+DM_DOC+DM_ITEM)
                                              SDM01001

     Relations in use

 37:    FE1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(FE_FILIAL+FE_MESANO)         FE101001
           Upper(FE_FILIAL+FE_ANO)            FE101002

     Relations in use

 38:    SB9              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B9_FILIAL+B9_CODPRO+B9_ALMOX+B9_GRADE)
                                              SB901001
           Upper(B9_FILIAL+B9_DESPRO)         SB901002
           Upper(B9_FILIAL+B9_CODBARR)        SB901003
           Upper(B9_FILIAL+B9_CODPRO+B9_COLUNA+B9_LINHA)
                                              SB901004

     Relations in use

 39:    SF4              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1           99      .F.   .F.

     Indexes in use                           TagName
        => Upper(F4_FILIAL+F4_CODFISC)        SF401001
           Upper(F4_FILIAL+F4_CFOP)           SF401002
           Upper(F4_FILIAL+F4_DESFISC)        SF401003
           Upper(F4_FILIAL+F4_SCFOP)          SF401004

     Relations in use

 40:    PCC              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          562      .F.   .F.

     Indexes in use                           TagName
        => Upper(CC_FILIAL+CC_CONTA)          PCC01001
           Upper(CC_FILIAL+CC_DESCON)         PCC01002
           Upper(CC_FILIAL+CC_CODIGO)         PCC01003

     Relations in use

 41:    SB2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B2_FILIAL+B2_CODPRO+B2_ALMOX)
                                              SB201001
           Upper(B2_FILIAL+B2_DESPRO+B2_ALMOX)
                                              SB201002
           Upper(B2_FILIAL+B2_ALMOX+B2_CODPRO)
                                              SB201003
           Upper(B2_FILIAL+B2_ALMOX+B2_DESPRO)
                                              SB201004
           Upper(B2_FILIAL+B2_GRADE)          SB201005

     Relations in use

 42:    SD3              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D3_FILIAL+D3_COD+D3_TM)      SD301001
           Upper(D3_FILIAL+D3_COD+D3_ALMOX+D3_LOTE+DTOS(D3_EMISSAO))
                                              SD301002
           Upper(D3_FILIAL+D3_COD+D3_OP+D3_SEQ)
                                              SD301003
           Upper(D3_FILIAL+D3_COD+D3_OP+D3_DOC)
                                              SD301004
           Upper(D3_FILIAL+D3_DESC)           SD301005
           Upper(D3_FILIAL+D3_TM+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301006
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301007
           Upper(D3_FILIAL+D3_COD+DTOS(D3_EMISSAO))
                                              SD301008
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_ROTINA)
                                              SD301009
           Upper(D3_FILIAL+DTOS(D3_EMISSAO)+D3_VENCOMP+D3_COD)
                                              SD301010
           Upper(D3_FILIAL+D3_REF+D3_ALMOX+D3_VENCOMP+DTOS(D3_EMISSAO))
                                              SD301011
           Upper(D3_FILIAL+D3_COD+D3_CLIFOR+DTOS(D3_EMISSAO))
                                              SD301012
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_SEQ)
                                              SD301013
           Upper(D3_FILIAL+D3_TM+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301014
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301015

     Relations in use

 43:    SE1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(E1_FILIAL+E1_PREFIXO+E1_NUMDUP+E1_NUMPARC+E1_CODCLI+E1_CODHIST+E1_CODTIPO+DTOS(E1_DTEMIS))
                                              SE101001
           Upper(E1_FILIAL+E1_PREFIXO+E1_NUMDUP+E1_CODCLI)
                                              SE101002
           Upper(E1_FILIAL+E1_CODCLI+E1_PREFIXO+E1_NUMDUP+E1_NUMPARC+DTOS(E1_DTVENC))
                                              SE101003
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTPAGO)+DTOS(E1_DTVENC))
                                              SE101004
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTVENC))
                                              SE101005
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTEMIS))
                                              SE101006
           Upper(E1_FILIAL+DTOS(E1_DTPAGO)+E1_CODTIPO)
                                              SE101007
           Upper(E1_FILIAL+DTOS(E1_DTVENC)+E1_CODTIPO)
                                              SE101008
           Upper(E1_FILIAL+DTOS(E1_DTEMIS)+E1_CODCLI)
                                              SE101009
           Upper(E1_FILIAL+E1_SITUA+DTOS(E1_DTVENC))
                                              SE101010
           Upper(E1_FILIAL+E1_VENDEDO+DTOS(E1_DTPAGO))
                                              SE101011
           Upper(E1_FILIAL+E1_NOME+DTOS(E1_DTEMIS))
                                              SE101012
           Upper(E1_FILIAL+E1_CHAVDES)        SE101013
           Upper(E1_FILIAL+E1_COMITIT)        SE101014
           Upper(E1_FILIAL+E1_BOLETON)        SE101015

     Relations in use

 44:    SF1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_FORNECE+DTOS(F1_DTEMISS))
                                              SF101001
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_COMP+DTOS(F1_DTEMISS))
                                              SF101002
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_TRANSP+DTOS(F1_DTEMISS))
                                              SF101003
           Upper(F1_FILIAL+DTOS(F1_DTEMISS)+F1_FORNECE+F1_SERIE+F1_DOC)
                                              SF101004
           Upper(F1_FILIAL+DTOS(F1_DTEMISS)+F1_COMP+F1_SERIE+F1_DOC)
                                              SF101005
           Upper(F1_FILIAL+F1_FORNECE+F1_SERIE+F1_DOC+DTOS(F1_DTEMISS))
                                              SF101006
           Upper(F1_FILIAL+F1_FORNECE+DTOS(F1_DTEMISS)+F1_SERIE+F1_DOC)
                                              SF101007
           Upper(F1_FILIAL+F1_COMP+F1_SERIE+F1_DOC+DTOS(F1_DTEMISS))
                                              SF101008
           Upper(F1_FILIAL+F1_COMP+DTOS(F1_DTEMISS)+F1_SERIE+F1_DOC)
                                              SF101009
           Upper(F1_FILIAL+DTOS(F1_DTENTRE)+F1_HORA)
                                              SF101010
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+DESCEND(F1_DOC))
                                              SF101011
           Upper(F1_FILIAL+F1_NOMFOR+DTOS(F1_DTENTRE)+F1_TIPIMP+F1_SERIE+F1_DOC)
                                              SF101012
           Upper(F1_FILIAL+F1_NFEID)          SF101013
           Upper(F1_FILIAL+DTOS(F1_DTENTRE)+F1_FORNECE+F1_SERIE+F1_DOC)
                                              SF101014
           Upper(F1_FILIAL+F1_TIPIMP+F1_DOC)  SF101015

     Relations in use

 45:    SD1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_ITEM)
                                              SD101001
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101002
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_FORNECE+D1_ITEM)
                                              SD101003
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_PRODUTO+D1_ALMOX+D1_LOTE)
                                              SD101004
           Upper(D1_FILIAL+DTOS(D1_DTEMISS)+D1_SERIE+D1_DOC+D1_FORNECE)
                                              SD101005
           Upper(D1_FILIAL+D1_FORNECE+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101006
           Upper(D1_FILIAL+D1_PRODUTO+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101007
           Upper(D1_FILIAL+D1_PEDIDO+D1_SERIE+D1_DOC+D1_ITEM)
                                              SD101008
           Upper(D1_FILIAL+D1_TPIMORI+D1_SERORI+D1_NFORI+D1_FORNECE+D1_PRODUTO+D1_ALMOX+D1_LOTE)
                                              SD101009
           Upper(D1_FILIAL+DTOS(D1_DTENTRE)+D1_SERIE+D1_DOC+D1_FORNECE)
                                              SD101010
           Upper(D1_FILIAL+D1_PRODUTO+DESCEND(DTOS(D1_DTEMISS)))
                                              SD101011
           Upper(D1_FILIAL+DTOS(D1_DTENTRE)+D1_PRODUTO)
                                              SD101012
           Upper(D1_FILIAL+D1_FORNECE+D1_PRODUTO+DESCEND(DTOS(D1_DTEMISS)))
                                              SD101013
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_FORNECE+D1_PRODUTO+D1_ITEM)
                                              SD101014

     Relations in use

 46:    LSN              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          4           68      .F.   .F.

     Indexes in use                           TagName
        => Upper(SN_FILIAL+SN_TIPIMP+SN_SERIE+SN_NUMERO)
                                              LSN01001
           Upper(SN_FILIAL+SN_TIPIMP+SN_NUMERO+SN_SERIE)
                                              LSN01002
           Upper(SN_FILIAL+SN_SERIE+SN_TIPIMP+SN_NUMERO)
                                              LSN01003
           Upper(SN_FILIAL+SN_SERIE+SN_NUMERO+SN_TIPIMP)
                                              LSN01004

     Relations in use

 47:    ALQ              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          729      .F.   .F.

     Indexes in use                           TagName
           Upper(LQ_FILIAL+LQ_UFORIG+LQ_UFDEST)
                                              ALQ01001
           Upper(LQ_FILIAL+LQ_UFDEST+LQ_UFORIG)
                                              ALQ01002

     Relations in use

 48:    ANP              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1         1032      .F.   .F.

     Indexes in use                           TagName
           Upper(NP_FILIAL+NP_CODPROD)        ANP01001

     Relations in use

 49:    AVS              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1        27328      .F.   .F.

     Indexes in use                           TagName
           Upper(VS_FILIAL+VS_REGISTR)        AVS01001
           Upper(VS_FILIAL+VS_CMED)           AVS01002
           Upper(VS_FILIAL+VS_EAN1)           AVS01003
           Upper(VS_FILIAL+VS_EAN2)           AVS01004
           Upper(VS_FILIAL+VS_EAN3)           AVS01005

     Relations in use

 50:    CBF              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          484      .F.   .F.

     Indexes in use                           TagName
           Upper(CBF_FILIAL+CBF_CBENEF)       CBF01001

     Relations in use

 51:    CES              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        961         2003      .F.   .F.

     Indexes in use                           TagName
           Upper(ES_FILIAL+ES_COD)            CES01001
           Upper(ES_FILIAL+ES_NOM)            CES01002

     Relations in use

 52: => NCM              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
      42942        53736      .F.   .F.

     Indexes in use                           TagName
           Upper(CM_FILIAL+CM_COD)            NCM01001
           Upper(CM_FILIAL+CM_NOM)            NCM01002
           Upper(CM_FILIAL+CM_IBPT_TP+CM_COD) NCM01003

     Relations in use

     --- Conteudo do registro corrente --------------------------
      CM_EMPORI: 01
      CM_FILIAL: 01
      CM_FILORI: 01
         CM_COD: 00000000  
         CM_NOM: PRODUTO NAO ESPECIFICADO NA LISTA DE NCM                         
      CM_DESCEX:                                                                                                                                                                                                         
     CM_CESTCOD:        
     CM_CODICMS:   
        CM_ICMS:           0.00
      CM_CODECF:      
     CM_REDALIQ:           0.00
     CM_REDALII:           0.00
     CM_ORIMERC:  
      CM_CODCST:   
         CM_CST:    
     CM_CODCSTE:   
      CM_CSTENT:    
     CM_ICMSDIF:           0.00
     CM_CSTPISE:   
     CM_CSTCOFE:   
     CM_CSTPISS:   
     CM_CSTCOFS:   
     CM_REDPISE:           0.00
     CM_REDCOFE:           0.00
     CM_CODCREP:    
     CM_CODCREC:    
      CM_NATREC:    
     CM_ALIQ_TN:           7.85
     CM_ALIQ_TI:           9.85
        CM_ALIQ:           0.00
     CM_DT_ULTA:   /  /  
     CM_ALIQ_ES:          18.00
     CM_ALIQ_MU:           0.00
     CM_IBPT_DI: 20/09/24
     CM_IBPT_DF: 31/10/24
     CM_IBPT_CH: AB35A7
     CM_IBPT_VR: 24.2.C
     CM_IBPT_FO: IBPT/empresometro.com.br          
       CM_UTRIB:       
     CM_IBPT_TP: 0
     ------------------------------------------------------------

Classes in use:
===============
     1 ERROR
     2 HASHENTRY
     3 HBCLASS
     4 HBOBJECT
     5 HB_LOGGER
     6 HB_LOGCHANNEL
     7 HB_LOGCONSOLE
     8 HB_LOGFILE
     9 TFONT
    10 TINI
    11 TIMMERSIG
    12 TWINDOW
    13 TDIALOG
    14 TBRUSH
    15 TCONTROL
    16 TBITMAP
    17 TREG32
    18 TRECT
    19 OTBLOG
    20 TCURSOR
    21 TICON
    22 TBAR
    23 TSBUTTON
    24 TCHECKBOX
    25 TMSGBAR
    26 TMSGITEM
    27 TSTSAY
    28 TSLINES
    29 TIMAGE
    30 TVGET
    31 GET
    32 TGET
    33 TCLIPGET
    34 TCOMBOBOX
    35 TSAY
    36 TPROGRESS
    37 TIPCLIENT
    38 TIPCLIENTHTTP
    39 TURL
    40 TBTNBMP
    41 TFRXCFG
    42 TXMLDOCUMENT
    43 TXMLNODE
    44 TXMLITERATOR
    45 TXMLITERATORSCAN
    46 TMENU
    47 TMENUITEM
    48 TFILE
    49 TTXTFILE
    50 TMETER
    51 TSTRUCT

Memory Analysis
===============
      2425 Static variables

   Dynamic memory consume:
      Actual  Value:          0 bytes
      Highest Value:          0 bytes


Versao do sistema
=================
      Versao         :  7.10
      Release        :  10740
      Data Compilaçao:  06-05-2024 14:02:02
      SVN            :  7969
      Disco          :  Y: Total : 465.75 GB   Livre : 74.38 GB 
      CNPJEmp        :  
      PLANOSIS       :  1
      UpdateAuto     :  N

]]>

Code: Select all | Expand

Empresa
======== 
  Empresa:.01 -Filial:.01
  Fantasia:.EMPRESA TESTE
  Real:.EMPRESA TESTE
  Telefone:.
  Email:.
  Cidade:.SH/PR

Application
===========
   Path and name: Y:\Sistemas\Sig_Win\CompuRMT.exe (32 bits)
   Size: ********* bytes
   Time from start: 0 hours 0 mins 23 secs 
   Error occurred at: 12/03/25, 16:48:06
   Error description: 

Stack Calls
===========
   Called from: .\source\classes\meter.prg => TMETER:PAINT(247) 
   Called from: .\source\classes\meter.prg => TMETER:DISPLAY(236) 
   Called from: .\source\classes\control.prg => TMETER:HANDLEEVENT(1843) 
   Called from: .\source\classes\window.prg => _FWH(14) 
   Called from:  => SYSREFRESH(0) 
   Called from: .\source\internal\system.prg => SYSWAIT(13) 
   Called from: Y:\SISTEMAS\SIG_WIN\RPO\CompuUDM\UDMA900.RPO => CARGANCM2024(1699) 
   Called from: Y:\SISTEMAS\SIG_WIN\RPO\CompuUDM\UDMA900.RPO => CARGASVIAFTP(524) 
   Called from: .\PRG\CompuRmt.PRG => LOGABERT(1152) 
   Called from: .\PRG\CompuRmt.PRG => (b)MAIN(673) 
   Called from: .\source\classes\window.prg => TWINDOW:ACTIVATE(1120) 
   Called from: .\PRG\CompuRmt.PRG => MAIN(673) 

System
======
   CPU type: Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz 2794 Mhz
   Hardware memory:      16290 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)
   Windows version: 6.2, Build 9200 
   Fivewin: FWH 25.01


Variables in use
================
   Procedure     Type   Value
   ==========================
   TMETER:PAINT
     Local   1:    O    Class: TMETER
     Local   2:    N             0
     Local   3:    U    NIL
     Local   4:    U    
     Local   5:    U    NIL
     Local   6:    C    "Processando..."
     Local   7:    N             0
     Local   8:    N             0
     Local   9:    U    NIL
     Local  10:    U    NIL
   TMETER:DISPLAY
     Local   1:    O    Class: TMETER
   TMETER:HANDLEEVENT
     Param   1:    N            15
     Param   2:    N             0
     Param   3:    N             0
     Local   1:    O    Class: TMETER
     Local   2:    U    NIL
   _FWH
     Param   1:    N             0
     Param   2:    N            15
     Param   3:    N             0
     Param   4:    N             0
     Param   5:    N            15
     Local   1:    O    Class: TMETER
   SYSREFRESH
   SYSWAIT
     Param   1:    N             1
     Local   1:    N         60487.82
   CARGANCM2024
     Local   1:    L    F
     Local   2:    L    F
     Local   3:    A    Len:     0
     Local   4:    A    Len:     5
                               1          O   :-_-{ TDIALOG Object }:
                               2          O   :-_-{ TMETER Object }:
                               3          O   :-_-{ TSTSAY Object }:
                               4          O   :-_-{ TSAY Object }:
                               5          N   :         0:
     Local   5:    N             0
     Local   6:    L    F
     Local   7:    C    "Y:\SISTEMAS\SIG_WIN\Dados\NCM010"
   CARGASVIAFTP
     Param   1:    L    T
     Local   1:    C    ""
     Local   2:    L    T
     Local   3:    A    Len:     3
                               1          C   :SM0:
                               2          N   :         1:
                               3          N   :         1:
     Local   4:    C    "Y:\SISTEMAS\SIG_WIN\Dados\NCM010.dbf"
     Local   5:    C    "Y:\SISTEMAS\SIG_WIN\Dados\NCM010"
     Local   6:    C    "NCM"
     Local   7:    C    "11/03/25"
     Local   8:    O    Class: TINI
     Local   9:    N             6
     Local  10:    N             0
     Local  11:    N             6
     Local  12:    L    T
     Local  13:    A    Len:     6
                               1          C   :ALQ:
                               2          C   :ANP:
                               3          C   :AVS:
                               4          C   :CBF:
                               5          C   :CES:
                               6          C   :NCM:
     Local  14:    A    Len:     6
                               1          L   :F:
                               2          L   :T:
                               3          L   :F:
                               4          L   :F:
                               5          L   :F:
                               6          L   :F:
     Local  15:    L    T
   LOGABERT
     Param   1:    L    F
     Param   2:    L    T
     Param   3:    L    T
     Param   4:    L    T
     Param   5:    L    F
     Param   6:    L    T
     Local   1:    L    T
     Local   2:    L    F
     Local   3:    O    Class: TDIALOG
     Local   4:    U    NIL
     Local   5:    U    NIL
     Local   6:    U    NIL
     Local   7:    N             0
     Local   8:    U    NIL
     Local   9:    U    NIL
     Local  10:    C    ""
     Local  11:    A    Len:     0
     Local  12:    C    ""
   (b)MAIN
     Param   1:    O    Class: TWINDOW
   TWINDOW:ACTIVATE
     Param   1:    C    "MAXIMIZED"
     Param   2:    U    NIL
     Param   3:    U    NIL
     Param   4:    U    NIL
     Param   5:    U    NIL
     Param   6:    U    NIL
     Param   7:    B    {|| Block }
     Param   8:    B    {|| Block }
     Param   9:    U    NIL
     Param  10:    U    NIL
     Param  11:    U    NIL
     Param  12:    U    NIL
     Param  13:    U    NIL
     Param  14:    U    NIL
     Param  15:    U    NIL
     Param  16:    U    NIL
     Param  17:    B    {|| Block }
     Param  18:    U    NIL
     Param  19:    U    NIL
     Param  20:    L    F
     Param  21:    U    NIL
     Local   1:    O    Class: TWINDOW
     Local   2:    U    NIL
     Local   3:    U    NIL
   MAIN
     Local   1:    U    NIL
     Local   2:    U    NIL
     Local   3:    U    NIL
     Local   4:    U    NIL
     Local   5:    U    NIL
     Local   6:    U    NIL
     Local   7:    C    "Release {dt}{h}: {12/03/25}{16:40:49}"
     Local   8:    C    "xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)"
     Local   9:    C    "FWH 25.01"
     Local  10:    N           680
     Local  11:    L    T
     Local  12:    L    F
     Local  13:    L    T
     Local  14:    O    Class: TCURSOR
     Local  15:    C    "10740"
     Local  16:    C    "ReleasePAF .003.000"
     Local  17:    C    "ReleasePDV .003.321"
     Local  18:    C    "ReleaseNFe .003.029"
     Local  19:    C    "ReleaseSql .003.015"
     Local  20:    A    Len:     0
     Local  21:    A    Len:     0
     Local  22:    U    NIL
     Local  23:    O    Class: TFONT

Linked RDDs
===========
   DBF
   DBFFPT
   SIXCDX
   DBFBLOB
   DBFCDX
   DBFNTX
   ADS
   ADT
   ADSVFP
   ADSCDX
   ADSNTX

DataBases in use
================

  1:    MNT              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         12           12      .F.   .F.

     Indexes in use                           TagName
        => CODUSUARIO+INICONEXAO              TAG_MNT_01
           USUREDE                            TAG_MNT_02
           HOST                               TAG_MNT_03
           IP                                 TAG_MNT_04
           INICONEXAO                         TAG_MNT_05
           AMBIENTE+USUREDE                   TAG_MNT_06
           NOMUSUARIO                         TAG_MNT_07
           FUNCAO                             TAG_MNT_08
           ROTINA                             TAG_MNT_09
           SETOR                              TAG_MNT_10
           DEPARTAMEN                         TAG_MNT_11
           COD_FIL                            TAG_MNT_12
           EMPRESA                            TAG_MNT_13
           MODULO                             TAG_MNT_14

     Relations in use

  2:    HLP              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         20           28      .F.   .F.

     Indexes in use                           TagName
        => VARIAVEL                           TAG_TOP_01
           ALIAS+VARIAVEL                     TAG_TOP_02
           FUNNAME+VARIAVEL                   TAG_TOP_03

     Relations in use

  3:    TOP              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            4      .F.   .F.

     Indexes in use                           TagName
        => ID                                 TAG_TOP_01

     Relations in use

  4:    USU              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            3      .F.   .F.

     Indexes in use                           TagName
        => CodUsu                             TAG_USU_01
           NomUsu                             TAG_USU_02
           SenUsu                             TAG_USU_03

     Relations in use

  5:    SM0              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => M0_CODIGO+M0_CODFIL                TAG_EMP_01

     Relations in use

  6:    MOD              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         16           17      .F.   .F.

     Indexes in use                           TagName
           ID                                 TAG_MOD_01
           NOME                               TAG_MOD_02
        => DESC                               TAG_MOD_03

     Relations in use

  7:    PER              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         24           23      .F.   .T.

     Indexes in use                           TagName
        => CODUSU+CODEMP+CODFIL+MODULO        TAG_PER_01
           CODUSU+CODEMP+CODFIL+ARQMNU        TAG_PER_02

     Relations in use

  8:    SX1              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            2      .F.   .F.

     Indexes in use                           TagName
        => X1_GRUPO+X1_ORDEM                  TAG_SX1_01
           X1_GRUPO+X1_VARIAVL+X1_ORDEM       TAG_SX1_02
           X1_GRUPO+X1_VARIAVL+X1_VAR01       TAG_SX1_03

     Relations in use

  9:    SX2              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        241          240      .F.   .T.

     Indexes in use                           TagName
        => X2_CHAVE                           TAG_SX2_01
           X2_ARQUIVO                         TAG_SX2_02

     Relations in use

 10:    SX3              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
       5489         5944      .F.   .F.

     Indexes in use                           TagName
        => X3_ARQUIVO+X3_ORDEM                TAG_SX3_01
           X3_CAMPO+X3_ARQUIVO                TAG_SX3_02
           X3_ARQUIVO+X3_FOLDER               TAG_SX3_03
           X3_ARQUIVO+X3_CAMPO                TAG_SX3_04

     Relations in use

 11:    SX4              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => X4_FILIAL+DTOS(X4_DATA)+X4_CODUSU  TAG_SX4_01
           X4_FILIAL+DTOS(X4_DATA)+X4_NOMUSU  TAG_SX4_02
           X4_FILIAL+DTOS(X4_DTCOMP)+X4_CODUSU
                                              TAG_SX4_03
           X4_FILIAL+X4_CODUSU+DTOS(X4_DATA)+X4_HORA
                                              TAG_SX4_04
           X4_FILIAL+DTOS(X4_DATA)+X4_HORA    TAG_SX4_05
           X4_FILIAL+X4_CODUSU+DTOS(X4_DTCOMP)+X4_HRCOMP
                                              TAG_SX4_06
           X4_FILIAL+DTOS(X4_DTCOMP)+X4_HRCOMP
                                              TAG_SX4_07
           X4_FILIAL+X4_NOMUSU                TAG_SX4_08

     Relations in use

 12:    SX6              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        201          451      .F.   .F.

     Indexes in use                           TagName
        => X6_VAR                             TAG_SX6_01

     Relations in use

 13:    SX7              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          938      .F.   .F.

     Indexes in use                           TagName
        => X7_CAMPO+X7_SEQUENC                TAG_SX6_01

     Relations in use

 14:    SIX              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        876          950      .F.   .F.

     Indexes in use                           TagName
        => INDICE+ORDEM                       TAG_SIX_01
           CHAVE                              TAG_SIX_02

     Relations in use

 15:    SIY              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          2          108      .F.   .F.

     Indexes in use                           TagName
        => INDICE+ORDEM+CAMPO                 TAG_SIY_01

     Relations in use

 16:    SXA              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         34           48      .F.   .F.

     Indexes in use                           TagName
        => XA_ALIAS+XA_ORDEM                  TAG_SXA_01

     Relations in use

 17:    SXB              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        949         1113      .F.   .F.

     Indexes in use                           TagName
        => XB_ALIAS+XB_TIPO+XB_SEQ+XB_COLUNA  TAG_SXB_01
           XB_ALIAS+XB_TIPO+XB_COLUNA+XB_SEQ  TAG_SXB_02

     Relations in use

 18:    SXC              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
         12           61      .F.   .F.

     Indexes in use                           TagName
        => XC_CAMPO+XC_RAMO+XC_SEGMENT        TAG_SXC_01

     Relations in use

 19:    SXE              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            5      .F.   .F.

     Indexes in use                           TagName

     Relations in use

 20:    SXF              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => XF_FILIAL+XF_MODULO+XF_USUARIO+XF_TIPO+DESCEND(DTOS(XF_DATA))+DESCEND(XF_HORA)
                                              TAG_SXF_01
           XF_FILIAL+XF_MODULO+XF_USUARIO+XF_TIPO+XF_FUNCAO+XF_PARAMET
                                              TAG_SXF_02
           XF_FILIAL+XF_MODULO+XF_USUARIO+XF_FUNCAO+XF_PARAMET+XF_TIPO
                                              TAG_SXF_03

     Relations in use

 21:    LOG              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => CALIAS+DTOS(DATA)                  TAG_LOG_01
           USU +CALIAS+DTOS(DATA)             TAG_LOG_02
           DTOS(DATA)                         TAG_LOG_03
           USU + DTOS(DATA)                   TAG_LOG_04
           UPPER( MODU ) + DTOS(DATA)         TAG_LOG_05
           USU + UPPER( MODU ) + DTOS(DATA)   TAG_LOG_06

     Relations in use

 22:    SXG              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        132          414      .F.   .F.

     Indexes in use                           TagName
        => XG_MODULO+XG_ORDEM+XG_CODUSU       TAG_SXG_01
           XG_CODUSU+XG_FUNCAO                TAG_SXG_02
           XG_MODULO+XG_CODUSU+XG_ORDEM       TAG_SXG_03

     Relations in use

 23:    SM2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          4            4      .F.   .F.

     Indexes in use                           TagName
        => Upper(M2_FILIAL+DESCEND(DTOS(M2_DATA))+DESCEND(M2_SEQ))
                                              SM201001
           Upper(M2_FILIAL+DTOS(M2_DATA))     SM201002

     Relations in use

 24:    SX5              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1         2813      .F.   .F.

     Indexes in use                           TagName
        => Upper(X5_FILIAL+X5_TABELA+X5_CHAVE)
                                              SX501001
           Upper(X5_FILIAL+X5_TABELA+substr(X5_DESCRI,1,100))
                                              SX501002

     Relations in use

 25:    AGE              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(GE_FILIAL+GE_TIPO+DESCEND(DTOS(GE_DTAGE)))
                                              AGE01001
           Upper(GE_FILIAL+GE_TIPO+DESCEND(DTOS(GE_DTCAD)))
                                              AGE01002
           Upper(GE_FILIAL+GE_NOMCLI)         AGE01003
           Upper(GE_FILIAL+GE_CODCLI)         AGE01004
           Upper(GE_FILIAL+GE_TIPO+DTOS(GE_DTAGE))
                                              AGE01005

     Relations in use

 26:    TEL              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(EL_FILIAL+EL_NOMEFON)        TEL01001
           Upper(EL_FILIAL+EL_FONEFON)        TEL01002
           Upper(EL_FILIAL+EL_FANTASI)        TEL01003
           Upper(EL_FILIAL+EL_CODFON)         TEL01004

     Relations in use

 27:    SA1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => Upper(A1_FILIAL+A1_CODCLI)         SA101001
           Upper(A1_FILIAL+A1_NOMCLI)         SA101002
           Upper(A1_FILIAL+STRZERO(MONTH(A1_DTNASCL),2)+STRZERO(DAY(A1_DTNASCL),2)+A1_NOMCLI)
                                              SA101003
           Upper(A1_FILIAL+(STRZERO(MONTH(A1_DTNASCO),2)+STRZERO(DAY(A1_DTNASCO),2)))
                                              SA101004
           Upper(A1_FILIAL+A1_CIDCLI+A1_NOMCLI)
                                              SA101005
           Upper(A1_FILIAL+DTOS(A1_DTCAD))    SA101006
           Upper(A1_FILIAL+A1_FANTASI)        SA101007
           Upper(A1_FILIAL+A1_CICLI)          SA101008
           Upper(A1_FILIAL+A1_CODVEND+A1_CODCLI)
                                              SA101009
           Upper(A1_FILIAL+A1_CODVEND+A1_NOMCLI)
                                              SA101010
           Upper(A1_FILIAL+A1_ROTA)           SA101011
           Upper(A1_FILIAL+A1_UFCLI+A1_CODCLI)
                                              SA101012
           Upper(A1_FILIAL+A1_UFCLI+A1_NOMCLI)
                                              SA101013
           Upper(A1_FILIAL+A1_CODCLI+A1_EXPORTA)
                                              SA101014
           Upper(A1_FILIAL+A1_UFCLI+A1_CIDCLI+A1_NOMCLI)
                                              SA101015

     Relations in use

 28:    SF5              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            2      .F.   .F.

     Indexes in use                           TagName
        => Upper(F5_FILIAL+F5_CODIGO)         SF501001
           Upper(F5_FILIAL+F5_DESC)           SF501002

     Relations in use

 29:    SB1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B1_FILIAL+B1_CODPRO)         SB101001
           Upper(B1_FILIAL+B1_DESPRO)         SB101002
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_CODPRO)
                                              SB101003
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_DESPRO)
                                              SB101004
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_MARCA+B1_DESPRO)
                                              SB101005
           Upper(B1_FILIAL+B1_GRUPRO+B1_SGRUPRO+B1_REF)
                                              SB101006
           Upper(B1_FILIAL+B1_MARCA+B1_DESPRO+B1_REF)
                                              SB101007
           Upper(B1_FILIAL+B1_CODBARR)        SB101008
           Upper(B1_FILIAL+B1_REF)            SB101009
           Upper(B1_FILIAL+DTOS(B1_DTCAD))    SB101010
           Upper(B1_FILIAL+B1_TIPO+B1_GRUPRO+B1_SGRUPRO+B1_CODPRO)
                                              SB101011
           Upper(B1_FILIAL+B1_TAMANHO+B1_DESPRO)
                                              SB101012
           Upper(B1_FILIAL+B1_CODGRAD)        SB101013
           Upper(B1_FILIAL+B1_TECRAPI)        SB101014
           Upper(B1_FILIAL+B1_CODEMBA)        SB101015

     Relations in use

 30:    SFB              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1           26      .F.   .F.

     Indexes in use                           TagName
        => Upper(FB_FILIAL+FB_COD+FB_CODECF)  SFB01001
           Upper(FB_FILIAL+FB_CODECF+FB_COD)  SFB01002
           Upper(FB_FILIAL+FB_DESC)           SFB01003

     Relations in use

 31:    SA3              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            1      .F.   .F.

     Indexes in use                           TagName
        => Upper(A3_FILIAL+A3_CODVEN)         SA301001
           Upper(A3_FILIAL+A3_NOME)           SA301002
           Upper(A3_FILIAL+STRZERO(MONTH(A3_DTNASC),2)+STRZERO(DAY(A3_DTNASC),2)+A3_NOME)
                                              SA301003
           Upper(A3_FILIAL+A3_GERENTE)        SA301004
           A3_CODVEN                          SA39999

     Relations in use

 32:    SAF              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(AF_FILIAL+AF_CODVEN)         SAF01001

     Relations in use

 33:    SF2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_CLIENTE+DTOS(F2_DTEMISS))
                                              SF201001
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_VEND+DTOS(F2_DTEMISS))
                                              SF201002
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+F2_DOC+F2_TRANSP+DTOS(F2_DTEMISS))
                                              SF201003
           Upper(F2_FILIAL+DTOS(F2_DTEMISS)+F2_CLIENTE+F2_SERIE+F2_DOC)
                                              SF201004
           Upper(F2_FILIAL+DTOS(F2_DTEMISS)+F2_VEND+F2_SERIE+F2_DOC)
                                              SF201005
           Upper(F2_FILIAL+F2_CLIENTE+F2_SERIE+F2_DOC+DTOS(F2_DTEMISS))
                                              SF201006
           Upper(F2_FILIAL+F2_CLIENTE+DTOS(F2_DTEMISS)+F2_SERIE+F2_DOC)
                                              SF201007
           Upper(F2_FILIAL+F2_VEND+F2_SERIE+F2_DOC+DTOS(F2_DTEMISS))
                                              SF201008
           Upper(F2_FILIAL+F2_VEND+DTOS(F2_DTEMISS)+F2_SERIE+F2_DOC)
                                              SF201009
           Upper(F2_FILIAL+DTOS(F2_DTENTRE)+F2_HORA)
                                              SF201010
           Upper(F2_FILIAL+F2_TIPIMP+F2_SERIE+DESCEND(F2_DOC))
                                              SF201011
           Upper(F2_FILIAL+F2_NOMCLI+DTOS(F2_DTEMISS)+F2_TIPIMP+F2_SERIE+F2_DOC)
                                              SF201012
           Upper(F2_FILIAL+F2_NFEID)          SF201013
           Upper(F2_FILIAL+F2_NSERECF+F2_LIMFECF+F2_CUPFIS)
                                              SF201014
           Upper(F2_FILIAL+F2_PEDIDO)         SF201015

     Relations in use

 34:    NFS              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(NFS_FILIAL+NFS_SERIE+NFS_DOC)
                                              NFS01001
           Upper(NFS_FILIAL+NFS_CHNFE)        NFS01002
           Upper(NFS_FILIAL+NFS_SITUAC+NFS_SERIE+NFS_DOC)
                                              NFS01003
           Upper(NFS_FILIAL+NFS_STATUS+NFS_SERIE+NFS_DOC)
                                              NFS01004
           Upper(NFS_FILIAL+NFS_TIPDOC+NFS_SERIE+NFS_DOC+NFS_CLIFOR)
                                              NFS01005
           Upper(NFS_FILIAL+NFS_STATUS+NFS_SERIE+descend(NFS_DOC))
                                              NFS01006
           Upper(NFS_FILIAL+NFS_SERIE+descend(NFS_DOC))
                                              NFS01007
           Upper(NFS_FILIAL+NFS_SITUAC+NFS_SERIE+descend(NFS_DOC))
                                              NFS01008
           Upper(NFS_FILIAL+NFS_MODEMI+NFS_SITUAC+NFS_SERIE+NFS_DOC)
                                              NFS01009
           Upper(NFS_FILIAL+DTOS(NFS_DIGITA)+NFS_SERIE+NFS_DOC)
                                              NFS01010
           Upper(NFS_FILIAL+NFS_SERIE+DTOS(NFS_AUTORI)+NFS_DOC)
                                              NFS01011

     Relations in use

 35:    SD2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_ITEM)
                                              SD201001
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+DTOS(D2_DTEMISS))
                                              SD201002
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_CLIENTE+D2_ITEM)
                                              SD201003
           Upper(D2_FILIAL+D2_TIPIMP+D2_SERIE+D2_DOC+D2_PRODUTO+D2_ALMOX+D2_LOTE)
                                              SD201004
           Upper(D2_FILIAL+DTOS(D2_DTEMISS)+D2_SERIE+D2_DOC)
                                              SD201005
           Upper(D2_FILIAL+D2_CLIENTE+D2_SERIE+D2_DOC)
                                              SD201006
           Upper(D2_FILIAL+D2_PRODUTO+D2_SERIE+D2_DOC)
                                              SD201007
           Upper(D2_FILIAL+D2_PEDIDO+D2_SERIE+D2_DOC+D2_ITEM)
                                              SD201008
           Upper(D2_FILIAL+D2_TPIMORI+D2_SERORI+D2_NFORI+D2_CLIENTE+D2_PRODUTO+D2_ALMOX+D2_LOTE)
                                              SD201009
           Upper(D2_FILIAL+D2_NSERECF+D2_LIMFECF+D2_CUPFIS+D2_ITEM)
                                              SD201010
           Upper(D2_FILIAL+D2_TIPIMP+DTOS(D2_DTEMISS))
                                              SD201011
           Upper(D2_FILIAL+D2_PRODUTO+DESCEND(DTOS(D2_DTEMISS)))
                                              SD201012

     Relations in use

 36:    SDM              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(DM_FILIAL+DM_TIPIMP+DM_SERIE+DM_DOC+DM_ITEM)
                                              SDM01001

     Relations in use

 37:    FE1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(FE_FILIAL+FE_MESANO)         FE101001
           Upper(FE_FILIAL+FE_ANO)            FE101002

     Relations in use

 38:    SB9              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B9_FILIAL+B9_CODPRO+B9_ALMOX+B9_GRADE)
                                              SB901001
           Upper(B9_FILIAL+B9_DESPRO)         SB901002
           Upper(B9_FILIAL+B9_CODBARR)        SB901003
           Upper(B9_FILIAL+B9_CODPRO+B9_COLUNA+B9_LINHA)
                                              SB901004

     Relations in use

 39:    SF4              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1           99      .F.   .F.

     Indexes in use                           TagName
        => Upper(F4_FILIAL+F4_CODFISC)        SF401001
           Upper(F4_FILIAL+F4_CFOP)           SF401002
           Upper(F4_FILIAL+F4_DESFISC)        SF401003
           Upper(F4_FILIAL+F4_SCFOP)          SF401004

     Relations in use

 40:    PCC              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          562      .F.   .F.

     Indexes in use                           TagName
        => Upper(CC_FILIAL+CC_CONTA)          PCC01001
           Upper(CC_FILIAL+CC_DESCON)         PCC01002
           Upper(CC_FILIAL+CC_CODIGO)         PCC01003

     Relations in use

 41:    SB2              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(B2_FILIAL+B2_CODPRO+B2_ALMOX)
                                              SB201001
           Upper(B2_FILIAL+B2_DESPRO+B2_ALMOX)
                                              SB201002
           Upper(B2_FILIAL+B2_ALMOX+B2_CODPRO)
                                              SB201003
           Upper(B2_FILIAL+B2_ALMOX+B2_DESPRO)
                                              SB201004
           Upper(B2_FILIAL+B2_GRADE)          SB201005

     Relations in use

 42:    SD3              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D3_FILIAL+D3_COD+D3_TM)      SD301001
           Upper(D3_FILIAL+D3_COD+D3_ALMOX+D3_LOTE+DTOS(D3_EMISSAO))
                                              SD301002
           Upper(D3_FILIAL+D3_COD+D3_OP+D3_SEQ)
                                              SD301003
           Upper(D3_FILIAL+D3_COD+D3_OP+D3_DOC)
                                              SD301004
           Upper(D3_FILIAL+D3_DESC)           SD301005
           Upper(D3_FILIAL+D3_TM+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301006
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301007
           Upper(D3_FILIAL+D3_COD+DTOS(D3_EMISSAO))
                                              SD301008
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_ROTINA)
                                              SD301009
           Upper(D3_FILIAL+DTOS(D3_EMISSAO)+D3_VENCOMP+D3_COD)
                                              SD301010
           Upper(D3_FILIAL+D3_REF+D3_ALMOX+D3_VENCOMP+DTOS(D3_EMISSAO))
                                              SD301011
           Upper(D3_FILIAL+D3_COD+D3_CLIFOR+DTOS(D3_EMISSAO))
                                              SD301012
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_CLIFOR+D3_COD+D3_SEQ)
                                              SD301013
           Upper(D3_FILIAL+D3_TM+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301014
           Upper(D3_FILIAL+D3_TIPIMP+D3_SERIE+D3_DOC+D3_COD+D3_ALMOX+D3_LOTE+D3_SEQ)
                                              SD301015

     Relations in use

 43:    SE1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(E1_FILIAL+E1_PREFIXO+E1_NUMDUP+E1_NUMPARC+E1_CODCLI+E1_CODHIST+E1_CODTIPO+DTOS(E1_DTEMIS))
                                              SE101001
           Upper(E1_FILIAL+E1_PREFIXO+E1_NUMDUP+E1_CODCLI)
                                              SE101002
           Upper(E1_FILIAL+E1_CODCLI+E1_PREFIXO+E1_NUMDUP+E1_NUMPARC+DTOS(E1_DTVENC))
                                              SE101003
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTPAGO)+DTOS(E1_DTVENC))
                                              SE101004
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTVENC))
                                              SE101005
           Upper(E1_FILIAL+E1_CODCLI+DTOS(E1_DTEMIS))
                                              SE101006
           Upper(E1_FILIAL+DTOS(E1_DTPAGO)+E1_CODTIPO)
                                              SE101007
           Upper(E1_FILIAL+DTOS(E1_DTVENC)+E1_CODTIPO)
                                              SE101008
           Upper(E1_FILIAL+DTOS(E1_DTEMIS)+E1_CODCLI)
                                              SE101009
           Upper(E1_FILIAL+E1_SITUA+DTOS(E1_DTVENC))
                                              SE101010
           Upper(E1_FILIAL+E1_VENDEDO+DTOS(E1_DTPAGO))
                                              SE101011
           Upper(E1_FILIAL+E1_NOME+DTOS(E1_DTEMIS))
                                              SE101012
           Upper(E1_FILIAL+E1_CHAVDES)        SE101013
           Upper(E1_FILIAL+E1_COMITIT)        SE101014
           Upper(E1_FILIAL+E1_BOLETON)        SE101015

     Relations in use

 44:    SF1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_FORNECE+DTOS(F1_DTEMISS))
                                              SF101001
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_COMP+DTOS(F1_DTEMISS))
                                              SF101002
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+F1_DOC+F1_TRANSP+DTOS(F1_DTEMISS))
                                              SF101003
           Upper(F1_FILIAL+DTOS(F1_DTEMISS)+F1_FORNECE+F1_SERIE+F1_DOC)
                                              SF101004
           Upper(F1_FILIAL+DTOS(F1_DTEMISS)+F1_COMP+F1_SERIE+F1_DOC)
                                              SF101005
           Upper(F1_FILIAL+F1_FORNECE+F1_SERIE+F1_DOC+DTOS(F1_DTEMISS))
                                              SF101006
           Upper(F1_FILIAL+F1_FORNECE+DTOS(F1_DTEMISS)+F1_SERIE+F1_DOC)
                                              SF101007
           Upper(F1_FILIAL+F1_COMP+F1_SERIE+F1_DOC+DTOS(F1_DTEMISS))
                                              SF101008
           Upper(F1_FILIAL+F1_COMP+DTOS(F1_DTEMISS)+F1_SERIE+F1_DOC)
                                              SF101009
           Upper(F1_FILIAL+DTOS(F1_DTENTRE)+F1_HORA)
                                              SF101010
           Upper(F1_FILIAL+F1_TIPIMP+F1_SERIE+DESCEND(F1_DOC))
                                              SF101011
           Upper(F1_FILIAL+F1_NOMFOR+DTOS(F1_DTENTRE)+F1_TIPIMP+F1_SERIE+F1_DOC)
                                              SF101012
           Upper(F1_FILIAL+F1_NFEID)          SF101013
           Upper(F1_FILIAL+DTOS(F1_DTENTRE)+F1_FORNECE+F1_SERIE+F1_DOC)
                                              SF101014
           Upper(F1_FILIAL+F1_TIPIMP+F1_DOC)  SF101015

     Relations in use

 45:    SD1              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1            0      .T.   .T.

     Indexes in use                           TagName
        => Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_ITEM)
                                              SD101001
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101002
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_FORNECE+D1_ITEM)
                                              SD101003
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_PRODUTO+D1_ALMOX+D1_LOTE)
                                              SD101004
           Upper(D1_FILIAL+DTOS(D1_DTEMISS)+D1_SERIE+D1_DOC+D1_FORNECE)
                                              SD101005
           Upper(D1_FILIAL+D1_FORNECE+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101006
           Upper(D1_FILIAL+D1_PRODUTO+D1_SERIE+D1_DOC+DTOS(D1_DTEMISS))
                                              SD101007
           Upper(D1_FILIAL+D1_PEDIDO+D1_SERIE+D1_DOC+D1_ITEM)
                                              SD101008
           Upper(D1_FILIAL+D1_TPIMORI+D1_SERORI+D1_NFORI+D1_FORNECE+D1_PRODUTO+D1_ALMOX+D1_LOTE)
                                              SD101009
           Upper(D1_FILIAL+DTOS(D1_DTENTRE)+D1_SERIE+D1_DOC+D1_FORNECE)
                                              SD101010
           Upper(D1_FILIAL+D1_PRODUTO+DESCEND(DTOS(D1_DTEMISS)))
                                              SD101011
           Upper(D1_FILIAL+DTOS(D1_DTENTRE)+D1_PRODUTO)
                                              SD101012
           Upper(D1_FILIAL+D1_FORNECE+D1_PRODUTO+DESCEND(DTOS(D1_DTEMISS)))
                                              SD101013
           Upper(D1_FILIAL+D1_TIPIMP+D1_SERIE+D1_DOC+D1_FORNECE+D1_PRODUTO+D1_ITEM)
                                              SD101014

     Relations in use

 46:    LSN              <Compartilhado>   RddName: DBFCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          4           68      .F.   .F.

     Indexes in use                           TagName
        => Upper(SN_FILIAL+SN_TIPIMP+SN_SERIE+SN_NUMERO)
                                              LSN01001
           Upper(SN_FILIAL+SN_TIPIMP+SN_NUMERO+SN_SERIE)
                                              LSN01002
           Upper(SN_FILIAL+SN_SERIE+SN_TIPIMP+SN_NUMERO)
                                              LSN01003
           Upper(SN_FILIAL+SN_SERIE+SN_NUMERO+SN_TIPIMP)
                                              LSN01004

     Relations in use

 47:    ALQ              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          729      .F.   .F.

     Indexes in use                           TagName
           Upper(LQ_FILIAL+LQ_UFORIG+LQ_UFDEST)
                                              ALQ01001
           Upper(LQ_FILIAL+LQ_UFDEST+LQ_UFORIG)
                                              ALQ01002

     Relations in use

 48:    ANP              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1         1032      .F.   .F.

     Indexes in use                           TagName
           Upper(NP_FILIAL+NP_CODPROD)        ANP01001

     Relations in use

 49:    AVS              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1        27328      .F.   .F.

     Indexes in use                           TagName
           Upper(VS_FILIAL+VS_REGISTR)        AVS01001
           Upper(VS_FILIAL+VS_CMED)           AVS01002
           Upper(VS_FILIAL+VS_EAN1)           AVS01003
           Upper(VS_FILIAL+VS_EAN2)           AVS01004
           Upper(VS_FILIAL+VS_EAN3)           AVS01005

     Relations in use

 50:    CBF              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
          1          484      .F.   .F.

     Indexes in use                           TagName
           Upper(CBF_FILIAL+CBF_CBENEF)       CBF01001

     Relations in use

 51:    CES              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
        961         2003      .F.   .F.

     Indexes in use                           TagName
           Upper(ES_FILIAL+ES_COD)            CES01001
           Upper(ES_FILIAL+ES_NOM)            CES01002

     Relations in use

 52: => NCM              <Compartilhado>   RddName: SIXCDX
     ==============================
     RecNo    RecCount    BOF   EOF
      42942        53736      .F.   .F.

     Indexes in use                           TagName
           Upper(CM_FILIAL+CM_COD)            NCM01001
           Upper(CM_FILIAL+CM_NOM)            NCM01002
           Upper(CM_FILIAL+CM_IBPT_TP+CM_COD) NCM01003

     Relations in use

     --- Conteudo do registro corrente --------------------------
      CM_EMPORI: 01
      CM_FILIAL: 01
      CM_FILORI: 01
         CM_COD: 00000000  
         CM_NOM: PRODUTO NAO ESPECIFICADO NA LISTA DE NCM                         
      CM_DESCEX:                                                                                                                                                                                                         
     CM_CESTCOD:        
     CM_CODICMS:   
        CM_ICMS:           0.00
      CM_CODECF:      
     CM_REDALIQ:           0.00
     CM_REDALII:           0.00
     CM_ORIMERC:  
      CM_CODCST:   
         CM_CST:    
     CM_CODCSTE:   
      CM_CSTENT:    
     CM_ICMSDIF:           0.00
     CM_CSTPISE:   
     CM_CSTCOFE:   
     CM_CSTPISS:   
     CM_CSTCOFS:   
     CM_REDPISE:           0.00
     CM_REDCOFE:           0.00
     CM_CODCREP:    
     CM_CODCREC:    
      CM_NATREC:    
     CM_ALIQ_TN:           7.85
     CM_ALIQ_TI:           9.85
        CM_ALIQ:           0.00
     CM_DT_ULTA:   /  /  
     CM_ALIQ_ES:          18.00
     CM_ALIQ_MU:           0.00
     CM_IBPT_DI: 20/09/24
     CM_IBPT_DF: 31/10/24
     CM_IBPT_CH: AB35A7
     CM_IBPT_VR: 24.2.C
     CM_IBPT_FO: IBPT/empresometro.com.br          
       CM_UTRIB:       
     CM_IBPT_TP: 0
     ------------------------------------------------------------

Classes in use:
===============
     1 ERROR
     2 HASHENTRY
     3 HBCLASS
     4 HBOBJECT
     5 HB_LOGGER
     6 HB_LOGCHANNEL
     7 HB_LOGCONSOLE
     8 HB_LOGFILE
     9 TFONT
    10 TINI
    11 TIMMERSIG
    12 TWINDOW
    13 TDIALOG
    14 TBRUSH
    15 TCONTROL
    16 TBITMAP
    17 TREG32
    18 TRECT
    19 OTBLOG
    20 TCURSOR
    21 TICON
    22 TBAR
    23 TSBUTTON
    24 TCHECKBOX
    25 TMSGBAR
    26 TMSGITEM
    27 TSTSAY
    28 TSLINES
    29 TIMAGE
    30 TVGET
    31 GET
    32 TGET
    33 TCLIPGET
    34 TCOMBOBOX
    35 TSAY
    36 TPROGRESS
    37 TIPCLIENT
    38 TIPCLIENTHTTP
    39 TURL
    40 TBTNBMP
    41 TFRXCFG
    42 TXMLDOCUMENT
    43 TXMLNODE
    44 TXMLITERATOR
    45 TXMLITERATORSCAN
    46 TMENU
    47 TMENUITEM
    48 TFILE
    49 TTXTFILE
    50 TMETER
    51 TSTRUCT

Memory Analysis
===============
      2425 Static variables

   Dynamic memory consume:
      Actual  Value:          0 bytes
      Highest Value:          0 bytes


Versao do sistema
=================
      Versao         :  7.10
      Release        :  10740
      Data Compilaçao:  06-05-2024 14:02:02
      SVN            :  7969
      Disco          :  Y: Total : 465.75 GB   Livre : 74.38 GB 
      CNPJEmp        :  
      PLANOSIS       :  1
      UpdateAuto     :  N

]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Erros conv. sistema para fw25-01 xharbour 1.31 :: Reply by Antonio Linares]]> 2025-03-12T14:53:51-06:00 2025-03-12T14:53:51-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45505&p=278337#p278337
Has modificado el sistema de errores y no aparece la descripción del error.

De todas formas en base a la línea en donde se da el error pudiera ser que la DATA ::nTotal del Meter valga cero, revísalo]]>

Has modificado el sistema de errores y no aparece la descripción del error.

De todas formas en base a la línea en donde se da el error pudiera ser que la DATA ::nTotal del Meter valga cero, revísalo]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Veri*Factu :: Reply by russimicro]]> 2025-03-05T18:57:11-07:00 2025-03-05T18:57:11-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45247&p=278170#p278170
Antonio es posible obtener el harbour y la version de c, con las lib externas para probar
FUNCTION EnviarFactura(cUrl, cSignedXmlFile)
oCurl := hb_curlEasyInit()

Dado que yo uso : xharbour comercial

Gracias
JONSSON RUSSI
Colombia]]>

Antonio es posible obtener el harbour y la version de c, con las lib externas para probar
FUNCTION EnviarFactura(cUrl, cSignedXmlFile)
oCurl := hb_curlEasyInit()

Dado que yo uso : xharbour comercial

Gracias
JONSSON RUSSI
Colombia]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Veri*Factu :: Reply by Antonio Linares]]> 2025-03-06T23:09:57-07:00 2025-03-06T23:09:57-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45247&p=278196#p278196

Code: Select all | Expand

#include "hbcurl.ch"

function EnviarFactura( cUrl, cSignedXmlFile )

    local hCurl, cSoapRequest, cSoapResponse, cFacturaXml

    cFacturaXml = MemoRead( cSignedXmlFile )

    // Crear la solicitud SOAP
    cSoapRequest = ;
        '<?xml version="1.0" encoding="UTF-8"?>' + ;
        '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:veri="http://www.aeat.es/VeriFactu">' + ;
        '<soapenv:Header/>' + ;
        '<soapenv:Body>' + ;
        '<veri:EnviarFactura>' + ;
        '<veri:FacturaXML><![CDATA[' + cFacturaXml + ']]></veri:FacturaXML>' + ;
        '</veri:EnviarFactura>' + ;
        '</soapenv:Body>' + ;
        '</soapenv:Envelope>'

    hCurl = curl_easy_init()
    curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
    curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cSoapRequest )
    curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, { "Content-Type: text/xml", "SOAPAction: EnviarFactura" } )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, "ruta_certificado.pem" )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTPASSWD, "password_certificado" )

    cSoapResponse = curl_easy_perform( hCurl )

    if Empty( cSoapResponse )
        MsgStop( "Error al enviar la factura." )
    else
        MsgInfo( "Respuesta del servidor: " + cSoapResponse )
    endif

    curl_easy_cleanup( hCurl )

return nil
]]>

Code: Select all | Expand

#include "hbcurl.ch"

function EnviarFactura( cUrl, cSignedXmlFile )

    local hCurl, cSoapRequest, cSoapResponse, cFacturaXml

    cFacturaXml = MemoRead( cSignedXmlFile )

    // Crear la solicitud SOAP
    cSoapRequest = ;
        '<?xml version="1.0" encoding="UTF-8"?>' + ;
        '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:veri="http://www.aeat.es/VeriFactu">' + ;
        '<soapenv:Header/>' + ;
        '<soapenv:Body>' + ;
        '<veri:EnviarFactura>' + ;
        '<veri:FacturaXML><![CDATA[' + cFacturaXml + ']]></veri:FacturaXML>' + ;
        '</veri:EnviarFactura>' + ;
        '</soapenv:Body>' + ;
        '</soapenv:Envelope>'

    hCurl = curl_easy_init()
    curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
    curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cSoapRequest )
    curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, { "Content-Type: text/xml", "SOAPAction: EnviarFactura" } )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, "ruta_certificado.pem" )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTPASSWD, "password_certificado" )

    cSoapResponse = curl_easy_perform( hCurl )

    if Empty( cSoapResponse )
        MsgStop( "Error al enviar la factura." )
    else
        MsgInfo( "Respuesta del servidor: " + cSoapResponse )
    endif

    curl_easy_cleanup( hCurl )

return nil
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Veri*Factu :: Reply by russimicro]]> 2025-03-07T08:33:59-07:00 2025-03-07T08:33:59-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45247&p=278212#p278212
Ya lo pude compilar, el xml está bien armado (lo envió con soapUI y llega a la DIAN),
pero desde la app de ejemplo, me genera en "cSoapResponse" el codigo "58"... ahora lo probe con un certificado .p12 y también con un .pem (convertido el .p12)]]>

Ya lo pude compilar, el xml está bien armado (lo envió con soapUI y llega a la DIAN),
pero desde la app de ejemplo, me genera en "cSoapResponse" el codigo "58"... ahora lo probe con un certificado .p12 y también con un .pem (convertido el .p12)]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Veri*Factu :: Reply by Antonio Linares]]> 2025-03-07T08:37:04-07:00 2025-03-07T08:37:04-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45247&p=278213#p278213 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Veri*Factu :: Reply by russimicro]]> 2025-03-07T10:12:36-07:00 2025-03-07T10:12:36-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45247&p=278220#p278220
Gracias]]>

Gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Veri*Factu :: Reply by russimicro]]> 2025-03-07T10:42:49-07:00 2025-03-07T10:42:49-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45247&p=278222#p278222 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Veri*Factu :: Reply by russimicro]]> 2025-03-13T06:18:49-06:00 2025-03-13T06:18:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45247&p=278348#p278348
Con el siguiente APP obtengo como respuesta este código : "58"...
Alguien usa esta clase : curl (curl_easy_init)

Gracias
JONSSON RUSSI

Code: Select all | Expand


#include "FiveWin.ch"
#include "hbcurl.ch"

function main()

local cUrl := "https://vpfe.dian.gov.co/WcfDianCustomerServices.svc"
local cSignedXmlFile := "E:\TEMP\XML_FIRMADO\z006331767200025SP104100000250_fv_B64"
local cNomZip := "z006331767200025SP104100000250.zip"

EnviarFactura( cUrl, cSignedXmlFile,cNomZip )

return


function EnviarFactura( cUrl, cSignedXmlFile, cNomZip )

    local hCurl, cSoapRequest, cSoapResponse, cFacturaXml

    cFilCer := "E:\ZERUS\FIRMA_ELECTRONICA\CERT\CERTIFICADO_29.P12"
    cClaCer := "DeexTz0tttreuQrTu2Lj0" 

    cFacturaXml = MemoRead( cSignedXmlFile )

    // Crear la solicitud SOAP
    cSoapRequest = ;
        '<?xml version="1.0" encoding="UTF-8"?>' + ;
        '<soapenv:Envelope xmlns:soapenv=http://www.w3.org/2003/05/soap-envelope xmlns:wcf=http://wcf.dian.colombia>' + ;
        '<soapenv:Header/>'+;
        '<soapenv:Body>' + ;
        '<wcf:SendBillSync>' + ;
        '<wcf:fileName>' + cNomZip +'</wcf:fileName>' + ;
        '<wcf:contentFile>' + cFacturaXml + '</wcf:contentFile>' + ;
        '</wcf:SendBillSync>' + ;
        '</soapenv:Body>' + ;
        '</soapenv:Envelope>'

   HB_MEMOWRIT( "PRUEBA.XML", cSoapRequest )

    hCurl = curl_easy_init()
    curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
    curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cSoapRequest )
    curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, { "Content-Type: application/soap+xml; charset=utf-8", "SOAPAction: http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync" } )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, cFilCer )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTPASSWD, cClaCer )

    cSoapResponse = curl_easy_perform( hCurl )


    if Empty( cSoapResponse )
        MsgStop( "Error al enviar la factura." )
    else
        MsgInfo( "Respuesta del servidor: " + if(valtype(cSoapResponse)=="C",cSoapResponse,STR(cSoapResponse) ) )
    endif

    curl_easy_cleanup( hCurl )

return nil

]]>

Con el siguiente APP obtengo como respuesta este código : "58"...
Alguien usa esta clase : curl (curl_easy_init)

Gracias
JONSSON RUSSI

Code: Select all | Expand


#include "FiveWin.ch"
#include "hbcurl.ch"

function main()

local cUrl := "https://vpfe.dian.gov.co/WcfDianCustomerServices.svc"
local cSignedXmlFile := "E:\TEMP\XML_FIRMADO\z006331767200025SP104100000250_fv_B64"
local cNomZip := "z006331767200025SP104100000250.zip"

EnviarFactura( cUrl, cSignedXmlFile,cNomZip )

return


function EnviarFactura( cUrl, cSignedXmlFile, cNomZip )

    local hCurl, cSoapRequest, cSoapResponse, cFacturaXml

    cFilCer := "E:\ZERUS\FIRMA_ELECTRONICA\CERT\CERTIFICADO_29.P12"
    cClaCer := "DeexTz0tttreuQrTu2Lj0" 

    cFacturaXml = MemoRead( cSignedXmlFile )

    // Crear la solicitud SOAP
    cSoapRequest = ;
        '<?xml version="1.0" encoding="UTF-8"?>' + ;
        '<soapenv:Envelope xmlns:soapenv=http://www.w3.org/2003/05/soap-envelope xmlns:wcf=http://wcf.dian.colombia>' + ;
        '<soapenv:Header/>'+;
        '<soapenv:Body>' + ;
        '<wcf:SendBillSync>' + ;
        '<wcf:fileName>' + cNomZip +'</wcf:fileName>' + ;
        '<wcf:contentFile>' + cFacturaXml + '</wcf:contentFile>' + ;
        '</wcf:SendBillSync>' + ;
        '</soapenv:Body>' + ;
        '</soapenv:Envelope>'

   HB_MEMOWRIT( "PRUEBA.XML", cSoapRequest )

    hCurl = curl_easy_init()
    curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
    curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cSoapRequest )
    curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, { "Content-Type: application/soap+xml; charset=utf-8", "SOAPAction: http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync" } )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, cFilCer )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTPASSWD, cClaCer )

    cSoapResponse = curl_easy_perform( hCurl )


    if Empty( cSoapResponse )
        MsgStop( "Error al enviar la factura." )
    else
        MsgInfo( "Respuesta del servidor: " + if(valtype(cSoapResponse)=="C",cSoapResponse,STR(cSoapResponse) ) )
    endif

    curl_easy_cleanup( hCurl )

return nil

]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Libros para aprender Clipper 5 o Harbour en PDF :: Author Antonio Linares]]> 2025-03-06T12:58:27-07:00 2025-03-06T12:58:27-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278186#p278186
A ser posible en Español

gracias!]]>

A ser posible en Español

gracias!]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Libros para aprender Clipper 5 o Harbour en PDF :: Reply by Antonio Linares]]> 2025-03-06T23:15:23-07:00 2025-03-06T23:15:23-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278198#p278198 https://github.com/FiveTechSoft/FWH_too ... IPPER5.pdf]]> https://github.com/FiveTechSoft/FWH_too ... IPPER5.pdf]]> <![CDATA[FiveWin para Harbour/xHarbour :: Re: Libros para aprender Clipper 5 o Harbour en PDF :: Reply by sysctrl2]]> 2025-03-07T09:06:15-07:00 2025-03-07T09:06:15-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278215#p278215 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Libros para aprender Clipper 5 o Harbour en PDF :: Reply by Antonio Linares]]> 2025-03-07T09:09:19-07:00 2025-03-07T09:09:19-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278216#p278216 ]]> ]]> <![CDATA[FiveWin para Harbour/xHarbour :: Re: Libros para aprender Clipper 5 o Harbour en PDF :: Reply by karinha]]> 2025-03-07T09:56:19-07:00 2025-03-07T09:56:19-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278218#p278218
https://vivaclipper.wordpress.com/2013/02/01/hbrun/

https://vivaclipper.wordpress.com/2013/ ... ies-tools/

Sencillo y fácil de buscar.

Gracias, tks.

Regards, saludos.]]>

https://vivaclipper.wordpress.com/2013/02/01/hbrun/

https://vivaclipper.wordpress.com/2013/ ... ies-tools/

Sencillo y fácil de buscar.

Gracias, tks.

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Libros para aprender Clipper 5 o Harbour en PDF :: Reply by MauroArevalo]]> 2025-03-07T16:57:01-07:00 2025-03-07T16:57:01-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278226#p278226
Antonio, tengo estos libros en mi biblioteca.

Image

No se si me equivoco y tu idea es alimentar la IA para que conozca mas de nuestro Clipper?

Si es asi en que se puede ayudar con los libros que no tengan (C) ?]]>

Antonio, tengo estos libros en mi biblioteca.

Image

No se si me equivoco y tu idea es alimentar la IA para que conozca mas de nuestro Clipper?

Si es asi en que se puede ayudar con los libros que no tengan (C) ?]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Libros para aprender Clipper 5 o Harbour en PDF :: Reply by Antonio Linares]]> 2025-03-07T17:06:11-07:00 2025-03-07T17:06:11-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278227#p278227
Muchas gracias!

Lo ideal es conseguirlos en PDF para poder usarlos digitalmente.

No se si será fácil conseguirlos en PDF...]]>

Muchas gracias!

Lo ideal es conseguirlos en PDF para poder usarlos digitalmente.

No se si será fácil conseguirlos en PDF...]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Libros para aprender Clipper 5 o Harbour en PDF :: Reply by MauroArevalo]]> 2025-03-07T17:11:16-07:00 2025-03-07T17:11:16-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278228#p278228
Listo vamos a mirar si colocamos a un colaborador de nuestra empresa, para que los escanee y pasartelos en PDF.

Saludos,]]>

Listo vamos a mirar si colocamos a un colaborador de nuestra empresa, para que los escanee y pasartelos en PDF.

Saludos,]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Libros para aprender Clipper 5 o Harbour en PDF :: Reply by Antonio Linares]]> 2025-03-07T17:21:22-07:00 2025-03-07T17:21:22-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278229#p278229 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Libros para aprender Clipper 5 o Harbour en PDF :: Reply by Marcelo Via Giglio]]> 2025-03-10T15:58:20-06:00 2025-03-10T15:58:20-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278274#p278274
Disculpa la intromisión en la conversación, pero la pregunta va para Mauricio, viendo los libros que tienes puedo preguntar tienes los fuentes q vienen en el libro de Rick Spencer, "Clipper 5.2 Guia avanzada para el programador" y aprovecho en generalizar la pregunta para todos

Saludos y muchas gracias

Marcelo Via]]>

Disculpa la intromisión en la conversación, pero la pregunta va para Mauricio, viendo los libros que tienes puedo preguntar tienes los fuentes q vienen en el libro de Rick Spencer, "Clipper 5.2 Guia avanzada para el programador" y aprovecho en generalizar la pregunta para todos

Saludos y muchas gracias

Marcelo Via]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Libros para aprender Clipper 5 o Harbour en PDF :: Reply by karinha]]> 2025-03-11T06:45:06-06:00 2025-03-11T06:45:06-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278285#p278285
https://www.itlnet.net/programming/prog ... /menu.html

PDF:

https://vivaclipper.wordpress.com/wp-co ... nguage.pdf

https://harbour.github.io/doc/clc53.html

Regards, saludos.]]>

https://www.itlnet.net/programming/prog ... /menu.html

PDF:

https://vivaclipper.wordpress.com/wp-co ... nguage.pdf

https://harbour.github.io/doc/clc53.html

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Libros para aprender Clipper 5 o Harbour en PDF :: Reply by ruben Dario]]> 2025-03-13T10:59:11-06:00 2025-03-13T10:59:11-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45496&p=278350#p278350
CA-Clipper for DOS Version 5.3 Originales
https://drive.google.com/file/d/1al8Gi ... rive_link

https://www.4shared.com/s/fHwiaZ_hEfa


Los libros del Amigo Mauro Arevalo , son muy buenos, seria genial pasarlos a PDF ya que hay muchos ejemplos muy interesantes, no se si tiene codigo fuente.]]>

CA-Clipper for DOS Version 5.3 Originales
https://drive.google.com/file/d/1al8Gi ... rive_link

https://www.4shared.com/s/fHwiaZ_hEfa


Los libros del Amigo Mauro Arevalo , son muy buenos, seria genial pasarlos a PDF ya que hay muchos ejemplos muy interesantes, no se si tiene codigo fuente.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Crear las liberias para LInux en Harbour y xHarbour :: Author ruben Dario]]> 2025-03-13T10:14:45-06:00 2025-03-13T10:14:45-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45522&p=278349#p278349
Es posible crear las librerias en Linux en Harbour y xHarbour, si me pueden indicar.
Gracias]]>

Es posible crear las librerias en Linux en Harbour y xHarbour, si me pueden indicar.
Gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Crear las liberias para LInux en Harbour y xHarbour :: Reply by Antonio Linares]]> 2025-03-13T16:01:12-06:00 2025-03-13T16:01:12-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45522&p=278355#p278355
Puedes revisar los repositorios de FiveLinux:

Para GTK 2.0:
https://github.com/FiveTechSoft/fivelinux

Para GTK 3.0:
https://github.com/FiveTechSoft/flh]]>

Puedes revisar los repositorios de FiveLinux:

Para GTK 2.0:
https://github.com/FiveTechSoft/fivelinux

Para GTK 3.0:
https://github.com/FiveTechSoft/flh]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Consultas sobre toast :: Author Enrrique Vertiz]]> 2025-03-13T22:19:17-06:00 2025-03-13T22:19:17-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45524&p=278361#p278361
A partir de que version de Windows funciona toast ?? (de paso en FWH como obtengo la version de windows?)
Se le puede pasar un parametro para definir el tiempo que debe mostrarse ?? , en que posicion ??

Sucede que estoy mostrando un mensaje, pero solo aparece en algunos equipos, en otros no, pero no dice nada ... asi lo invoco:

toast("Consulta exitosa, comprobante existe y esta aceptado !!!", cRucCon+"-"+cTid+"-"+cNud, hResponse["message"])

gracias]]>

A partir de que version de Windows funciona toast ?? (de paso en FWH como obtengo la version de windows?)
Se le puede pasar un parametro para definir el tiempo que debe mostrarse ?? , en que posicion ??

Sucede que estoy mostrando un mensaje, pero solo aparece en algunos equipos, en otros no, pero no dice nada ... asi lo invoco:

toast("Consulta exitosa, comprobante existe y esta aceptado !!!", cRucCon+"-"+cTid+"-"+cNud, hResponse["message"])

gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Consultas sobre toast :: Reply by Antonio Linares]]> 2025-03-14T02:47:11-06:00 2025-03-14T02:47:11-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45524&p=278363#p278363
Las notificaciones Toast en Windows funcionan a partir de Windows 8. Sin embargo, su soporte y funcionalidad mejoraron en Windows 10 y Windows 11.

MsgInfo( cWinVersion() )

FWH tiene soporte de dos tipos de "Toast": Uno basado en WinRT (función Toast()) y otro en una Clase TToast implementada por Cristobal Navarro.

No hay una forma directa de especificar un tiempo exacto en segundos en la función Toast con la API de WinRT. Sin embargo, puedes usar duration="long" o duration="short" en el XML para influir en la duración, o scenario="reminder" para hacerlo persistente, lo que implica modificar el código fuente de la función.

Usando la Clase TToast puedes tener control total sobre él]]>

Las notificaciones Toast en Windows funcionan a partir de Windows 8. Sin embargo, su soporte y funcionalidad mejoraron en Windows 10 y Windows 11.

MsgInfo( cWinVersion() )

FWH tiene soporte de dos tipos de "Toast": Uno basado en WinRT (función Toast()) y otro en una Clase TToast implementada por Cristobal Navarro.

No hay una forma directa de especificar un tiempo exacto en segundos en la función Toast con la API de WinRT. Sin embargo, puedes usar duration="long" o duration="short" en el XML para influir en la duración, o scenario="reminder" para hacerlo persistente, lo que implica modificar el código fuente de la función.

Usando la Clase TToast puedes tener control total sobre él]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Consultas sobre toast :: Reply by Enrrique Vertiz]]> 2025-03-14T08:52:58-06:00 2025-03-14T08:52:58-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45524&p=278370#p278370 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Clase TScanner - Interface de escaneo :: Reply by Vikthor]]> 2025-03-13T16:02:06-06:00 2025-03-13T16:02:06-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=16808&p=278356#p278356
¿ Hay una versión actualizada de la clase TScan32 para 64 bits con Bcc77 ?]]>

¿ Hay una versión actualizada de la clase TScan32 para 64 bits con Bcc77 ?]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Clase TScanner - Interface de escaneo :: Reply by Antonio Linares]]> 2025-03-13T16:21:26-06:00 2025-03-13T16:21:26-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=16808&p=278360#p278360
Estoy compilándola con bcc7764 y todo parece ir bien salvo que no se encuentra eztwain.h

Y si hay que enlazar TWAIN.LIB haría falta la versión de 64 bits. Parece que es una librería de importación,
así que habría que localizar EZTW64.dll]]>

Estoy compilándola con bcc7764 y todo parece ir bien salvo que no se encuentra eztwain.h

Y si hay que enlazar TWAIN.LIB haría falta la versión de 64 bits. Parece que es una librería de importación,
así que habría que localizar EZTW64.dll]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Clase TScanner - Interface de escaneo :: Reply by karinha]]> 2025-03-14T06:59:21-06:00 2025-03-14T06:59:21-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=16808&p=278367#p278367 https://github.com/adem0x/ancestromania ... /eztwain.h

Regards, saludos.]]>
https://github.com/adem0x/ancestromania ... /eztwain.h

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Clase TScanner - Interface de escaneo :: Reply by Vikthor]]> 2025-03-14T09:05:49-06:00 2025-03-14T09:05:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=16808&p=278371#p278371
https://www.eztwain.com/eztwain4.htm]]>

https://www.eztwain.com/eztwain4.htm]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Clase TScanner - Interface de escaneo :: Reply by Enrico Maria Giordano]]> 2025-03-14T09:08:32-06:00 2025-03-14T09:08:32-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=16808&p=278372#p278372 https://www.eztwain.com/eztwain1.htm]]> https://www.eztwain.com/eztwain1.htm]]> <![CDATA[FiveWin para Harbour/xHarbour :: FW 2409, FOLDER :: Author elmoiquique]]> 2025-03-13T13:37:46-06:00 2025-03-13T13:37:46-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45523&p=278352#p278352
REDEFINE FOLDER oFld ID 101 OF oDlg4;
PROMPT "Informacion 1","Itemes","Totales / Informacion Adicional";
DIALOGS "SVE201D","SVE201E","SVE201F"

Esta en un RES de Pelles C, la tercera viñeta donde coloca el Titulo "Totales /Infor", solo coloca eso el resto no se ve]]>

REDEFINE FOLDER oFld ID 101 OF oDlg4;
PROMPT "Informacion 1","Itemes","Totales / Informacion Adicional";
DIALOGS "SVE201D","SVE201E","SVE201F"

Esta en un RES de Pelles C, la tercera viñeta donde coloca el Titulo "Totales /Infor", solo coloca eso el resto no se ve]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, FOLDER :: Reply by Antonio Linares]]> 2025-03-13T16:04:20-06:00 2025-03-13T16:04:20-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45523&p=278357#p278357
Añádele el estilo TCS_MULTILINE al folder en el fichero RC]]>

Añádele el estilo TCS_MULTILINE al folder en el fichero RC]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: FW 2409, FOLDER :: Reply by elmoiquique]]> 2025-03-14T12:45:09-06:00 2025-03-14T12:45:09-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45523&p=278376#p278376 <![CDATA[FiveWin para Harbour/xHarbour :: TGemini - AI :: Author FiveWiDi]]> 2025-03-14T12:21:42-06:00 2025-03-14T12:21:42-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45526&p=278374#p278374
Estoy intentando empezar a familiarizarme con AI, he mirado los ejemplos de La clase TGemini.

Veo que en algunos ejemplos se usan métodos que no están definidos en la clase (SendImage, SendPdf, SendStream, SendImageStream, SendPdfStream), debo entender que se ha simplificado la clase?

Si no recuerdo mal con SendStream se podía obtener la respuesta según se iba recibiendo, eso es lo que intento hacer.

Muchas gracias,]]>

Estoy intentando empezar a familiarizarme con AI, he mirado los ejemplos de La clase TGemini.

Veo que en algunos ejemplos se usan métodos que no están definidos en la clase (SendImage, SendPdf, SendStream, SendImageStream, SendPdfStream), debo entender que se ha simplificado la clase?

Si no recuerdo mal con SendStream se podía obtener la respuesta según se iba recibiendo, eso es lo que intento hacer.

Muchas gracias,]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TGemini - AI :: Reply by FiveWiDi]]> 2025-03-14T12:30:52-06:00 2025-03-14T12:30:52-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45526&p=278375#p278375
"que _ tiene" es en realidad una ese, una e, una equis y una o.]]>

"que _ tiene" es en realidad una ese, una e, una equis y una o.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TGemini - AI :: Reply by Antonio Linares]]> 2025-03-14T21:19:23-06:00 2025-03-14T21:19:23-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45526&p=278381#p278381
Asi es :)

> Si no recuerdo mal con SendStream se podía obtener la respuesta según se iba recibiendo, eso es lo que intento hacer

correcto :wink:]]>

Asi es :)

> Si no recuerdo mal con SendStream se podía obtener la respuesta según se iba recibiendo, eso es lo que intento hacer

correcto :wink:]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Combobox y GetEdit, Misma Columna XBROWSE :: Author elmoiquique]]> 2025-03-14T12:50:07-06:00 2025-03-14T12:50:07-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45527&p=278377#p278377
GET
GET
GET
COMBOBOX
GET
COMBOBOX
COMBOBOX

y asi sucesivamente en un xbrowse pero en una columna, estaba haciendo algo asi pero no funciona,, lleno un arreglo mixto con get y combobox, pero no resulta,, no se si se puede hacer

Code: Select all | Expand

do while .not. eof()

 if (odbf1:calias)->tdbf
  acentidad:={}
  dbselectarea(odbf:calias)
  set order to 1
  go top
  do while .not. eof()
   aadd(acentidad,(odbf:calias)->nombre+"-"+(odbf:calias)->codigo)
   skip
  enddo
 else
  acentidad:=""
  acentidad:=(odbf1:calias)->nombre
 endif
 ritem +=1
 AADD(acItem,{ ritem, acentidad })
 
 dbselectarea(odbf1:calias)
 skip
next


 REDEFINE XBROWSE oLbx1 ID 4001 OF oFld:aDialogs[2];
           COLUMNS 1,2;
           HEADERS "Item","Descripcion";
           COLSIZES 40,360;
           PICTURE "","";
           ARRAY acItem UPDATE FOOTERS LINES AUTOCOLS CELL AUTOSORT 
]]>

GET
GET
GET
COMBOBOX
GET
COMBOBOX
COMBOBOX

y asi sucesivamente en un xbrowse pero en una columna, estaba haciendo algo asi pero no funciona,, lleno un arreglo mixto con get y combobox, pero no resulta,, no se si se puede hacer

Code: Select all | Expand

do while .not. eof()

 if (odbf1:calias)->tdbf
  acentidad:={}
  dbselectarea(odbf:calias)
  set order to 1
  go top
  do while .not. eof()
   aadd(acentidad,(odbf:calias)->nombre+"-"+(odbf:calias)->codigo)
   skip
  enddo
 else
  acentidad:=""
  acentidad:=(odbf1:calias)->nombre
 endif
 ritem +=1
 AADD(acItem,{ ritem, acentidad })
 
 dbselectarea(odbf1:calias)
 skip
next


 REDEFINE XBROWSE oLbx1 ID 4001 OF oFld:aDialogs[2];
           COLUMNS 1,2;
           HEADERS "Item","Descripcion";
           COLSIZES 40,360;
           PICTURE "","";
           ARRAY acItem UPDATE FOOTERS LINES AUTOCOLS CELL AUTOSORT 
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Combobox y GetEdit, Misma Columna XBROWSE :: Reply by Antonio Linares]]> 2025-03-14T21:22:50-06:00 2025-03-14T21:22:50-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45527&p=278382#p278382
Revisa FWH\samples\inspect.prg]]>

Revisa FWH\samples\inspect.prg]]>
<![CDATA[FiveWin para Harbour/xHarbour :: TRichedi :: Author FiveWiDi]]> 2025-03-14T14:59:46-06:00 2025-03-14T14:59:46-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45528&p=278378#p278378
Si tengo un mensaje que en un MsgInfo() se ve bien (con sus acentos y sin caracteres 'raros'), como puedo insertar en un control TRichedi y que se vean bien los caracteres acentuados?

Estoy aplicando esto:
oRTF1:InsertRTF( ElTextoAInsertar )

No veo otro método con que hacerlo.

En MsgInfo() este texto se ve bien, pero al hacer un oRTF1:InsertRTF( ElTextoAInsertar ) se ve así:

"Saps coses del futbol?
--------------------------------------------------------------------------------
Sí, sé moltes coses sobre futbol! Puc parlar de:

* **Regles del joc:** Fora de joc, faltes, penals, targetes, etc.
* **Tàctiques i estratègies:** Diferents formacions (4-4-2, 4-3-3, 3-5-2, etc.), estils de joc (possessió, contraatac, etc.)"


Muchas gracias]]>

Si tengo un mensaje que en un MsgInfo() se ve bien (con sus acentos y sin caracteres 'raros'), como puedo insertar en un control TRichedi y que se vean bien los caracteres acentuados?

Estoy aplicando esto:
oRTF1:InsertRTF( ElTextoAInsertar )

No veo otro método con que hacerlo.

En MsgInfo() este texto se ve bien, pero al hacer un oRTF1:InsertRTF( ElTextoAInsertar ) se ve así:

"Saps coses del futbol?
--------------------------------------------------------------------------------
Sí, sé moltes coses sobre futbol! Puc parlar de:

* **Regles del joc:** Fora de joc, faltes, penals, targetes, etc.
* **Tàctiques i estratègies:** Diferents formacions (4-4-2, 4-3-3, 3-5-2, etc.), estils de joc (possessió, contraatac, etc.)"


Muchas gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TRichedi :: Reply by Antonio Linares]]> 2025-03-14T21:25:20-06:00 2025-03-14T21:25:20-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45528&p=278384#p278384 viewtopic.php?p=278383#p278383]]> viewtopic.php?p=278383#p278383]]> <![CDATA[FiveWin para Harbour/xHarbour :: TRichedi :: Author FiveWiDi]]> 2025-03-14T14:59:47-06:00 2025-03-14T14:59:47-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45529&p=278379#p278379
Si tengo un mensaje que en un MsgInfo() se ve bien (con sus acentos y sin caracteres 'raros'), como puedo insertar en un control TRichedi y que se vean bien los caracteres acentuados?

Estoy aplicando esto:
oRTF1:InsertRTF( ElTextoAInsertar )

No veo otro método con que hacerlo.

En MsgInfo() este texto se ve bien, pero al hacer un oRTF1:InsertRTF( ElTextoAInsertar ) se ve así:

"Saps coses del futbol?
--------------------------------------------------------------------------------
Sí, sé moltes coses sobre futbol! Puc parlar de:

* **Regles del joc:** Fora de joc, faltes, penals, targetes, etc.
* **Tàctiques i estratègies:** Diferents formacions (4-4-2, 4-3-3, 3-5-2, etc.), estils de joc (possessió, contraatac, etc.)"


Muchas gracias]]>

Si tengo un mensaje que en un MsgInfo() se ve bien (con sus acentos y sin caracteres 'raros'), como puedo insertar en un control TRichedi y que se vean bien los caracteres acentuados?

Estoy aplicando esto:
oRTF1:InsertRTF( ElTextoAInsertar )

No veo otro método con que hacerlo.

En MsgInfo() este texto se ve bien, pero al hacer un oRTF1:InsertRTF( ElTextoAInsertar ) se ve así:

"Saps coses del futbol?
--------------------------------------------------------------------------------
Sí, sé moltes coses sobre futbol! Puc parlar de:

* **Regles del joc:** Fora de joc, faltes, penals, targetes, etc.
* **Tàctiques i estratègies:** Diferents formacions (4-4-2, 4-3-3, 3-5-2, etc.), estils de joc (possessió, contraatac, etc.)"


Muchas gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TRichedi :: Reply by Antonio Linares]]> 2025-03-14T21:24:04-06:00 2025-03-14T21:24:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45529&p=278383#p278383
FW_SetUnicode( lOnOff )

al inicio de tu aplicación]]>

FW_SetUnicode( lOnOff )

al inicio de tu aplicación]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TRichedi :: Reply by FiveWiDi]]> 2025-03-15T02:52:58-06:00 2025-03-15T02:52:58-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45529&p=278386#p278386
Antonio Linares wrote: Sat Mar 15, 2025 3:24 am Prueba a usar:

FW_SetUnicode( lOnOff )

al inicio de tu aplicación
Gracias Antonio, pero no hay manera.

He aplicado FW_SetUnicode( lOnOff ) al principio de la aplicación, he cambiado el control por un EDIT y tampoco muestra bien los caracteres, usando oRTF1:InsertRTF() o oEDIT1:cText().

Se trata de una respuesta de Gemini, con MsgInfo() muestra bien el texto, pero si quiero que ese texto se vea en un control (RICHEDIT, RICHEDIT5, EDIT) no los muestra bien, se ven caracteres 'raros', si la respuesta de Gemini la grabo directamente en un fichero plano también se ven esos caracteres raros. Son principalmente los acenturados.

* **Tà ctiques i estratègies:** Diferents formacions (4-4-2, 4-3-3, 3-5-2, etc.), estils de joc (possessió, contraatac, etc.)"

Lo que pretendo es ver la respuesta de Gemini y además guardarla. Habrán caracteres 'diferentes' como la cara sonriente pero eso ya lo asumo, pero que se vean 'feos' los acentuados... pues no queda bien. Por que además el 'tio' escribe como Dios manda y no se salta ningún acento.

A desayunar, a ver que se me ocurre.]]>
Antonio Linares wrote: Sat Mar 15, 2025 3:24 am Prueba a usar:

FW_SetUnicode( lOnOff )

al inicio de tu aplicación
Gracias Antonio, pero no hay manera.

He aplicado FW_SetUnicode( lOnOff ) al principio de la aplicación, he cambiado el control por un EDIT y tampoco muestra bien los caracteres, usando oRTF1:InsertRTF() o oEDIT1:cText().

Se trata de una respuesta de Gemini, con MsgInfo() muestra bien el texto, pero si quiero que ese texto se vea en un control (RICHEDIT, RICHEDIT5, EDIT) no los muestra bien, se ven caracteres 'raros', si la respuesta de Gemini la grabo directamente en un fichero plano también se ven esos caracteres raros. Son principalmente los acenturados.

* **Tà ctiques i estratègies:** Diferents formacions (4-4-2, 4-3-3, 3-5-2, etc.), estils de joc (possessió, contraatac, etc.)"

Lo que pretendo es ver la respuesta de Gemini y además guardarla. Habrán caracteres 'diferentes' como la cara sonriente pero eso ya lo asumo, pero que se vean 'feos' los acentuados... pues no queda bien. Por que además el 'tio' escribe como Dios manda y no se salta ningún acento.

A desayunar, a ver que se me ocurre.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TRichedi :: Reply by Antonio Linares]]> 2025-03-15T03:18:56-06:00 2025-03-15T03:18:56-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45529&p=278389#p278389
Al decirme que estás usando Gémini me has dado la pista :-)

Revisa FWH\samples\webia.prg y como se usa hb_Utf8ToStr( oGemini:getValue() )]]>

Al decirme que estás usando Gémini me has dado la pista :-)

Revisa FWH\samples\webia.prg y como se usa hb_Utf8ToStr( oGemini:getValue() )]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TRichedi :: Reply by FiveWiDi]]> 2025-03-15T04:51:12-06:00 2025-03-15T04:51:12-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45529&p=278390#p278390
Antonio Linares wrote: Sat Mar 15, 2025 9:18 am Carlos,

Al decirme que estás usando Gémini me has dado la pista :-)

Revisa FWH\samples\webia.prg y como se usa hb_Utf8ToStr( oGemini:getValue() )
Oleeeeeeeeeeeeeee!!!!!!!!

Ya se ven bien los caracteres acentuados, y lo meto en un RTF.
Ya puedo crear la ayuda del programa. :D

Si que es verdad que las caras sonrientes y supongo que otros 'dibujitos' se convertirán a lo que se pueda, pero el texto parece perfecto.

Muchas gracias,]]>
Antonio Linares wrote: Sat Mar 15, 2025 9:18 am Carlos,

Al decirme que estás usando Gémini me has dado la pista :-)

Revisa FWH\samples\webia.prg y como se usa hb_Utf8ToStr( oGemini:getValue() )
Oleeeeeeeeeeeeeee!!!!!!!!

Ya se ven bien los caracteres acentuados, y lo meto en un RTF.
Ya puedo crear la ayuda del programa. :D

Si que es verdad que las caras sonrientes y supongo que otros 'dibujitos' se convertirán a lo que se pueda, pero el texto parece perfecto.

Muchas gracias,]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TRichedi :: Reply by cnavarro]]> 2025-03-15T07:08:02-06:00 2025-03-15T07:08:02-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45529&p=278391#p278391

Code: Select all | Expand

   HB_SETCODEPAGE( "UTF8" )
]]>

Code: Select all | Expand

   HB_SETCODEPAGE( "UTF8" )
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TRichedi :: Reply by karinha]]> 2025-03-15T09:26:17-06:00 2025-03-15T09:26:17-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45529&p=278393#p278393

Code: Select all | Expand

    HB_SETCODEPAGE( "UTF8" )

    FW_SetUnicode( .T. )
Buenas tardes Maestro Navarro, estos comandos hacen lo mismo, o son diferentes, o se deben utilizar ambos?

Gracias, tks.

Regards, saludos.]]>

Code: Select all | Expand

    HB_SETCODEPAGE( "UTF8" )

    FW_SetUnicode( .T. )
Buenas tardes Maestro Navarro, estos comandos hacen lo mismo, o son diferentes, o se deben utilizar ambos?

Gracias, tks.

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TRichedi :: Reply by cnavarro]]> 2025-03-15T10:23:40-06:00 2025-03-15T10:23:40-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45529&p=278394#p278394 Es decir, puedes activar unicode, pero la codificación puede ser "Chino", por ejemplo, pero si vas a trabajar con una app o interface que usa UTF8 ( en web es lo habitual ), puedes activarlo para no tener que estar codificando/decodificando continuamente

Pero si quieres profundizar en el tema, la IA te dirá algo como ( y he añadido algo de mi propia cosecha ):
La diferencia entre UTF-8 y Unicode es fundamental, pero a menudo se confunden porque están estrechamente relacionados.
""Unicode:*** **Es un estándar de codificación de caracteres.
** Piensa en él como un diccionario gigante que asigna un numero único (llamado "punto de código") a cada carácter, símbolo, emoji, etc., de prácticamente todos los idiomas del mundo.* **Define qué caracteres existen y qué número los representa.
** Por ejemplo, la letra "A" mayúscula tiene el punto de código U+0041 == 65 DECIMAL. La letra "¤" tiene el punto de código U+00F1. Un emoji de una cara sonriente puede tener un punto de código como U+1F600.
* **No especifica cómo se almacenan esos números en la memoria o en un archivo.** Solo dice "este carácter es este número".**UTF-8:*** **Es una forma específica de codificar los puntos de código Unicode en bytes para almacenarlo o usarlos.** Es decir, es un esquema de codificación que te dice cómo representar esos números Unicode (los puntos de código) como secuencias de bytes (unos y ceros) que una computadora puede entender y almacenar.* **Es una codificación de ancho variable.** Esto significa que un carácter Unicode puede representarse con 1, 2, 3 o 4 bytes, dependiendo del punto de código. Los caracteres ASCII básicos (letras, números, símbolos comunes) se representan con 1 byte, lo que hace que UTF-8 sea compatible con ASCII. Los caracteres m s complejos (como los de idiomas asiáticos o emojis) requieren más bytes.* **Es la codificación más común para la web y muchos otros sistemas.
** Su eficiencia (para el inglés y otros idiomas occidentales) y su compatibilidad con ASCII la hacen muy popular.**En resumen:*** **Unicode es el "diccionario" de caracteres.** Define qué‚ caracteres existen y qué‚ número los representa.* **UTF-8 es una forma de "escribir" ese diccionario en un formato que las computadoras pueden entender.** Es una forma de convertir los números Unicode en bytes.**Analogía:**Imagina que Unicode es un libro de recetas que describe cómo hacer diferentes platos. UTF-8 es una forma específica de escribir esas recetas en un lenguaje que un chef (la computadora) pueda entender. Podrías tener otras formas de escribir las recetas (como UTF-16 o UTF-32), pero UTF-8 es una de las m s comunes y eficientes.**Otros esquemas de codificación Unicode:**Además de UTF-8, existen otras codificaciones Unicode, como:* **UTF-16:** Utiliza 2 o 4 bytes para representar cada carácter. Es común en algunos sistemas operativos (como Windows) y en Java.* **UTF-32:** Utiliza siempre 4 bytes para representar cada carácter. Es m s simple de implementar, pero menos eficiente en términos de espacio, ya que incluso los caracteres ASCII básicos ocupan 4 bytes.**Por qué‚ es importante entender la diferencia:**Si no se especifica la codificación correcta, los caracteres pueden mostrarse incorrectamente. Por ejemplo, si un archivo está codificado en UTF-8 pero se intenta leer como si estuviera en ASCII, los caracteres no ASCII (como las letras acentuadas) se mostrar n como símbolos extraños. Por eso, es crucial asegurarse de que la codificación utilizada para leer y escribir archivos coincida con la codificación real del archivo.
]]>
Es decir, puedes activar unicode, pero la codificación puede ser "Chino", por ejemplo, pero si vas a trabajar con una app o interface que usa UTF8 ( en web es lo habitual ), puedes activarlo para no tener que estar codificando/decodificando continuamente

Pero si quieres profundizar en el tema, la IA te dirá algo como ( y he añadido algo de mi propia cosecha ):
La diferencia entre UTF-8 y Unicode es fundamental, pero a menudo se confunden porque están estrechamente relacionados.
""Unicode:*** **Es un estándar de codificación de caracteres.
** Piensa en él como un diccionario gigante que asigna un numero único (llamado "punto de código") a cada carácter, símbolo, emoji, etc., de prácticamente todos los idiomas del mundo.* **Define qué caracteres existen y qué número los representa.
** Por ejemplo, la letra "A" mayúscula tiene el punto de código U+0041 == 65 DECIMAL. La letra "¤" tiene el punto de código U+00F1. Un emoji de una cara sonriente puede tener un punto de código como U+1F600.
* **No especifica cómo se almacenan esos números en la memoria o en un archivo.** Solo dice "este carácter es este número".**UTF-8:*** **Es una forma específica de codificar los puntos de código Unicode en bytes para almacenarlo o usarlos.** Es decir, es un esquema de codificación que te dice cómo representar esos números Unicode (los puntos de código) como secuencias de bytes (unos y ceros) que una computadora puede entender y almacenar.* **Es una codificación de ancho variable.** Esto significa que un carácter Unicode puede representarse con 1, 2, 3 o 4 bytes, dependiendo del punto de código. Los caracteres ASCII básicos (letras, números, símbolos comunes) se representan con 1 byte, lo que hace que UTF-8 sea compatible con ASCII. Los caracteres m s complejos (como los de idiomas asiáticos o emojis) requieren más bytes.* **Es la codificación más común para la web y muchos otros sistemas.
** Su eficiencia (para el inglés y otros idiomas occidentales) y su compatibilidad con ASCII la hacen muy popular.**En resumen:*** **Unicode es el "diccionario" de caracteres.** Define qué‚ caracteres existen y qué‚ número los representa.* **UTF-8 es una forma de "escribir" ese diccionario en un formato que las computadoras pueden entender.** Es una forma de convertir los números Unicode en bytes.**Analogía:**Imagina que Unicode es un libro de recetas que describe cómo hacer diferentes platos. UTF-8 es una forma específica de escribir esas recetas en un lenguaje que un chef (la computadora) pueda entender. Podrías tener otras formas de escribir las recetas (como UTF-16 o UTF-32), pero UTF-8 es una de las m s comunes y eficientes.**Otros esquemas de codificación Unicode:**Además de UTF-8, existen otras codificaciones Unicode, como:* **UTF-16:** Utiliza 2 o 4 bytes para representar cada carácter. Es común en algunos sistemas operativos (como Windows) y en Java.* **UTF-32:** Utiliza siempre 4 bytes para representar cada carácter. Es m s simple de implementar, pero menos eficiente en términos de espacio, ya que incluso los caracteres ASCII básicos ocupan 4 bytes.**Por qué‚ es importante entender la diferencia:**Si no se especifica la codificación correcta, los caracteres pueden mostrarse incorrectamente. Por ejemplo, si un archivo está codificado en UTF-8 pero se intenta leer como si estuviera en ASCII, los caracteres no ASCII (como las letras acentuadas) se mostrar n como símbolos extraños. Por eso, es crucial asegurarse de que la codificación utilizada para leer y escribir archivos coincida con la codificación real del archivo.
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TRichedi :: Reply by FiveWiDi]]> 2025-03-15T14:39:55-06:00 2025-03-15T14:39:55-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45529&p=278396#p278396
cnavarro wrote: Sat Mar 15, 2025 1:08 pm También puedes añadir al principio de tu aplicacion

Code: Select all | Expand

   HB_SETCODEPAGE( "UTF8" )
De momento y como sólo es para esta situación concreta usaré la conversión de UTF8 a Str.

Muchas gracias Cristobal.]]>
cnavarro wrote: Sat Mar 15, 2025 1:08 pm También puedes añadir al principio de tu aplicacion

Code: Select all | Expand

   HB_SETCODEPAGE( "UTF8" )
De momento y como sólo es para esta situación concreta usaré la conversión de UTF8 a Str.

Muchas gracias Cristobal.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TRichedi :: Reply by FiveWiDi]]> 2025-03-15T15:08:10-06:00 2025-03-15T15:08:10-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45529&p=278397#p278397
Ya tengo preparada la ayuda para los códigos de error de Verifactu en VeFa32.

Le pregunto a Gemini causas y soluciones para el código de error que responde Hacienda, y Gemini contesta algo relacionado... pero lo que le parece.
Es más para algunos códigos diferentes ha contestado lo mismo.

Vamos, que nadie ha "enseñado/entrenado" a Gemini para Verifactu.

De todas maneras es un 'gustazo'.

Esto va a cambiar el mundo como darle la vuelta a un calcetín.]]>

Ya tengo preparada la ayuda para los códigos de error de Verifactu en VeFa32.

Le pregunto a Gemini causas y soluciones para el código de error que responde Hacienda, y Gemini contesta algo relacionado... pero lo que le parece.
Es más para algunos códigos diferentes ha contestado lo mismo.

Vamos, que nadie ha "enseñado/entrenado" a Gemini para Verifactu.

De todas maneras es un 'gustazo'.

Esto va a cambiar el mundo como darle la vuelta a un calcetín.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: TRichedi :: Reply by cnavarro]]> 2025-03-15T15:15:57-06:00 2025-03-15T15:15:57-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45529&p=278398#p278398 <![CDATA[FiveWin para Harbour/xHarbour :: Clase TGemini :: Author FiveWiDi]]> 2025-03-15T16:12:41-06:00 2025-03-15T16:12:41-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45531&p=278399#p278399
Estoy viendo que la clase TGemini tiene la posibilidad de enviar ficheros y pregunta a la vez.

El caso es que quizás la línea 102

if hb_isArray( uContent )

debería ser algo así:

if hb_isArray( uContent ) .And. .Not. Empty( uContent )

porque si recibe una array de ficheros sin elementos, en la línea 153 se da valor .T. a lIsFile, lo cual no sería correcto.

Ahora me veo obligado a hacer esto:

oChat:Send( If( Empty( aFitxers), Nil, aFitxers ), cPregunta, bCallback )

Es solo una sugerencia, así se evita en código comprobar si la array de ficheros va con contenido o no, se le envía y la clase decida qué ha recibido.

Muchas gracias,]]>

Estoy viendo que la clase TGemini tiene la posibilidad de enviar ficheros y pregunta a la vez.

El caso es que quizás la línea 102

if hb_isArray( uContent )

debería ser algo así:

if hb_isArray( uContent ) .And. .Not. Empty( uContent )

porque si recibe una array de ficheros sin elementos, en la línea 153 se da valor .T. a lIsFile, lo cual no sería correcto.

Ahora me veo obligado a hacer esto:

oChat:Send( If( Empty( aFitxers), Nil, aFitxers ), cPregunta, bCallback )

Es solo una sugerencia, así se evita en código comprobar si la array de ficheros va con contenido o no, se le envía y la clase decida qué ha recibido.

Muchas gracias,]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Clase TGemini :: Reply by Antonio Linares]]> 2025-03-16T09:12:24-06:00 2025-03-16T09:12:24-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45531&p=278403#p278403
Implementado para el próximo build :)

Muchas gracias :!:]]>

Implementado para el próximo build :)

Muchas gracias :!:]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Ordenación en xBrowse :: Author Manuel Aranda]]> 2025-03-16T06:45:28-06:00 2025-03-16T06:45:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45532&p=278401#p278401
En versiones antiguas de FW (anteriores a 2023) usando índices CDX al picar en el encabezado de una columna de un xBrowse

oLbx:aCols[2]:cSortOrder := "NUMTRABAJA"
oLbx:aCols[3]:cSortOrder := "NOMBRETRA"
oLbx:aCols[9]:cSortOrder := "DNITRA"
oLbx:aCols[10]:cSortOrder := "NAFTRA"
oLbx:aCols[13]:cSortOrder := "CPOSTAL"

la citada columna se ordena automáticamente en orden ascendente o descendente de forma alternativa.
Con el mismo código y en versiones recientes, por ejemplo la última 25.01 el picar sobre el encabezado de estas columnas no tiene efecto alguno.
¿Qué es lo que ha cambiado? ¿Me podéis ayudar con esto?
Muchas gracias.]]>

En versiones antiguas de FW (anteriores a 2023) usando índices CDX al picar en el encabezado de una columna de un xBrowse

oLbx:aCols[2]:cSortOrder := "NUMTRABAJA"
oLbx:aCols[3]:cSortOrder := "NOMBRETRA"
oLbx:aCols[9]:cSortOrder := "DNITRA"
oLbx:aCols[10]:cSortOrder := "NAFTRA"
oLbx:aCols[13]:cSortOrder := "CPOSTAL"

la citada columna se ordena automáticamente en orden ascendente o descendente de forma alternativa.
Con el mismo código y en versiones recientes, por ejemplo la última 25.01 el picar sobre el encabezado de estas columnas no tiene efecto alguno.
¿Qué es lo que ha cambiado? ¿Me podéis ayudar con esto?
Muchas gracias.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Ordenación en xBrowse :: Reply by admsoporte]]> 2025-03-16T08:17:07-06:00 2025-03-16T08:17:07-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45532&p=278402#p278402 autosort
A mi me funciona normal en la FWH2409
Saludos]]>
autosort
A mi me funciona normal en la FWH2409
Saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Ordenación en xBrowse :: Reply by Manuel Aranda]]> 2025-03-16T10:58:13-06:00 2025-03-16T10:58:13-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45532&p=278406#p278406
Me has dado la pista que necesitaba. Estaba omitiendo el AUTOSORT.
Aunque en versiones antiguas me funciona correctamente sin autosort.]]>

Me has dado la pista que necesitaba. Estaba omitiendo el AUTOSORT.
Aunque en versiones antiguas me funciona correctamente sin autosort.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Problemas con el PIXEL i coordenadas < 1 :: Author FiveWiDi]]> 2025-03-17T11:46:31-06:00 2025-03-17T11:46:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45537&p=278414#p278414
En todas las ventanas y diálogos tengo una función en el ON INIT del ACTIVATE que dimensiona a la resolución de la pantalla (es algo cutre pero a mi me vale).

El caso es que he pasado de la versión FWH 24.02 a la 25.01 (tengo la 24.10 pero no la había usado) y en un DIALOG pasa algo raro .
Uno de los GET que hay aparece en un lugar del DIALOG y con unas dimensiones que no son las que deberían, también pasa con algún BUTTON...
En la 24.10 sucede lo mismo.

Mientras escribía he realizado una prueba:

// Falla
@ 1 /* 0.50 */ ,40.00 GET oBusca VAR uBusca OF oDlg PICTURE "@!" COLORS J02CLRTEXTO,;
J02CLRFONDO SIZE 149.00,9.00 FONT J02FONTGET PIXEL //FIVEWIDI

// Falla
@ 1 /* 0.50 */,189.00 BUTTON oASFiltre PROMPT GetTrad("A/Filtre" ) SIZE 27.00,9.00 ACTION ;
FltInBrw(AMPAArra, oTDbf, uBusca, oWBrowse, oASFiltre, ;
cPostKeyDummy, ;
oSayFlt ) OF oDlg FONT J02FONTBTN PIXEL UPDATE ;
WHEN !lConfiltro //FIVEWIDI

¿Qué tienen en comun?
Usan la cláusula PIXEL y una de sus coordenadas es menor que '1'.
Hay algo que cuando recibe PIXEL y el valor es inferior a 1 no va bien y pinta el control donde le parece.
En el SAY no sucede.
Detectado para ROW y COL.

También es verdad que no he investigado más y no sé si hay más 'cosas', voy a ver si parcheo mi rutina de dimensionamiento y salto este error.

Utilizo oWnd:Move() para diemensionar los controles.

Ya dirás.]]>

En todas las ventanas y diálogos tengo una función en el ON INIT del ACTIVATE que dimensiona a la resolución de la pantalla (es algo cutre pero a mi me vale).

El caso es que he pasado de la versión FWH 24.02 a la 25.01 (tengo la 24.10 pero no la había usado) y en un DIALOG pasa algo raro .
Uno de los GET que hay aparece en un lugar del DIALOG y con unas dimensiones que no son las que deberían, también pasa con algún BUTTON...
En la 24.10 sucede lo mismo.

Mientras escribía he realizado una prueba:

// Falla
@ 1 /* 0.50 */ ,40.00 GET oBusca VAR uBusca OF oDlg PICTURE "@!" COLORS J02CLRTEXTO,;
J02CLRFONDO SIZE 149.00,9.00 FONT J02FONTGET PIXEL //FIVEWIDI

// Falla
@ 1 /* 0.50 */,189.00 BUTTON oASFiltre PROMPT GetTrad("A/Filtre" ) SIZE 27.00,9.00 ACTION ;
FltInBrw(AMPAArra, oTDbf, uBusca, oWBrowse, oASFiltre, ;
cPostKeyDummy, ;
oSayFlt ) OF oDlg FONT J02FONTBTN PIXEL UPDATE ;
WHEN !lConfiltro //FIVEWIDI

¿Qué tienen en comun?
Usan la cláusula PIXEL y una de sus coordenadas es menor que '1'.
Hay algo que cuando recibe PIXEL y el valor es inferior a 1 no va bien y pinta el control donde le parece.
En el SAY no sucede.
Detectado para ROW y COL.

También es verdad que no he investigado más y no sé si hay más 'cosas', voy a ver si parcheo mi rutina de dimensionamiento y salto este error.

Utilizo oWnd:Move() para diemensionar los controles.

Ya dirás.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Problemas con el PIXEL i coordenadas < 1 :: Reply by karinha]]> 2025-03-17T12:41:22-06:00 2025-03-17T12:41:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45537&p=278415#p278415
Regards, saludos.]]>

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Nowait y sin Nowait SOLUCIONADO :: Author D.Fernandez]]> 2025-03-17T19:16:09-06:00 2025-03-17T19:39:50-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45539&p=278417#p278417 Gracias y disculpen.
Saludos

Ruben Dario Fernandez




Amigos, encuentro una diferencia entre dialogo NOWAIT y sin NOWAIT

Con la cláusula nowait el dialogo se muestra y se centra bien, pero muestra como que se crea en otra parte de la pantalla y luego se centra.
Se ve como un efecto fantasma.
SIN nowait el dialogo se crea y se muestra bien sin ese efecto.

Alguna idea,

Muchas gracias y saludos

Ruben Dario Fernandez]]>
Gracias y disculpen.
Saludos

Ruben Dario Fernandez




Amigos, encuentro una diferencia entre dialogo NOWAIT y sin NOWAIT

Con la cláusula nowait el dialogo se muestra y se centra bien, pero muestra como que se crea en otra parte de la pantalla y luego se centra.
Se ve como un efecto fantasma.
SIN nowait el dialogo se crea y se muestra bien sin ese efecto.

Alguna idea,

Muchas gracias y saludos

Ruben Dario Fernandez]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Nowait y sin Nowait :: Reply by cnavarro]]> 2025-03-17T19:37:32-06:00 2025-03-17T19:37:32-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45539&p=278418#p278418 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Nowait y sin Nowait SOLUCIONADO :: Reply by D.Fernandez]]> 2025-03-17T20:19:36-06:00 2025-03-17T20:19:36-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45539&p=278419#p278419 Gracias y disculpen.
Saludos

Ruben Dario Fernandez]]>
Gracias y disculpen.
Saludos

Ruben Dario Fernandez]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Webservice con problemas :: Author Adolfo]]> 2025-03-17T07:27:43-06:00 2025-03-17T07:27:43-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45536&p=278411#p278411
Tengo una rutina de acceso a unos webservices. Funciona muy bien.

Dentro de ellas tengo una llamada a recuperar unos xml de ventas. El problema con una llamada en especial es que si lo hago directamente por el navegador funciona sin problemas, si lo hago por mi rutina me aparece algo totalmente distinto (un pedazo de codigo de la web, no los datos)

Ya le di muchas vueltas y estoy en el periodo de no saber que puede ser, unos ojos mas tranquilos me podrian ayudar

Code: Select all | Expand

    oOle := CreateObject( 'Microsoft.XMLHTTP' )

    cContentType:="application/json"
    cAuthorization:=""
    cUrl:="https://superboleta.cl/?a=get-ventas&usuario=100428&xml=1&fecha=2024-07-09&key=aq91xQWD81.qw14&new=1"

    oOle:Open( 'GET', cUrl, .f. )

    oOle:SetRequestHeader( "Content-Type",cContentType)
    if !empty(cAuthorization)
        oOle:SetRequestHeader( "Authorization",cAuthorization)
    end if
    oOle:Send(  )
    cRet:=""
    cRet := oOle:ResponseBody
Reduje la rutina a lo mas condensado posible para que la prueben
Pueden probar poniendo el url en su navegador, ver lo que devuelve y compararlo con lo que devuelve la rutina.

Eso, saludos

Desde Chile
Adolfo]]>

Tengo una rutina de acceso a unos webservices. Funciona muy bien.

Dentro de ellas tengo una llamada a recuperar unos xml de ventas. El problema con una llamada en especial es que si lo hago directamente por el navegador funciona sin problemas, si lo hago por mi rutina me aparece algo totalmente distinto (un pedazo de codigo de la web, no los datos)

Ya le di muchas vueltas y estoy en el periodo de no saber que puede ser, unos ojos mas tranquilos me podrian ayudar

Code: Select all | Expand

    oOle := CreateObject( 'Microsoft.XMLHTTP' )

    cContentType:="application/json"
    cAuthorization:=""
    cUrl:="https://superboleta.cl/?a=get-ventas&usuario=100428&xml=1&fecha=2024-07-09&key=aq91xQWD81.qw14&new=1"

    oOle:Open( 'GET', cUrl, .f. )

    oOle:SetRequestHeader( "Content-Type",cContentType)
    if !empty(cAuthorization)
        oOle:SetRequestHeader( "Authorization",cAuthorization)
    end if
    oOle:Send(  )
    cRet:=""
    cRet := oOle:ResponseBody
Reduje la rutina a lo mas condensado posible para que la prueben
Pueden probar poniendo el url en su navegador, ver lo que devuelve y compararlo con lo que devuelve la rutina.

Eso, saludos

Desde Chile
Adolfo]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Webservice con problemas :: Reply by quim_]]> 2025-03-17T08:17:35-06:00 2025-03-17T08:17:35-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45536&p=278412#p278412 Si lees responseBody o responseText tienes un JSON embebido dentro de un HTML

Code: Select all | Expand

<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body>[...]
Entre las etiquetas <body> y </body> tienes un array/arreglo con todos los datos, sólo tienes que pasar a un hash en harbour y procesar

Code: Select all | Expand

hData := {=>}
hb_jsondecode( responseText, @hData )
]]>
Si lees responseBody o responseText tienes un JSON embebido dentro de un HTML

Code: Select all | Expand

<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body>[...]
Entre las etiquetas <body> y </body> tienes un array/arreglo con todos los datos, sólo tienes que pasar a un hash en harbour y procesar

Code: Select all | Expand

hData := {=>}
hb_jsondecode( responseText, @hData )
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Webservice con problemas :: Reply by karinha]]> 2025-03-17T09:12:22-06:00 2025-03-17T09:12:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45536&p=278413#p278413

Code: Select all | Expand

// C:\FWH..\SAMPLES\LAURENT.PRG - 17/03/2025 - kapiabafwh@gmail.com

#Include "FiveWin.ch"

FUNCTION Main()

   LOCAL oServerWS, cUrl, aArray, x1, erro, oADODBStream, cRetorno
   LOCAL cContentType   := "application/json"
   LOCAL cAuthorization := ""

   cUrl:="https://superboleta.cl/?a=get-ventas&usuario=100428&xml=1&fecha=2024-07-09&key=aq91xQWD81.qw14&new=1"

   #ifdef __XHARBOUR__  // PERFEITO COM XHARBOUR( I Like )

      Try

         Try
            oServerWS := CreateObject( 'MSXML2.XMLHTTP' )
         Catch
            oServerWS := CreateObject( 'Microsoft.XMLHTTP' )
         End

      Catch

         MsgInfo( 'Erro na Criação do Serviço' )

         RETURN NIL

      End

   #else // PERFEITO COM HARBOUR. ( no Like. kkkkk )

      Try

         Try
            oServerWS := win_OleCreateObject( 'MSXML2.XMLHTTP' )
         Catch
            oServerWS := win_OleCreateObject( 'Microsoft.XMLHTTP' )
         End

      Catch

         MsgInfo( 'Erro na Criação do Serviço! Com Harbour', 'Atenção!' )

         RETURN NIL

      End

   #endif

   oServerWS:Open( 'GET', cUrl, .F. )

   oServerWS:SetRequestHeader( "Content-Type", cContentType) // Adolfo

   IF .NOT. EMPTY( cAuthorization )
      oServerWS:SetRequestHeader( "Authorization", cAuthorization )
   ENDIF

   oServerWS:Send()

   IF oServerWS:STATUS != 200

      MsgStop( AllTrim( Str( oServerWS:Status ) ) + " - " + oServerWS:StatusText, "Erro" )

      RETURN NIL

   ENDIF

   WHILE oServerWS:ReadyState != 4

      SYSREFRESH()

      oServerWS:WaitForResponse( 1000 )

   END

   cRetorno := oServerWS:ResponseBody()

   // ? cRetorno

   IF FILE( "ADOLFO.txt" )
      ERASE ADOLFO.txt
   ENDIF

   MemoWrit('ADOLFO.txt', cRetorno)

RETURN NIL

// FIN / END
Regards, saludos.]]>

Code: Select all | Expand

// C:\FWH..\SAMPLES\LAURENT.PRG - 17/03/2025 - kapiabafwh@gmail.com

#Include "FiveWin.ch"

FUNCTION Main()

   LOCAL oServerWS, cUrl, aArray, x1, erro, oADODBStream, cRetorno
   LOCAL cContentType   := "application/json"
   LOCAL cAuthorization := ""

   cUrl:="https://superboleta.cl/?a=get-ventas&usuario=100428&xml=1&fecha=2024-07-09&key=aq91xQWD81.qw14&new=1"

   #ifdef __XHARBOUR__  // PERFEITO COM XHARBOUR( I Like )

      Try

         Try
            oServerWS := CreateObject( 'MSXML2.XMLHTTP' )
         Catch
            oServerWS := CreateObject( 'Microsoft.XMLHTTP' )
         End

      Catch

         MsgInfo( 'Erro na Criação do Serviço' )

         RETURN NIL

      End

   #else // PERFEITO COM HARBOUR. ( no Like. kkkkk )

      Try

         Try
            oServerWS := win_OleCreateObject( 'MSXML2.XMLHTTP' )
         Catch
            oServerWS := win_OleCreateObject( 'Microsoft.XMLHTTP' )
         End

      Catch

         MsgInfo( 'Erro na Criação do Serviço! Com Harbour', 'Atenção!' )

         RETURN NIL

      End

   #endif

   oServerWS:Open( 'GET', cUrl, .F. )

   oServerWS:SetRequestHeader( "Content-Type", cContentType) // Adolfo

   IF .NOT. EMPTY( cAuthorization )
      oServerWS:SetRequestHeader( "Authorization", cAuthorization )
   ENDIF

   oServerWS:Send()

   IF oServerWS:STATUS != 200

      MsgStop( AllTrim( Str( oServerWS:Status ) ) + " - " + oServerWS:StatusText, "Erro" )

      RETURN NIL

   ENDIF

   WHILE oServerWS:ReadyState != 4

      SYSREFRESH()

      oServerWS:WaitForResponse( 1000 )

   END

   cRetorno := oServerWS:ResponseBody()

   // ? cRetorno

   IF FILE( "ADOLFO.txt" )
      ERASE ADOLFO.txt
   ENDIF

   MemoWrit('ADOLFO.txt', cRetorno)

RETURN NIL

// FIN / END
Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Webservice con problemas :: Reply by Adolfo]]> 2025-03-18T06:12:06-06:00 2025-03-18T06:12:06-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45536&p=278422#p278422
Les comento como me va.
Saludos]]>

Les comento como me va.
Saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: ENTER desde otro control SOLUCIONADO :: Author Willi Quintana]]> 2025-03-18T19:36:00-06:00 2025-03-20T18:00:46-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45547&p=278442#p278442 Tengo un GET cuyo valor ser llenado desde otro control:
REDEFINE oVar VAR cVar ......
...
...
REDEFINE BTNBMP oAct ACTION (cVar := "12345", oVar:Refresh(), ????? ) ...... <--- aqui en ???? con le hago para simular un ENTER en oVar

GRacias....]]>
Tengo un GET cuyo valor ser llenado desde otro control:
REDEFINE oVar VAR cVar ......
...
...
REDEFINE BTNBMP oAct ACTION (cVar := "12345", oVar:Refresh(), ????? ) ...... <--- aqui en ???? con le hago para simular un ENTER en oVar

GRacias....]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: ENTER desde otro control :: Reply by Antonio Linares]]> 2025-03-18T23:41:58-06:00 2025-03-18T23:41:58-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45547&p=278444#p278444
Prueba con oVar:KeyChar( VK_ENTER )]]>

Prueba con oVar:KeyChar( VK_ENTER )]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: ENTER desde otro control :: Reply by FiveWiDi]]> 2025-03-19T02:48:00-06:00 2025-03-19T02:48:00-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45547&p=278446#p278446
Willi Quintana wrote: Wed Mar 19, 2025 1:36 am HOla amigos,,,,,
Tengo un GET cuyo valor ser llenado desde otro control:
REDEFINE oVar VAR cVar ......
...
...
REDEFINE BTNBMP oAct ACTION (cVar := "12345", oVar:Refresh(), ????? ) ...... <--- aqui en ???? con le hago para simular un ENTER en oVar

GRacias....
Prueba esto:

Para un GET
oVar:cText( "12345" )
oVar:Refresh()

Para un SAY
oVar:Varput( "12345" )
oVar:Refresh()]]>
Willi Quintana wrote: Wed Mar 19, 2025 1:36 am HOla amigos,,,,,
Tengo un GET cuyo valor ser llenado desde otro control:
REDEFINE oVar VAR cVar ......
...
...
REDEFINE BTNBMP oAct ACTION (cVar := "12345", oVar:Refresh(), ????? ) ...... <--- aqui en ???? con le hago para simular un ENTER en oVar

GRacias....
Prueba esto:

Para un GET
oVar:cText( "12345" )
oVar:Refresh()

Para un SAY
oVar:Varput( "12345" )
oVar:Refresh()]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: ENTER desde otro control :: Reply by JESUS MARIN]]> 2025-03-19T06:46:51-06:00 2025-03-19T06:46:51-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45547&p=278452#p278452
Si solo quieres simular el ENTER en el Get, prueba :

Code: Select all | Expand

 ACTION (cVar := "12345", oVar:Refresh(), EVAL( oVar:bLostFocus ) )
]]>

Si solo quieres simular el ENTER en el Get, prueba :

Code: Select all | Expand

 ACTION (cVar := "12345", oVar:Refresh(), EVAL( oVar:bLostFocus ) )
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: ENTER desde otro control :: Reply by MGA]]> 2025-03-20T14:53:12-06:00 2025-03-20T14:53:12-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45547&p=278490#p278490 <![CDATA[FiveWin para Harbour/xHarbour :: Re: ENTER desde otro control SOLUCIONADO :: Reply by Willi Quintana]]> 2025-03-20T17:58:58-06:00 2025-03-20T17:58:58-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45547&p=278491#p278491 Gracias por los aportes, probe todos, el mas eficiente es el de MGA, gracias mil.
ACTION (cVar := "12345", oVar:Refresh(), EVAL( oVar:bValid ) )]]>
Gracias por los aportes, probe todos, el mas eficiente es el de MGA, gracias mil.
ACTION (cVar := "12345", oVar:Refresh(), EVAL( oVar:bValid ) )]]>
<![CDATA[FiveWin para Harbour/xHarbour :: HBMK2 Incremental Linking :: Author Adolfo]]> 2025-03-18T09:39:38-06:00 2025-03-18T09:39:38-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45543&p=278431#p278431
Tengo Harbour 3.2,Fwh24-08, MSVC 2002, HBMK2

Traspase una aplicación que estaba con xMate/FWH21.x, HB3.0 a esta nueva configuración sin problemas.

Peroooo quiero implementar el linkeado incremental, ya son 34 ficheros prg y verlos todos compilar y linkear ya no es agradable sobretodo si el cambio es ínfimo y en un solo fichero.

Que flags se usan en el fichero hbp, algún directorio donde alojar los objs, que mas necesito.

Eso.

Desde Chile
Adolfo]]>

Tengo Harbour 3.2,Fwh24-08, MSVC 2002, HBMK2

Traspase una aplicación que estaba con xMate/FWH21.x, HB3.0 a esta nueva configuración sin problemas.

Peroooo quiero implementar el linkeado incremental, ya son 34 ficheros prg y verlos todos compilar y linkear ya no es agradable sobretodo si el cambio es ínfimo y en un solo fichero.

Que flags se usan en el fichero hbp, algún directorio donde alojar los objs, que mas necesito.

Eso.

Desde Chile
Adolfo]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: HBMK2 Incremental Linking :: Reply by acuellar]]> 2025-03-18T13:21:59-06:00 2025-03-18T13:21:59-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45543&p=278434#p278434
-gui
-w0
-inc]]>

-gui
-w0
-inc]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: HBMK2 Incremental Linking :: Reply by Carles]]> 2025-03-21T10:40:19-06:00 2025-03-21T10:40:19-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45543&p=278500#p278500

Code: Select all | Expand

hbmk2  -help
C.]]>

Code: Select all | Expand

hbmk2  -help
C.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Warning borland :: Author Patricio Avalos Aguirre]]> 2025-03-21T09:40:04-06:00 2025-03-21T09:40:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45556&p=278497#p278497
Hace tiempo tengo este warning y quisiera eliminarlo en lo posible
c:\borland\bcc582\bin\ilink32 -Gn -aa -Tpe -s -v @b32.bc
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Warning: LINN32: Last line 1045 (415h) is less than first line 1045 (415h) for symbol "<null>" in module obj\Salidas.c

el archivo tiene mas de 4.000 lineas pero no encuentro a mi parecer un código raro en el archivo
si voy al archivo salidas.cl en la linea 1045 tiene puros números,

89,40,0,1,0,1,0,7,0,176,59,0,12,0,
121,8,28,12,95,255,92,2,1,92,2,1,25,13,
95,1,165,95,255,92,2,1,92,2,2,6,95,8,
100,106,11,57,57,57,57,57,57,57,57,57,57,0,
89,42,0,0,0,7,0,7,0,9,0,10,0,11,
0,2,0,3,0,28,0,176,64,0,95,255,95,254,
95,253,95,252,95,251,95,250,96,249,255,12,7,6,
121,97,255,255,200,0,100,100,100,120,100,100,9,9,
100,100,100,100,100,100,106,11,97,71,101,116,91,48,
50,44,50,93,0,100,112,24,95,7,92,2,1,122,
2,26,158,3,36,108,1,48,56,0,176,63,0,12,
0,92,22,89,40,0,1,0,1,0,7,0,176,59,
0,12,0,121,8,28,12,95,255,92,2,1,92,2,
1,25,13,95,1,165,95,255,92,2,1,92,2,2,
6,95,8,100,106,11,57,57,57,57,57,57,57,57,
57,57,0,100,121,97,255,255,200,0,100,100,100,120,
90,4,9,6,100,9,9,100,100,100,100,100,100,106,
11,97,71,101,116,91,48,50,44,50,93,0,100,112,
24,95,7,92,2,1,122,2,36,110,1,95,7,122,


alguien tiene alguna idea de cual seria el warning, aunque mi aplicación no afecta en nada pero esta esta warning :-)]]>

Hace tiempo tengo este warning y quisiera eliminarlo en lo posible
c:\borland\bcc582\bin\ilink32 -Gn -aa -Tpe -s -v @b32.bc
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Warning: LINN32: Last line 1045 (415h) is less than first line 1045 (415h) for symbol "<null>" in module obj\Salidas.c

el archivo tiene mas de 4.000 lineas pero no encuentro a mi parecer un código raro en el archivo
si voy al archivo salidas.cl en la linea 1045 tiene puros números,

89,40,0,1,0,1,0,7,0,176,59,0,12,0,
121,8,28,12,95,255,92,2,1,92,2,1,25,13,
95,1,165,95,255,92,2,1,92,2,2,6,95,8,
100,106,11,57,57,57,57,57,57,57,57,57,57,0,
89,42,0,0,0,7,0,7,0,9,0,10,0,11,
0,2,0,3,0,28,0,176,64,0,95,255,95,254,
95,253,95,252,95,251,95,250,96,249,255,12,7,6,
121,97,255,255,200,0,100,100,100,120,100,100,9,9,
100,100,100,100,100,100,106,11,97,71,101,116,91,48,
50,44,50,93,0,100,112,24,95,7,92,2,1,122,
2,26,158,3,36,108,1,48,56,0,176,63,0,12,
0,92,22,89,40,0,1,0,1,0,7,0,176,59,
0,12,0,121,8,28,12,95,255,92,2,1,92,2,
1,25,13,95,1,165,95,255,92,2,1,92,2,2,
6,95,8,100,106,11,57,57,57,57,57,57,57,57,
57,57,0,100,121,97,255,255,200,0,100,100,100,120,
90,4,9,6,100,9,9,100,100,100,100,100,100,106,
11,97,71,101,116,91,48,50,44,50,93,0,100,112,
24,95,7,92,2,1,122,2,36,110,1,95,7,122,


alguien tiene alguna idea de cual seria el warning, aunque mi aplicación no afecta en nada pero esta esta warning :-)]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Warning borland :: Reply by Enrico Maria Giordano]]> 2025-03-21T09:54:50-06:00 2025-03-21T09:54:50-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45556&p=278498#p278498 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Warning borland :: Reply by karinha]]> 2025-03-21T11:02:33-06:00 2025-03-21T11:02:33-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45556&p=278503#p278503
crear una DEMO completa para probar.

Regards, saludos.]]>

crear una DEMO completa para probar.

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: LIB CURL + HARBOUR + BCC 7.7 (AHORA SOLUCION CHILKAT - ACTIVEX) :: Author russimicro]]> 2025-03-15T09:22:31-06:00 2025-03-21T05:44:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278392#p278392
Requiero utilizar la lib curl version 8.12, para poder usar cerificados .p12

Para poder probar el ejemplo publicado por antonio para enviar facturas electronicas

Ejp.. adaptado para la DIAN Colombia

JONSSON RUSSI

Code: Select all | Expand

#include "FiveWin.ch"
#include "hbcurl.ch"
#include "xbrowse.ch"
function main()

   local cUrl := "https://vpfe.dian.gov.co/WcfDianCustomerServices.svc"
   local cSignedXmlFile := "E:\TEMP\XML_FIRMADO\z006331767200025SP104100000250_fv_B64"
   local cNomZip := "z006331767200025SP104100000250.zip"



   EnviarFactura( cUrl, cSignedXmlFile,cNomZip )

return


function EnviarFactura( cUrl, cSignedXmlFile, cNomZip )

    local hCurl, cSoapRequest, cSoapResponse, cFacturaXml
    local hResponse, uValue, nHttpCode
    local cPasCer := "russoft"

    cFilCer := "E:\ZERUS\FIRMA_ELECTRONICA\CERT\certificado_29.p12"
    cClaCer := "cxxxxxxxxxxxxx"

    cFacturaXml = MemoRead( cSignedXmlFile )

    // Crear la solicitud SOAP
    cSoapRequest = ;
        '<?xml version="1.0" encoding="UTF-8"?>' + ;
        '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:wcf="http://wcf.dian.colombia">' + ;
        '<soapenv:Header/>'+;
        '<soapenv:Body>' + ;
        '<wcf:SendBillSync>' + ;
        '<wcf:fileName>' + cNomZip +'</wcf:fileName>' + ;
        '<wcf:contentFile>' + cFacturaXml + '</wcf:contentFile>' + ;
        '</wcf:SendBillSync>' + ;
        '</soapenv:Body>' + ;
        '</soapenv:Envelope>'



 HB_MEMOWRIT( "PRUEBA.XML", cSoapRequest )


    hCurl = curl_easy_init()
    curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
    curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cSoapRequest )
    curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, { "Content-Type: application/soap+xml; charset=utf-8", "SOAPAction: http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync" } )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, cFilCer )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTPASSWD, cClaCer )

    cSoapResponse = curl_easy_perform( hCurl )

    if Empty( cSoapResponse )
        MsgStop( "Error al enviar la factura." )
    else
        MsgInfo( "Respuesta del servidor: " + if(valtype(cSoapResponse)=="C",cSoapResponse,STR(cSoapResponse) ) )
    endif

    curl_easy_cleanup( hCurl )

return nil


]]>

Requiero utilizar la lib curl version 8.12, para poder usar cerificados .p12

Para poder probar el ejemplo publicado por antonio para enviar facturas electronicas

Ejp.. adaptado para la DIAN Colombia

JONSSON RUSSI

Code: Select all | Expand

#include "FiveWin.ch"
#include "hbcurl.ch"
#include "xbrowse.ch"
function main()

   local cUrl := "https://vpfe.dian.gov.co/WcfDianCustomerServices.svc"
   local cSignedXmlFile := "E:\TEMP\XML_FIRMADO\z006331767200025SP104100000250_fv_B64"
   local cNomZip := "z006331767200025SP104100000250.zip"



   EnviarFactura( cUrl, cSignedXmlFile,cNomZip )

return


function EnviarFactura( cUrl, cSignedXmlFile, cNomZip )

    local hCurl, cSoapRequest, cSoapResponse, cFacturaXml
    local hResponse, uValue, nHttpCode
    local cPasCer := "russoft"

    cFilCer := "E:\ZERUS\FIRMA_ELECTRONICA\CERT\certificado_29.p12"
    cClaCer := "cxxxxxxxxxxxxx"

    cFacturaXml = MemoRead( cSignedXmlFile )

    // Crear la solicitud SOAP
    cSoapRequest = ;
        '<?xml version="1.0" encoding="UTF-8"?>' + ;
        '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:wcf="http://wcf.dian.colombia">' + ;
        '<soapenv:Header/>'+;
        '<soapenv:Body>' + ;
        '<wcf:SendBillSync>' + ;
        '<wcf:fileName>' + cNomZip +'</wcf:fileName>' + ;
        '<wcf:contentFile>' + cFacturaXml + '</wcf:contentFile>' + ;
        '</wcf:SendBillSync>' + ;
        '</soapenv:Body>' + ;
        '</soapenv:Envelope>'



 HB_MEMOWRIT( "PRUEBA.XML", cSoapRequest )


    hCurl = curl_easy_init()
    curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
    curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cSoapRequest )
    curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, { "Content-Type: application/soap+xml; charset=utf-8", "SOAPAction: http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync" } )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, cFilCer )
    curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTPASSWD, cClaCer )

    cSoapResponse = curl_easy_perform( hCurl )

    if Empty( cSoapResponse )
        MsgStop( "Error al enviar la factura." )
    else
        MsgInfo( "Respuesta del servidor: " + if(valtype(cSoapResponse)=="C",cSoapResponse,STR(cSoapResponse) ) )
    endif

    curl_easy_cleanup( hCurl )

return nil


]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by Enrico Maria Giordano]]> 2025-03-16T03:37:19-06:00 2025-03-16T03:37:19-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278400#p278400
https://github.com/FiveTechSoft/harbour ... our_builds]]>

https://github.com/FiveTechSoft/harbour ... our_builds]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by russimicro]]> 2025-03-18T05:51:34-06:00 2025-03-18T05:51:34-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278421#p278421
Compilado con la versión de harbour indicada, sigue generando el error 58 : segun https://curl.se/libcurl/c/libcurl-errors.html

"CURLE_SSL_CERTPROBLEM (58) : problem with the local client certificate."

!!! por eso creí que era por la versión que no lo soportaba 8.12..

Si se descarta lo de la versión ... alguien nos puede colaborar en probar el ejemplo con un certificado .p12


Gracias]]>

Compilado con la versión de harbour indicada, sigue generando el error 58 : segun https://curl.se/libcurl/c/libcurl-errors.html

"CURLE_SSL_CERTPROBLEM (58) : problem with the local client certificate."

!!! por eso creí que era por la versión que no lo soportaba 8.12..

Si se descarta lo de la versión ... alguien nos puede colaborar en probar el ejemplo con un certificado .p12


Gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by quim_]]> 2025-03-18T06:34:06-06:00 2025-03-18T06:34:06-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278423#p278423
https://curl.se/libcurl/c/CURLOPT_SSLKEYTYPE.html

Hay que exportar el certificado P12 a PEM

Code: Select all | Expand

rem Public Certificate
C:\OpenSSL-Win32\bin\openssl pkcs12 -in cert.p12 -out cert.crt.pem -clcerts -nokeys
rem Private Key
C:\OpenSSL-Win32\bin\openssl pkcs12 -in cert.p12 -out cert.key.pem -nocerts -nodes
Luego ya se puede utilizar con curl

Code: Select all | Expand

curl_easy_setopt(curl, HB_CURLOPT_URL, "https://example.com/")
curl_easy_setopt(curl, HB_CURLOPT_SSLCERT, "cert.crt.pem")
curl_easy_setopt(curl, HB_CURLOPT_SSLKEY, "cert.key.pem")
curl_easy_setopt(curl, HB_CURLOPT_SSLKEYTYPE, "PEM")
curl_easy_setopt(curl, HB_CURLOPT_KEYPASSWD, "s3cret")
response = curl_easy_perform(curl)
curl_easy_cleanup(curl);
Si alguien lo consigue o estoy equivocado, por favor díganlo ;)]]>

https://curl.se/libcurl/c/CURLOPT_SSLKEYTYPE.html

Hay que exportar el certificado P12 a PEM

Code: Select all | Expand

rem Public Certificate
C:\OpenSSL-Win32\bin\openssl pkcs12 -in cert.p12 -out cert.crt.pem -clcerts -nokeys
rem Private Key
C:\OpenSSL-Win32\bin\openssl pkcs12 -in cert.p12 -out cert.key.pem -nocerts -nodes
Luego ya se puede utilizar con curl

Code: Select all | Expand

curl_easy_setopt(curl, HB_CURLOPT_URL, "https://example.com/")
curl_easy_setopt(curl, HB_CURLOPT_SSLCERT, "cert.crt.pem")
curl_easy_setopt(curl, HB_CURLOPT_SSLKEY, "cert.key.pem")
curl_easy_setopt(curl, HB_CURLOPT_SSLKEYTYPE, "PEM")
curl_easy_setopt(curl, HB_CURLOPT_KEYPASSWD, "s3cret")
response = curl_easy_perform(curl)
curl_easy_cleanup(curl);
Si alguien lo consigue o estoy equivocado, por favor díganlo ;)]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by russimicro]]> 2025-03-18T07:55:57-06:00 2025-03-18T07:55:57-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278428#p278428
https://www.leaderssl.es/tools/ssl_converter ---- de .p12 a .pem

pero ahora la respuesta es un .. Empty( cSoapResponse )

y con p12 si hay cSoapResponse .. con codigo error 58]]>

https://www.leaderssl.es/tools/ssl_converter ---- de .p12 a .pem

pero ahora la respuesta es un .. Empty( cSoapResponse )

y con p12 si hay cSoapResponse .. con codigo error 58]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by quim_]]> 2025-03-18T10:53:07-06:00 2025-03-18T10:53:07-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278432#p278432
OpenSSL es fácil de instalar y gratuito y te he dejado la forma de convertir entre formatos

Revisa que despues de setear las opciones obtengas los valores devueltos así :

Code: Select all | Expand

   nError    := curl_easy_perform( curl )
   cResponse := curl_easy_dl_buff_get( curl )
]]>

OpenSSL es fácil de instalar y gratuito y te he dejado la forma de convertir entre formatos

Revisa que despues de setear las opciones obtengas los valores devueltos así :

Code: Select all | Expand

   nError    := curl_easy_perform( curl )
   cResponse := curl_easy_dl_buff_get( curl )
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by russimicro]]> 2025-03-18T14:18:12-06:00 2025-03-18T14:18:12-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278436#p278436
RETORNA 58

cSoapResponse := curl_easy_dl_buff_get( hCurl )

RETORNA--- VACIO


//**************************


E:\ZERUS\FIRMA_ELECTRONICA\CERT>openssl pkcs12 -in CERTIFICADO_29.p12 -out cert.crt.pem -clcerts -nokeys
Enter Import Password:

Error outputting keys and certificates
881C0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../openssl-3.3.1/crypto/evp/evp_fetch.c:355:Global default library context, Algorithm (RC2-40-CBC : 0), Properties ()

E:\ZERUS\FIRMA_ELECTRONICA\CERT>]]>

RETORNA 58

cSoapResponse := curl_easy_dl_buff_get( hCurl )

RETORNA--- VACIO


//**************************


E:\ZERUS\FIRMA_ELECTRONICA\CERT>openssl pkcs12 -in CERTIFICADO_29.p12 -out cert.crt.pem -clcerts -nokeys
Enter Import Password:

Error outputting keys and certificates
881C0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../openssl-3.3.1/crypto/evp/evp_fetch.c:355:Global default library context, Algorithm (RC2-40-CBC : 0), Properties ()

E:\ZERUS\FIRMA_ELECTRONICA\CERT>]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by russimicro]]> 2025-03-18T14:29:45-06:00 2025-03-18T14:29:45-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278437#p278437
Gracias]]>

Gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by quim_]]> 2025-03-19T01:48:11-06:00 2025-03-19T01:48:11-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278445#p278445
hbcurl.ch tiene un montón de parámetros y es fácil confundirse, en mi caso el fallo era establecer HB_CURLOPT_SSLKEYTYPE como tipo de certificado cuando lo correcto es HB_CURLOPT_SSLCERTTYPE

En cambio, es indiferente HB_CURLOPT_SSLKEYPASSWD o HB_CURLOPT_KEYPASSWD, ya que la primera apunta a la segunda

Este código, con sus datos reales, me ha funcionado

Code: Select all | Expand

#include "hbcurl.ch"

PROCEDURE main()

   local nError, cResponse
   local cXmlStr   := hb_memoread( "peticion.xml" )
   local aHeader   := {}
   local cUrl      := "https://..."
   local cCertFile := "certificado.p12"
   local cCertType := "P12" // o "PFX"
   local cCertPass := "********"
   local hCurl     := curl_easy_init()

   // Establecer cabeceras requeridas por el WS
   aadd( aHeader, "Content-Type: application/xml;charset=UTF-8" )
   aadd( aHeader, "Accept: text/xml" )
   aadd( aHeader, "Cache-Control: no-cache" )
   aadd( aHeader, "Pragma: no-cache" )

   // Setear opciones
   curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, aHeader )
   curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
   curl_easy_setopt( hCurl, HB_CURLOPT_TIMEOUT, 15 )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYHOST, .F. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, cCertFile )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTTYPE, cCertType )
   curl_easy_setopt( hCurl, HB_CURLOPT_KEYPASSWD, cCertPass )
   curl_easy_setopt( hCurl, HB_CURLOPT_POST, .T.)
   curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cXmlStr )
   curl_easy_setopt( hCurl, HB_CURLOPT_DL_BUFF_SETUP )   

   // echo server, para depurar .T.
   curl_easy_setopt( hCurl, HB_CURLOPT_VERBOSE, .F. ) 

   // No reutilizar conexiones
   curl_easy_setopt( hCurl, HB_CURLOPT_FRESH_CONNECT, .T.)
   curl_easy_setopt( hCurl, HB_CURLOPT_FORBID_REUSE, .T.)

   // Conexion
   nError    := curl_easy_perform( hCurl )
   cResponse := curl_easy_dl_buff_get( hCurl )

   if nError == 0
      hb_memowrit( "respuesta.xml", cResponse )
   else
      ? "Error :"+ curl_easy_strerror( nError ), nError
   endif

   curl_easy_cleanup( hCurl )
   curl_global_cleanup()

return 

Así que no es necesaria la conversión a PEM con OpenSSL, un problema menos

Cuando se trabaja con certificados, sobretodo en fichero, lo primero que hay que comprobar es que sea instalable en la máquina, es decir, dando doble click al certificado se tendría que instalar sin problemas en el PC
Podemos acceder al certificado con tecla Windows+R certmgr, o desde cmd >certmgr
Comprobar también si el certificado está vigente (no caducado) y finalmente comprobar los usos del certificado, para que nos pueda servir para comunicar con agencias tributarias, normalmente se requiere de :
Autenticación de Cliente (SSL/TLS)
Firma de Documento (XML, PDF)
Certified Document Services (CDS)]]>

hbcurl.ch tiene un montón de parámetros y es fácil confundirse, en mi caso el fallo era establecer HB_CURLOPT_SSLKEYTYPE como tipo de certificado cuando lo correcto es HB_CURLOPT_SSLCERTTYPE

En cambio, es indiferente HB_CURLOPT_SSLKEYPASSWD o HB_CURLOPT_KEYPASSWD, ya que la primera apunta a la segunda

Este código, con sus datos reales, me ha funcionado

Code: Select all | Expand

#include "hbcurl.ch"

PROCEDURE main()

   local nError, cResponse
   local cXmlStr   := hb_memoread( "peticion.xml" )
   local aHeader   := {}
   local cUrl      := "https://..."
   local cCertFile := "certificado.p12"
   local cCertType := "P12" // o "PFX"
   local cCertPass := "********"
   local hCurl     := curl_easy_init()

   // Establecer cabeceras requeridas por el WS
   aadd( aHeader, "Content-Type: application/xml;charset=UTF-8" )
   aadd( aHeader, "Accept: text/xml" )
   aadd( aHeader, "Cache-Control: no-cache" )
   aadd( aHeader, "Pragma: no-cache" )

   // Setear opciones
   curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, aHeader )
   curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
   curl_easy_setopt( hCurl, HB_CURLOPT_TIMEOUT, 15 )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYHOST, .F. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, cCertFile )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTTYPE, cCertType )
   curl_easy_setopt( hCurl, HB_CURLOPT_KEYPASSWD, cCertPass )
   curl_easy_setopt( hCurl, HB_CURLOPT_POST, .T.)
   curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cXmlStr )
   curl_easy_setopt( hCurl, HB_CURLOPT_DL_BUFF_SETUP )   

   // echo server, para depurar .T.
   curl_easy_setopt( hCurl, HB_CURLOPT_VERBOSE, .F. ) 

   // No reutilizar conexiones
   curl_easy_setopt( hCurl, HB_CURLOPT_FRESH_CONNECT, .T.)
   curl_easy_setopt( hCurl, HB_CURLOPT_FORBID_REUSE, .T.)

   // Conexion
   nError    := curl_easy_perform( hCurl )
   cResponse := curl_easy_dl_buff_get( hCurl )

   if nError == 0
      hb_memowrit( "respuesta.xml", cResponse )
   else
      ? "Error :"+ curl_easy_strerror( nError ), nError
   endif

   curl_easy_cleanup( hCurl )
   curl_global_cleanup()

return 

Así que no es necesaria la conversión a PEM con OpenSSL, un problema menos

Cuando se trabaja con certificados, sobretodo en fichero, lo primero que hay que comprobar es que sea instalable en la máquina, es decir, dando doble click al certificado se tendría que instalar sin problemas en el PC
Podemos acceder al certificado con tecla Windows+R certmgr, o desde cmd >certmgr
Comprobar también si el certificado está vigente (no caducado) y finalmente comprobar los usos del certificado, para que nos pueda servir para comunicar con agencias tributarias, normalmente se requiere de :
Autenticación de Cliente (SSL/TLS)
Firma de Documento (XML, PDF)
Certified Document Services (CDS)]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by russimicro]]> 2025-03-19T06:12:00-06:00 2025-03-19T06:12:00-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278451#p278451
No me funciona, te comento actualmente firmo y envió con ese certificado .p12 desde el app "SOAP UI 5.8" y desde un app en c# (lo quiero reemplazar por harbour)..

en SOAP UI , uso este xml : anexo al final

Si te parece te envió el certificado por correo, para que por favor me colabores

Gracias

// prg ajustado

Code: Select all | Expand

#include "hbcurl.ch"

PROCEDURE main()

   local nError, cResponse
   //local cXmlStr   := hb_memoread( "peticion.xml" )
   local aHeader   := {}

   local cUrl := "https://vpfe.dian.gov.co/WcfDianCustomerServices.svc"
   local cCertFile := "CERTIFICADO.p12"
   local cCertType := "P12" // o "PFX"
   local cCertPass := "xxxxxxxxxxxxxx"
   local cSignedXmlFile
   local cNomZip := "z006331767200025SP104100000250.zip"
   local cFacturaXml,cXmlStr

   local hCurl     := curl_easy_init()

    cFacturaXml :=  "UEsDBBQAAgAIABxKZ1obwE1WRBYAAGlGAAAjAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWztPNtyo0qS7xMx/6DwedkNHVncJMDR9iwgJCELJATo9salQEjcDEhI+pv9hvmE+bEtQFdbard7pifO7h5HdBiyMrPyVplZVLm//W3re5UNiBM3DJ4f0EfkoQICM7TcwHl+WKd2jXqoJKkeWLoXBuD5IQgf/vby1798E4JN6JqgAsmDBGLGwVOoJ27yFOg+SJ6SCJiu7Zp6Cvk+rQ3vKTEXwNefton1dKCtYQ8l+ZOpm19kwYW+HwaM48TA0VMAXyMoXpAmF0yNn2PKQnTzFkML6rlI0+ipXs+y7DHDH8PYqWMIgtQRug5xrMR1fjtig236U9Pz2xQEuTduiZCkUAbL1YMnJ9w8meGTrZvpOtaBB8w0DgPI+UlJ43UOBJCuhh4pt7oFzvKvY/cRpIlbaICgNILXN+gj/oj9doWPEugnJMQjeiZJ3DsGQutTsa8UmtbcIA8nE0CqxD2o3w9Li/xsHFXyn8PMVmgmjwWLWhiBoBAB0tXDpKax/Rr2iNYhbd3X3QCi1nPYic8j+gjHHmB8Q37foAef4PDJIUkJvzV0GjkOXngxgE/pJUKOAx351IJ+vMH8GukgW84mDr2PSO/wmHW6CGN3X9jrBaXIJoGQDZpAaYz6Vr+LeJftFdoQxG5o3UTO8eGCg8Gnx2kLrsgXDMGIGkLWMPpb/Xrke/R8YB2pm5fUR/hNQetfkfRKLWAdzJHclSpHH8bAdrcvyrCc6vD6PYp2HPovaIlePH8PWQ1fGjCLlNjw5XMlvyf3lZvvxs1l0CjhOjbv2DY3vmDBCD6tQi60QMVzk5RxYKXYCa3nh+bDBUCCC/f5QQvcFFgVqSBJKrwZBqHvmpU8yblJHvEVO4wr/DqGq7QkLxIE0EbCj6QBWKJATvTkmDBxrqGWu49i5iv64YUblDH0cfwT492zS2E7JbTTTI/BMA43rgXi+8F2xBBalSJ5gbPhULrxcAUsjccNfq+0BEaq/EfLjYFpuv/4e1CBVhf8aA2SNEwquwpjrfVAT6CFTaiN7oHkP4+scs7I8aXkiEM7NHEcJZskdgzio1T3JT/q+Oslf7FxErNxy6rROk7WCLvZqNF4w64RtGETtkUjVJ4KroW6577PXXOlnQJMWNzSXRHYv1pPizaRJoZaJkKZFgDwlURsg8YwEtVRnLAw3GhaDYO2jQaJgwYJXxoGhYKmaRIYRaOoTdl6EzMxukFYDdLCKYzCbZtsog26CR+uLXCp2h0rXOfNT4P5Jvq/NbKJj5FNwRaDJrEmdasUfCfOv4N+x1ryqDBl3msksNmAqQT2xU5Y20Q2eMwbs0fYmD2aYd6GrH2Yb+oJ0GNz8Rb/7QhZgd0zShm5U9EGaRAw8yOUDpcmrNMYQiCYSRENy0SJpkUaTZymGs0GRViUgYMmoGicNFG6CSwSRSzDalC6YaBNxEBNmyApmqQNkqbNUrGDsO9aj/r3e49v9e/2L+Xwzd7nJ7qibxaMVdcJ9Lxf/WKbLVjPDyfaGo5gNE6bVA0jKatGNABZM/QmVQMGCQMDBSSCUg+n+fL6aYfFK6cHRd/sHQJABDAarArjOTAm0oV/Sxh1VHa1I56rQYFq0FlBLYcgOArDvn6t149wLNghxFG9mh/G4Lc40WvJQscazSPPEbBBDFcTKLQ/vdUaJtqwsEbecFF0jTBJrGZgNIQjFgHzhN00abhsitJaGkGN9SCBBdhPrl8/lfLKCSDYAA/Wb6uWHJUtJK1/nKHlOnB9f9EUULffrg1Qshnr3hq8iE7UVGM18Yh5b7abTmVGNlsGkhKsJmRjkOxZQmLYTRpT2XMh0iVxATgZ8HvGfQW7PFgO5vvtayFXO1L/KiNwqbscv7p0OCPn1XTL9PWQ7wRorzOVM6c7JAN8hC03Q4DMiC8aQd1F4Du7v9/KdTTM+7c4dUFyNNAxhL9oqKRgF0F2yS8zllNvR6uVPWT3o8Ga2DKkFXQmzKutKG/q9HU8WWW6zVQHpkTxnxur/jGXnFQuKK4zVAH6wTRl9iNqwTDboZkkQWvXWpFDnWLXfcQfDaLptN3dtz3SYMZ2A4Rv3VgU69sV39lZuDXwN3VW5NHBWB4ilFrdOK3RbqjozZ6sKFUn3Eu2kjXm6LbbUOSha0lUNt7MgoWKMMyG4jrU0M1eEdTyBquwbSgzqhWOGtux4776PrdeUu4K6wG7Lo2mPXax0qpvokH1tOrkbYrg+01PAYMFPVE1nxrx9qCarRpKu/XmJdnodeqtNIvEJpKeRMTbcitls34LBBNiAQYxOXWSLhmxZkRHfY+NuJm+WOMDxIrszg4A1fX7SuxUt1OJmqCSSo8jcd0k2TQKJWptuOko9mbEClGaI0eKMrFK7nbUDKHSJFobW6KfTtHGW/b8fPLZ2SOF3w6L9CdKyvX6njYQGm5T9dMLly+NYscB05UgdLkWx7E25zCZwDKOILxWBRVB8F4oa1lLnvVew7mw2JgSI/N9VmYyx9S2vSWzYh1pzDKi2B1LY3klsQIvsao2VkYrT1E13pERWlQRlFPgs4a0VXEkZ7wza41luc1nSUNs8XtRFbbwXyq12ozYIjoMqvFcluEyNt5ZHc/XJ9Ji3qH3QptdmD7vjHxvZ0zg78nWm+GjnYE1ohkG58La6Xza8/VpL50pbMvAthtj0otmKu+I7IGvk01lpC2Nxr2OMu5JMsRTke1Q1XowEFlVHovbdotRSr1MkUN6wxFCa3CM76/EtSgnGScX8nf4rNdS9wxoZ8hOajG4uJS34l4jxP1cL2DLS9hYF4VuXxxlWafUv9dipZa2grLtZ47UkuFvzVGRmTNoMXtxJGZ8OY/GZyG00QwVl0JDUgVCVJisW/JotVhLksc9TeFzW7fVMe+JKk85I2/cVr1RW9vzI5GhCt3ZkShISxHyMjFpL2y7LUYv9UxEHpkvoC3R3L7za7tuhRYDSrxQbCMoq3kjIbebPJY0RYOu27GdsTYejPnxpX8hWcpZ0Hem305nk0YA/dAXmVUpy0LkZITKHId3RQbpcMpbRxEMvCXzLCNrDEMIbCtj8vFXJoQxKXMTossbe1yqy5NuvTGMudCj6iAVHWfRc/fADGQjtMi3WbU6f9WGndcJ2tHeElYASTjHyOakoQ2Hb2nABSaxn73CpF1vKn7cJhfpYkOOo/1k7Vi61t/LUXVEuJjZwXrmFuZcyxppTXNrzdhw3qLJ9mSZvXVfp3NMX3ALKjX2q/Z6OPUiiW4Te7iUOnSEs+mgs+4tYk609BWNNBiq3nTILtrpr9dWPd3qXFt4Rasr4Eesnoqiy6AKUeW71e1EnHXSraCvQk/qG3o0XVTXU3Nn+N0m1QHEa6y3530u0DbOBg1JnsOHGxlM7bkRwAWJoqzLdapzM2aB3ptHxlhBX0ngjcdLC7WjgBfpBv+KvkX+Utu1htPWlIErg2E6S8fp72Ae4MglI+a+7o4g3KZ4ZslAQBE/lpDJM5HVmbbIDQNsPe6M5yNp3tB8cY57dcTDhoYktpMOxyUd6MM2m/Esy1OZqrJ91nFi1uHbrGxmzGxW17sjxGyFmz7OxnB9bwyusZxNUM/055Hpo4sZRicGhrr6hF/PMGozn0QujMWN2R27RsdbWtjY7eMSMpvCmN3RmxkuZSKrFXLysjwQmZ3AubkcMuvMzHXXSbJeBuNyhHgsV6wf4TWbsaysdWHOu5BZ5C9kbTEqxzGg1L8L9alnCnwXYVx2bWgvFmvCcdl3YJy2F3mcThaI1WWa/R2d6Zi3NLAMyn+Rl3JdO3Q6871F35c2fWz8NvOlBbQDOvO30Qy3vJlL4/NJb6VPJaSPSZ4ZjIrnISal8xa6NP0M8pL21mS8G2rSoKdKvIaO4Xri4+vcll7ktjTPbZ64klTV1faj1ioTVXErLvmt6CJIT4W5DNU8ERm1oKyIPpnDtd9eGbgYa532bqaknTKvpm2jA8Op29sYvreE761Lv70iZ/0Knjs413VNiC9qQpzXhAKPy/GOuTYtcm0Ol0v6YRh2+5HQFWAObYvKLOsxx/yHqmMN4uX5SEPb2mre01ZoXoeGKk9L8spjhbbEwjz4Pvd8P8+fc+wrzLGf8P5ldUsTWeGYu/sDlYG1hN/BBL/rq3LWlYt4HrDsjG9zPSM2cY6c0Y22v19oxHYmAmph4HQqMoVsVquIX5mH8d4mWozEOqu3xcrt0BkC82vSZpgBjGWeiZORvJ5mrNhUBuFiiW3k5rQfir4VUPiGX8lSXZqTEhuJXQGpCn7VXeK+vJ2Zwx6vNqfYm7ccp9SmanEEkAAjyVVzogr7lsmut8FSENtRVzUXXGc85ND6lJf6cRMul2o2XcctiWUa8xATiDGjrgS+07RwergWCUXx99V53Fm6g32VQdq2nLw1s2HVjmi1340WI0ojMntFkdJr36O66Fi3Q3I2Jdt7esINwUzklwDsXJZfWOFUqW9IDx3yS7Jnz0JL6Q3qs4XU25ue3uSZqImz43pvKKqyPmC9fYQqfao667ZUDawEQ4z6DZfdzejXfj0M5c3cr46Q2NzoTI/jnNDxzV2qLYn+Kx155sAVnDRycGecyocm733zdQKe2jPYuJ0bwJHCXL2LobX21smLt2a3HYre20h7Ua+qzeytZw/xWBUEQZkleNBDOs0uaPrDja94ra3rpSPvNWaUbvzasdZVbz1u7ZvxPIvwgYhxb6/EprqK3raAMGZGFdVNNA67E4+jkFd7BYQ0YFN3KtrLoDuFhT4QpxNG78h1sB2H1Oti52GWH8qh3Z9QDdZYog1dtUdA3HHsdqNbmaEuYnemZ8vuJBpaA3k4rIaDLT1yyTiwSXPiLBQutaNu9CZPYrUlOJK2Hi7YejJedtjYVDrRa09VMOxtTNixh4t+Y1HdsMGae8MWEyWL0D7Rp/XBlkn3JNL1cGzSQEXFsuSZs9j409ds6rsTfYJqqbLGo/EYJtlpc75tDcGIS/W3eYiKzh7N0GMjfjRybnB+W551vjAywxajJ0i577p0UP3KffVzA1+wGhhLYKZFLz/NDzHLd8Gq0RZB0xiC1ygdBTWCJJGa3jCaNR2QKEUbBG5bGOzji5PPJ3mte669cwPnvMP98lFqLsMtRjWSoC3dpoxaAzPzrQVC1SigY3DLYcAfirQI23qoqHrsgPTL3xxOOrzfoRfy/Eu255f8T4zOE10iQMXh9q040WvUoPERUkXoJ7T51GjWkMZTfuz1Efma/mohlyM56PK53Kj/qu8GvjfZ0sPYblQXkSAPNJHuzsF4N/J3PW4XrHYDRBz2bdZLFuGt7wYfxSwhQpKsQayA2NW905axBObftl+45/xzef+ZHXRgUaq0HrnH3yuDZ44R+VFbgBuOCjfoD2DtYioKo8Ah7flkKitMKkM91ittN/b1Cn++IFDhIO/YLsCwuQ99w9V/ryj8SGD6EqyE/OiZRlAcxVAUqxG/VzjpWdFgM1e5M+8ptV5IflSm1E1a+waIX3C0CXmiTarZxPPTChh1J9orxKPFru1Tv/R8/bMAOUdl6Lnm6Www534H4WLgPeiC+vjl/+PFi6vP/xHkkOZuAIWh6xvsPWiDPUaWfVL1g3wtkJixG+WfpItPqneFO4G6erL4VSvAEkNxk5qdhi7snVmIpEKiyGDcY1uBFtjKwGaj7TT2wxiZ3V8B7ySt33VE/Qs+BPEo9M55wdNh/rByUHID9pKso8iDHE7RdDF2A5ZcyXKcqv6F9Afyewt6WYM+YpzH2iGMibRSvpy+MsLc/8WP/EfOIlQh/4L7koJtmvv3KPVp4IDIH257vWhqu0YdsU7QI+C9pO+scFvJ+u06dBq4VRvLgl7yern+YPfyk2dTH+GHE6/idgOEj8v7b0LrBb5UsEe0vDBwNXIm4NZJGvqH4yI4giIl+nv4mQJqZ7tefmJdnH3CCZ4q7TKBHDLzP/5epGYLVMZQI71keCb7wIrfAnN9nP8K+3LkTAZflCGKEAfcqzFNO53fFie31+ernNbma0qXwSkYXL/+3PIo0KXseRk43go69BAHNU4j77CLJuLQZjSObcb16Jmi9Y47ipW4rY+8y3sh+fIpTlaRoznfwc8UUlhsPk6PF7MejoO5dZwv7/KInhsMD3PfGj0T990AFLdeYMWE5dE8xsAH+IFEN58Y08wH4FpTDjkQtgfp7rx4cnrGsty0OHQ/oENHHKxxa+hMCye4ZncFvb558/5A+hCQ5+splxF6XNk/wOs8X9GD3Jil7KoYRRX6/UGlrfGSyisVkRmpXebgpHeUFxN/GCpGFrskPzw+3mD8MKteWC4Gya2bWkfN8/sLt9S+QOPcgwSsxjEjRmSkzkHk08htwmGYpLo3h3upQxxeAO5MVV6nUtZGbmnoU4WRVEZq8aPDhO/Hf4xNEcL5FY27gzf4nM2Xh/b9K2rFKDdiHit4syKNBo8VgqjhjcqgLXCCxFQoBK/wLQG+DSqyNjivlluXQj6dtZDroMJXrs196SraZdBWPD1w1rpTJGgAd2DHxv121F4qclvMKyVvBPx3wvq8zFR9W97Zu7XWRsBxkzQuyD9fdx+wb3DML0Trwe6Pc43uSqhbEkMD9cEGeKcrkyUXAm7RRzWarg2lkskl3q0McmmdP7PJn9nkj5lNPo/SQtN7WeMihD+N30JEYczcFbiU6OZUFyX99vhpuA8c3eNvReWfGe4UtnEUQqXApXqfuVcZ/oh7z7uVu/79wdkvPH7HpQdd4M7LTG8mcuCBaJEnuSZCNim8QTcPsp1HbpCdv7qJuuu9xOskCe205qWW/l+LMPUh8NEM/cOfOFwjf5D/vXgXWh23uZ/2+e92AuWO9Y+2E/g3Bn/jOvhR/OGFpHGqgTaIX70N6Q0kRRlIlZGmKEJF5WHe+L+6Bflf2wIw4xZT6Q+USqEx/P1bpYlUahW0SVVUtoIiCP5n7f/37yTuLp0/ao39NM381C6C/uIu4gcar/n8RyqzFFZ0WFlM/Y/Vfv0/CYt/ZTeT93kEgSI09XPdjOu7Zhz+873Mye8gTm63BW03LgP/6OZyojP4Fo3uu15ZmD7ExMXYDUrRtSwPlEeZ9XeAj664FvrTvuxG13UI+l3+yVcE+uWfGh+W48fPouV+/IKmWPfHw4D38FtU9z58vxu+UOKjiIXkRRyKMGxSPd6pYap71/Plte909sL4uR0q5uHLdr4QuMHwAfb7j8ev9DfwrxnCzMFvTW+duBtwj9+Z3UfsD9yE4BNu6BW7d+gfrKsbHhjBkfwI7XP5bhLc5PkD0l1hXvrunpMKDx5OMK6alGPoobdD70BiyTDH5Rmosg7cNI+154f8HBI9SfQe8VfGRq5KCvzrxJKfp5xP018UfjQWOGFQYRRBUXmJE5jKWBipGtM/HL5cIL/PUErxf2HEVj7LFzYzuSY0TV8nfD5J//HfObe8buhWGB2LiFcx87/bdo31Ds4AHmDDPL6/H/kxkY6t72HrliMfDl13dw5k7u0HLrbo9xuAHH74C6UwSNZ+mOv4VGkDI3/IM05JW+J80OlzQb+uD/apPtiP6HM8moMVvixzz7DMwZenCvLPqFQiXQVvWRVi1wQf4rmA/kg2OON94MHqCfh08V4ivS9xZ8kOwl8lkW/1wzt8/utf/gdQSwECFAAUAAIACAAcSmdaG8BNVkQWAABpRgAAIwAAAAAAAAAAACAAtIEAAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWxQSwUGAAAAAAEAAQBRAAAAhRYAAAAA"
    // MemoRead( cSignedXmlFile )

    // Crear la solicitud SOAP
    cXmlStr = ;
        '<?xml version="1.0" encoding="UTF-8"?>' + ;
        '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:wcf="http://wcf.dian.colombia">' + ;
        '<soapenv:Header/>'+;
        '<soapenv:Body>' + ;
        '<wcf:SendBillSync>' + ;
        '<wcf:fileName>' + cNomZip +'</wcf:fileName>' + ;
        '<wcf:contentFile>' + cFacturaXml + '</wcf:contentFile>' + ;
        '</wcf:SendBillSync>' + ;
        '</soapenv:Body>' + ;
        '</soapenv:Envelope>'

   // Establecer cabeceras requeridas por el WS
   // LOS HEADER COMENTADOS LOS USA EL APP "SOAP UI"

   //aadd( aHeader, "Accept-Encoding: gzip,deflate" )
   aadd( aHeader, "Content-Type: application/soap+xml; charset=utf-8" )
   aadd( aHeader, "SOAPAction: http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync" )
   //aadd( aHeader, "Content-Length : "+ALLTRIM( STR(len(cXmlStr),12,0)) )
   //aadd( aHeader, "Host: vpfe.dian.gov.co" )
   //aadd( aHeader, "Connection: Keep-Alive" )
   //aadd( aHeader, "User-Agent: Apache-HttpClient/4.5.5 (Java/17.0.12)" )




   // Setear opciones
   curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, aHeader )
   curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
   curl_easy_setopt( hCurl, HB_CURLOPT_TIMEOUT, 30 )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYHOST, .F. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, cCertFile )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTTYPE, cCertType )
   curl_easy_setopt( hCurl, HB_CURLOPT_KEYPASSWD, cCertPass )
   curl_easy_setopt( hCurl, HB_CURLOPT_POST, .T.)
   curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cXmlStr )
   curl_easy_setopt( hCurl, HB_CURLOPT_DL_BUFF_SETUP )

   // echo server, para depurar .T.
   curl_easy_setopt( hCurl, HB_CURLOPT_VERBOSE, .F. )

   // No reutilizar conexiones
   curl_easy_setopt( hCurl, HB_CURLOPT_FRESH_CONNECT, .T.)
   curl_easy_setopt( hCurl, HB_CURLOPT_FORBID_REUSE, .T.)

   // Conexion
   nError    := curl_easy_perform( hCurl )
   cResponse := curl_easy_dl_buff_get( hCurl )

   alert(nError)
   alert(cResponse)

   if nError == 0
      hb_memowrit( "respuesta.xml", cResponse )
   else
      ? "Error :"+ curl_easy_strerror( nError ), nError
   endif

   curl_easy_cleanup( hCurl )
   curl_global_cleanup()

return





//***************************************************************************************
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wcf="http://wcf.dian.colombia">
<soap:Header/>
<soap:Body>
<wcf:SendBillSync>
<!--Optional:-->
<wcf:fileName>z006331767200025SP104100000250.zip</wcf:fileName>
<!--Optional:--> <wcf:contentFile>UEsDBBQAAgAIABxKZ1obwE1WRBYAAGlGAAAjAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWztPNtyo0qS7xMx/6DwedkNHVncJMDR9iwgJCELJATo9salQEjcDEhI+pv9hvmE+bEtQFdbard7pifO7h5HdBiyMrPyVplZVLm//W3re5UNiBM3DJ4f0EfkoQICM7TcwHl+WKd2jXqoJKkeWLoXBuD5IQgf/vby1798E4JN6JqgAsmDBGLGwVOoJ27yFOg+SJ6SCJiu7Zp6Cvk+rQ3vKTEXwNefton1dKCtYQ8l+ZOpm19kwYW+HwaM48TA0VMAXyMoXpAmF0yNn2PKQnTzFkML6rlI0+ipXs+y7DHDH8PYqWMIgtQRug5xrMR1fjtig236U9Pz2xQEuTduiZCkUAbL1YMnJ9w8meGTrZvpOtaBB8w0DgPI+UlJ43UOBJCuhh4pt7oFzvKvY/cRpIlbaICgNILXN+gj/oj9doWPEugnJMQjeiZJ3DsGQutTsa8UmtbcIA8nE0CqxD2o3w9Li/xsHFXyn8PMVmgmjwWLWhiBoBAB0tXDpKax/Rr2iNYhbd3X3QCi1nPYic8j+gjHHmB8Q37foAef4PDJIUkJvzV0GjkOXngxgE/pJUKOAx351IJ+vMH8GukgW84mDr2PSO/wmHW6CGN3X9jrBaXIJoGQDZpAaYz6Vr+LeJftFdoQxG5o3UTO8eGCg8Gnx2kLrsgXDMGIGkLWMPpb/Xrke/R8YB2pm5fUR/hNQetfkfRKLWAdzJHclSpHH8bAdrcvyrCc6vD6PYp2HPovaIlePH8PWQ1fGjCLlNjw5XMlvyf3lZvvxs1l0CjhOjbv2DY3vmDBCD6tQi60QMVzk5RxYKXYCa3nh+bDBUCCC/f5QQvcFFgVqSBJKrwZBqHvmpU8yblJHvEVO4wr/DqGq7QkLxIE0EbCj6QBWKJATvTkmDBxrqGWu49i5iv64YUblDH0cfwT492zS2E7JbTTTI/BMA43rgXi+8F2xBBalSJ5gbPhULrxcAUsjccNfq+0BEaq/EfLjYFpuv/4e1CBVhf8aA2SNEwquwpjrfVAT6CFTaiN7oHkP4+scs7I8aXkiEM7NHEcJZskdgzio1T3JT/q+Oslf7FxErNxy6rROk7WCLvZqNF4w64RtGETtkUjVJ4KroW6577PXXOlnQJMWNzSXRHYv1pPizaRJoZaJkKZFgDwlURsg8YwEtVRnLAw3GhaDYO2jQaJgwYJXxoGhYKmaRIYRaOoTdl6EzMxukFYDdLCKYzCbZtsog26CR+uLXCp2h0rXOfNT4P5Jvq/NbKJj5FNwRaDJrEmdasUfCfOv4N+x1ryqDBl3msksNmAqQT2xU5Y20Q2eMwbs0fYmD2aYd6GrH2Yb+oJ0GNz8Rb/7QhZgd0zShm5U9EGaRAw8yOUDpcmrNMYQiCYSRENy0SJpkUaTZymGs0GRViUgYMmoGicNFG6CSwSRSzDalC6YaBNxEBNmyApmqQNkqbNUrGDsO9aj/r3e49v9e/2L+Xwzd7nJ7qibxaMVdcJ9Lxf/WKbLVjPDyfaGo5gNE6bVA0jKatGNABZM/QmVQMGCQMDBSSCUg+n+fL6aYfFK6cHRd/sHQJABDAarArjOTAm0oV/Sxh1VHa1I56rQYFq0FlBLYcgOArDvn6t149wLNghxFG9mh/G4Lc40WvJQscazSPPEbBBDFcTKLQ/vdUaJtqwsEbecFF0jTBJrGZgNIQjFgHzhN00abhsitJaGkGN9SCBBdhPrl8/lfLKCSDYAA/Wb6uWHJUtJK1/nKHlOnB9f9EUULffrg1Qshnr3hq8iE7UVGM18Yh5b7abTmVGNlsGkhKsJmRjkOxZQmLYTRpT2XMh0iVxATgZ8HvGfQW7PFgO5vvtayFXO1L/KiNwqbscv7p0OCPn1XTL9PWQ7wRorzOVM6c7JAN8hC03Q4DMiC8aQd1F4Du7v9/KdTTM+7c4dUFyNNAxhL9oqKRgF0F2yS8zllNvR6uVPWT3o8Ga2DKkFXQmzKutKG/q9HU8WWW6zVQHpkTxnxur/jGXnFQuKK4zVAH6wTRl9iNqwTDboZkkQWvXWpFDnWLXfcQfDaLptN3dtz3SYMZ2A4Rv3VgU69sV39lZuDXwN3VW5NHBWB4ilFrdOK3RbqjozZ6sKFUn3Eu2kjXm6LbbUOSha0lUNt7MgoWKMMyG4jrU0M1eEdTyBquwbSgzqhWOGtux4776PrdeUu4K6wG7Lo2mPXax0qpvokH1tOrkbYrg+01PAYMFPVE1nxrx9qCarRpKu/XmJdnodeqtNIvEJpKeRMTbcitls34LBBNiAQYxOXWSLhmxZkRHfY+NuJm+WOMDxIrszg4A1fX7SuxUt1OJmqCSSo8jcd0k2TQKJWptuOko9mbEClGaI0eKMrFK7nbUDKHSJFobW6KfTtHGW/b8fPLZ2SOF3w6L9CdKyvX6njYQGm5T9dMLly+NYscB05UgdLkWx7E25zCZwDKOILxWBRVB8F4oa1lLnvVew7mw2JgSI/N9VmYyx9S2vSWzYh1pzDKi2B1LY3klsQIvsao2VkYrT1E13pERWlQRlFPgs4a0VXEkZ7wza41luc1nSUNs8XtRFbbwXyq12ozYIjoMqvFcluEyNt5ZHc/XJ9Ji3qH3QptdmD7vjHxvZ0zg78nWm+GjnYE1ohkG58La6Xza8/VpL50pbMvAthtj0otmKu+I7IGvk01lpC2Nxr2OMu5JMsRTke1Q1XowEFlVHovbdotRSr1MkUN6wxFCa3CM76/EtSgnGScX8nf4rNdS9wxoZ8hOajG4uJS34l4jxP1cL2DLS9hYF4VuXxxlWafUv9dipZa2grLtZ47UkuFvzVGRmTNoMXtxJGZ8OY/GZyG00QwVl0JDUgVCVJisW/JotVhLksc9TeFzW7fVMe+JKk85I2/cVr1RW9vzI5GhCt3ZkShISxHyMjFpL2y7LUYv9UxEHpkvoC3R3L7za7tuhRYDSrxQbCMoq3kjIbebPJY0RYOu27GdsTYejPnxpX8hWcpZ0Hem305nk0YA/dAXmVUpy0LkZITKHId3RQbpcMpbRxEMvCXzLCNrDEMIbCtj8vFXJoQxKXMTossbe1yqy5NuvTGMudCj6iAVHWfRc/fADGQjtMi3WbU6f9WGndcJ2tHeElYASTjHyOakoQ2Hb2nABSaxn73CpF1vKn7cJhfpYkOOo/1k7Vi61t/LUXVEuJjZwXrmFuZcyxppTXNrzdhw3qLJ9mSZvXVfp3NMX3ALKjX2q/Z6OPUiiW4Te7iUOnSEs+mgs+4tYk609BWNNBiq3nTILtrpr9dWPd3qXFt4Rasr4Eesnoqiy6AKUeW71e1EnHXSraCvQk/qG3o0XVTXU3Nn+N0m1QHEa6y3530u0DbOBg1JnsOHGxlM7bkRwAWJoqzLdapzM2aB3ptHxlhBX0ngjcdLC7WjgBfpBv+KvkX+Utu1htPWlIErg2E6S8fp72Ae4MglI+a+7o4g3KZ4ZslAQBE/lpDJM5HVmbbIDQNsPe6M5yNp3tB8cY57dcTDhoYktpMOxyUd6MM2m/Esy1OZqrJ91nFi1uHbrGxmzGxW17sjxGyFmz7OxnB9bwyusZxNUM/055Hpo4sZRicGhrr6hF/PMGozn0QujMWN2R27RsdbWtjY7eMSMpvCmN3RmxkuZSKrFXLysjwQmZ3AubkcMuvMzHXXSbJeBuNyhHgsV6wf4TWbsaysdWHOu5BZ5C9kbTEqxzGg1L8L9alnCnwXYVx2bWgvFmvCcdl3YJy2F3mcThaI1WWa/R2d6Zi3NLAMyn+Rl3JdO3Q6871F35c2fWz8NvOlBbQDOvO30Qy3vJlL4/NJb6VPJaSPSZ4ZjIrnISal8xa6NP0M8pL21mS8G2rSoKdKvIaO4Xri4+vcll7ktjTPbZ64klTV1faj1ioTVXErLvmt6CJIT4W5DNU8ERm1oKyIPpnDtd9eGbgYa532bqaknTKvpm2jA8Op29sYvreE761Lv70iZ/0Knjs413VNiC9qQpzXhAKPy/GOuTYtcm0Ol0v6YRh2+5HQFWAObYvKLOsxx/yHqmMN4uX5SEPb2mre01ZoXoeGKk9L8spjhbbEwjz4Pvd8P8+fc+wrzLGf8P5ldUsTWeGYu/sDlYG1hN/BBL/rq3LWlYt4HrDsjG9zPSM2cY6c0Y22v19oxHYmAmph4HQqMoVsVquIX5mH8d4mWozEOqu3xcrt0BkC82vSZpgBjGWeiZORvJ5mrNhUBuFiiW3k5rQfir4VUPiGX8lSXZqTEhuJXQGpCn7VXeK+vJ2Zwx6vNqfYm7ccp9SmanEEkAAjyVVzogr7lsmut8FSENtRVzUXXGc85ND6lJf6cRMul2o2XcctiWUa8xATiDGjrgS+07RwergWCUXx99V53Fm6g32VQdq2nLw1s2HVjmi1340WI0ojMntFkdJr36O66Fi3Q3I2Jdt7esINwUzklwDsXJZfWOFUqW9IDx3yS7Jnz0JL6Q3qs4XU25ue3uSZqImz43pvKKqyPmC9fYQqfao667ZUDawEQ4z6DZfdzejXfj0M5c3cr46Q2NzoTI/jnNDxzV2qLYn+Kx155sAVnDRycGecyocm733zdQKe2jPYuJ0bwJHCXL2LobX21smLt2a3HYre20h7Ua+qzeytZw/xWBUEQZkleNBDOs0uaPrDja94ra3rpSPvNWaUbvzasdZVbz1u7ZvxPIvwgYhxb6/EprqK3raAMGZGFdVNNA67E4+jkFd7BYQ0YFN3KtrLoDuFhT4QpxNG78h1sB2H1Oti52GWH8qh3Z9QDdZYog1dtUdA3HHsdqNbmaEuYnemZ8vuJBpaA3k4rIaDLT1yyTiwSXPiLBQutaNu9CZPYrUlOJK2Hi7YejJedtjYVDrRa09VMOxtTNixh4t+Y1HdsMGae8MWEyWL0D7Rp/XBlkn3JNL1cGzSQEXFsuSZs9j409ds6rsTfYJqqbLGo/EYJtlpc75tDcGIS/W3eYiKzh7N0GMjfjRybnB+W551vjAywxajJ0i577p0UP3KffVzA1+wGhhLYKZFLz/NDzHLd8Gq0RZB0xiC1ygdBTWCJJGa3jCaNR2QKEUbBG5bGOzji5PPJ3mte669cwPnvMP98lFqLsMtRjWSoC3dpoxaAzPzrQVC1SigY3DLYcAfirQI23qoqHrsgPTL3xxOOrzfoRfy/Eu255f8T4zOE10iQMXh9q040WvUoPERUkXoJ7T51GjWkMZTfuz1Efma/mohlyM56PK53Kj/qu8GvjfZ0sPYblQXkSAPNJHuzsF4N/J3PW4XrHYDRBz2bdZLFuGt7wYfxSwhQpKsQayA2NW905axBObftl+45/xzef+ZHXRgUaq0HrnH3yuDZ44R+VFbgBuOCjfoD2DtYioKo8Ah7flkKitMKkM91ittN/b1Cn++IFDhIO/YLsCwuQ99w9V/ryj8SGD6EqyE/OiZRlAcxVAUqxG/VzjpWdFgM1e5M+8ptV5IflSm1E1a+waIX3C0CXmiTarZxPPTChh1J9orxKPFru1Tv/R8/bMAOUdl6Lnm6Www534H4WLgPeiC+vjl/+PFi6vP/xHkkOZuAIWh6xvsPWiDPUaWfVL1g3wtkJixG+WfpItPqneFO4G6erL4VSvAEkNxk5qdhi7snVmIpEKiyGDcY1uBFtjKwGaj7TT2wxiZ3V8B7ySt33VE/Qs+BPEo9M55wdNh/rByUHID9pKso8iDHE7RdDF2A5ZcyXKcqv6F9Afyewt6WYM+YpzH2iGMibRSvpy+MsLc/8WP/EfOIlQh/4L7koJtmvv3KPVp4IDIH257vWhqu0YdsU7QI+C9pO+scFvJ+u06dBq4VRvLgl7yern+YPfyk2dTH+GHE6/idgOEj8v7b0LrBb5UsEe0vDBwNXIm4NZJGvqH4yI4giIl+nv4mQJqZ7tefmJdnH3CCZ4q7TKBHDLzP/5epGYLVMZQI71keCb7wIrfAnN9nP8K+3LkTAZflCGKEAfcqzFNO53fFie31+ernNbma0qXwSkYXL/+3PIo0KXseRk43go69BAHNU4j77CLJuLQZjSObcb16Jmi9Y47ipW4rY+8y3sh+fIpTlaRoznfwc8UUlhsPk6PF7MejoO5dZwv7/KInhsMD3PfGj0T990AFLdeYMWE5dE8xsAH+IFEN58Y08wH4FpTDjkQtgfp7rx4cnrGsty0OHQ/oENHHKxxa+hMCye4ZncFvb558/5A+hCQ5+splxF6XNk/wOs8X9GD3Jil7KoYRRX6/UGlrfGSyisVkRmpXebgpHeUFxN/GCpGFrskPzw+3mD8MKteWC4Gya2bWkfN8/sLt9S+QOPcgwSsxjEjRmSkzkHk08htwmGYpLo3h3upQxxeAO5MVV6nUtZGbmnoU4WRVEZq8aPDhO/Hf4xNEcL5FY27gzf4nM2Xh/b9K2rFKDdiHit4syKNBo8VgqjhjcqgLXCCxFQoBK/wLQG+DSqyNjivlluXQj6dtZDroMJXrs196SraZdBWPD1w1rpTJGgAd2DHxv121F4qclvMKyVvBPx3wvq8zFR9W97Zu7XWRsBxkzQuyD9fdx+wb3DML0Trwe6Pc43uSqhbEkMD9cEGeKcrkyUXAm7RRzWarg2lkskl3q0McmmdP7PJn9nkj5lNPo/SQtN7WeMihD+N30JEYczcFbiU6OZUFyX99vhpuA8c3eNvReWfGe4UtnEUQqXApXqfuVcZ/oh7z7uVu/79wdkvPH7HpQdd4M7LTG8mcuCBaJEnuSZCNim8QTcPsp1HbpCdv7qJuuu9xOskCe205qWW/l+LMPUh8NEM/cOfOFwjf5D/vXgXWh23uZ/2+e92AuWO9Y+2E/g3Bn/jOvhR/OGFpHGqgTaIX70N6Q0kRRlIlZGmKEJF5WHe+L+6Bflf2wIw4xZT6Q+USqEx/P1bpYlUahW0SVVUtoIiCP5n7f/37yTuLp0/ao39NM381C6C/uIu4gcar/n8RyqzFFZ0WFlM/Y/Vfv0/CYt/ZTeT93kEgSI09XPdjOu7Zhz+873Mye8gTm63BW03LgP/6OZyojP4Fo3uu15ZmD7ExMXYDUrRtSwPlEeZ9XeAj664FvrTvuxG13UI+l3+yVcE+uWfGh+W48fPouV+/IKmWPfHw4D38FtU9z58vxu+UOKjiIXkRRyKMGxSPd6pYap71/Plte909sL4uR0q5uHLdr4QuMHwAfb7j8ev9DfwrxnCzMFvTW+duBtwj9+Z3UfsD9yE4BNu6BW7d+gfrKsbHhjBkfwI7XP5bhLc5PkD0l1hXvrunpMKDx5OMK6alGPoobdD70BiyTDH5Rmosg7cNI+154f8HBI9SfQe8VfGRq5KCvzrxJKfp5xP018UfjQWOGFQYRRBUXmJE5jKWBipGtM/HL5cIL/PUErxf2HEVj7LFzYzuSY0TV8nfD5J//HfObe8buhWGB2LiFcx87/bdo31Ds4AHmDDPL6/H/kxkY6t72HrliMfDl13dw5k7u0HLrbo9xuAHH74C6UwSNZ+mOv4VGkDI3/IM05JW+J80OlzQb+uD/apPtiP6HM8moMVvixzz7DMwZenCvLPqFQiXQVvWRVi1wQf4rmA/kg2OON94MHqCfh08V4ivS9xZ8kOwl8lkW/1wzt8/utf/gdQSwECFAAUAAIACAAcSmdaG8BNVkQWAABpRgAAIwAAAAAAAAAAACAAtIEAAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWxQSwUGAAAAAAEAAQBRAAAAhRYAAAAA</wcf:contentFile>
</wcf:SendBillSync>
</soap:Body>
</soap:Envelope>]]>

No me funciona, te comento actualmente firmo y envió con ese certificado .p12 desde el app "SOAP UI 5.8" y desde un app en c# (lo quiero reemplazar por harbour)..

en SOAP UI , uso este xml : anexo al final

Si te parece te envió el certificado por correo, para que por favor me colabores

Gracias

// prg ajustado

Code: Select all | Expand

#include "hbcurl.ch"

PROCEDURE main()

   local nError, cResponse
   //local cXmlStr   := hb_memoread( "peticion.xml" )
   local aHeader   := {}

   local cUrl := "https://vpfe.dian.gov.co/WcfDianCustomerServices.svc"
   local cCertFile := "CERTIFICADO.p12"
   local cCertType := "P12" // o "PFX"
   local cCertPass := "xxxxxxxxxxxxxx"
   local cSignedXmlFile
   local cNomZip := "z006331767200025SP104100000250.zip"
   local cFacturaXml,cXmlStr

   local hCurl     := curl_easy_init()

    cFacturaXml :=  "UEsDBBQAAgAIABxKZ1obwE1WRBYAAGlGAAAjAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWztPNtyo0qS7xMx/6DwedkNHVncJMDR9iwgJCELJATo9salQEjcDEhI+pv9hvmE+bEtQFdbard7pifO7h5HdBiyMrPyVplZVLm//W3re5UNiBM3DJ4f0EfkoQICM7TcwHl+WKd2jXqoJKkeWLoXBuD5IQgf/vby1798E4JN6JqgAsmDBGLGwVOoJ27yFOg+SJ6SCJiu7Zp6Cvk+rQ3vKTEXwNefton1dKCtYQ8l+ZOpm19kwYW+HwaM48TA0VMAXyMoXpAmF0yNn2PKQnTzFkML6rlI0+ipXs+y7DHDH8PYqWMIgtQRug5xrMR1fjtig236U9Pz2xQEuTduiZCkUAbL1YMnJ9w8meGTrZvpOtaBB8w0DgPI+UlJ43UOBJCuhh4pt7oFzvKvY/cRpIlbaICgNILXN+gj/oj9doWPEugnJMQjeiZJ3DsGQutTsa8UmtbcIA8nE0CqxD2o3w9Li/xsHFXyn8PMVmgmjwWLWhiBoBAB0tXDpKax/Rr2iNYhbd3X3QCi1nPYic8j+gjHHmB8Q37foAef4PDJIUkJvzV0GjkOXngxgE/pJUKOAx351IJ+vMH8GukgW84mDr2PSO/wmHW6CGN3X9jrBaXIJoGQDZpAaYz6Vr+LeJftFdoQxG5o3UTO8eGCg8Gnx2kLrsgXDMGIGkLWMPpb/Xrke/R8YB2pm5fUR/hNQetfkfRKLWAdzJHclSpHH8bAdrcvyrCc6vD6PYp2HPovaIlePH8PWQ1fGjCLlNjw5XMlvyf3lZvvxs1l0CjhOjbv2DY3vmDBCD6tQi60QMVzk5RxYKXYCa3nh+bDBUCCC/f5QQvcFFgVqSBJKrwZBqHvmpU8yblJHvEVO4wr/DqGq7QkLxIE0EbCj6QBWKJATvTkmDBxrqGWu49i5iv64YUblDH0cfwT492zS2E7JbTTTI/BMA43rgXi+8F2xBBalSJ5gbPhULrxcAUsjccNfq+0BEaq/EfLjYFpuv/4e1CBVhf8aA2SNEwquwpjrfVAT6CFTaiN7oHkP4+scs7I8aXkiEM7NHEcJZskdgzio1T3JT/q+Oslf7FxErNxy6rROk7WCLvZqNF4w64RtGETtkUjVJ4KroW6577PXXOlnQJMWNzSXRHYv1pPizaRJoZaJkKZFgDwlURsg8YwEtVRnLAw3GhaDYO2jQaJgwYJXxoGhYKmaRIYRaOoTdl6EzMxukFYDdLCKYzCbZtsog26CR+uLXCp2h0rXOfNT4P5Jvq/NbKJj5FNwRaDJrEmdasUfCfOv4N+x1ryqDBl3msksNmAqQT2xU5Y20Q2eMwbs0fYmD2aYd6GrH2Yb+oJ0GNz8Rb/7QhZgd0zShm5U9EGaRAw8yOUDpcmrNMYQiCYSRENy0SJpkUaTZymGs0GRViUgYMmoGicNFG6CSwSRSzDalC6YaBNxEBNmyApmqQNkqbNUrGDsO9aj/r3e49v9e/2L+Xwzd7nJ7qibxaMVdcJ9Lxf/WKbLVjPDyfaGo5gNE6bVA0jKatGNABZM/QmVQMGCQMDBSSCUg+n+fL6aYfFK6cHRd/sHQJABDAarArjOTAm0oV/Sxh1VHa1I56rQYFq0FlBLYcgOArDvn6t149wLNghxFG9mh/G4Lc40WvJQscazSPPEbBBDFcTKLQ/vdUaJtqwsEbecFF0jTBJrGZgNIQjFgHzhN00abhsitJaGkGN9SCBBdhPrl8/lfLKCSDYAA/Wb6uWHJUtJK1/nKHlOnB9f9EUULffrg1Qshnr3hq8iE7UVGM18Yh5b7abTmVGNlsGkhKsJmRjkOxZQmLYTRpT2XMh0iVxATgZ8HvGfQW7PFgO5vvtayFXO1L/KiNwqbscv7p0OCPn1XTL9PWQ7wRorzOVM6c7JAN8hC03Q4DMiC8aQd1F4Du7v9/KdTTM+7c4dUFyNNAxhL9oqKRgF0F2yS8zllNvR6uVPWT3o8Ga2DKkFXQmzKutKG/q9HU8WWW6zVQHpkTxnxur/jGXnFQuKK4zVAH6wTRl9iNqwTDboZkkQWvXWpFDnWLXfcQfDaLptN3dtz3SYMZ2A4Rv3VgU69sV39lZuDXwN3VW5NHBWB4ilFrdOK3RbqjozZ6sKFUn3Eu2kjXm6LbbUOSha0lUNt7MgoWKMMyG4jrU0M1eEdTyBquwbSgzqhWOGtux4776PrdeUu4K6wG7Lo2mPXax0qpvokH1tOrkbYrg+01PAYMFPVE1nxrx9qCarRpKu/XmJdnodeqtNIvEJpKeRMTbcitls34LBBNiAQYxOXWSLhmxZkRHfY+NuJm+WOMDxIrszg4A1fX7SuxUt1OJmqCSSo8jcd0k2TQKJWptuOko9mbEClGaI0eKMrFK7nbUDKHSJFobW6KfTtHGW/b8fPLZ2SOF3w6L9CdKyvX6njYQGm5T9dMLly+NYscB05UgdLkWx7E25zCZwDKOILxWBRVB8F4oa1lLnvVew7mw2JgSI/N9VmYyx9S2vSWzYh1pzDKi2B1LY3klsQIvsao2VkYrT1E13pERWlQRlFPgs4a0VXEkZ7wza41luc1nSUNs8XtRFbbwXyq12ozYIjoMqvFcluEyNt5ZHc/XJ9Ji3qH3QptdmD7vjHxvZ0zg78nWm+GjnYE1ohkG58La6Xza8/VpL50pbMvAthtj0otmKu+I7IGvk01lpC2Nxr2OMu5JMsRTke1Q1XowEFlVHovbdotRSr1MkUN6wxFCa3CM76/EtSgnGScX8nf4rNdS9wxoZ8hOajG4uJS34l4jxP1cL2DLS9hYF4VuXxxlWafUv9dipZa2grLtZ47UkuFvzVGRmTNoMXtxJGZ8OY/GZyG00QwVl0JDUgVCVJisW/JotVhLksc9TeFzW7fVMe+JKk85I2/cVr1RW9vzI5GhCt3ZkShISxHyMjFpL2y7LUYv9UxEHpkvoC3R3L7za7tuhRYDSrxQbCMoq3kjIbebPJY0RYOu27GdsTYejPnxpX8hWcpZ0Hem305nk0YA/dAXmVUpy0LkZITKHId3RQbpcMpbRxEMvCXzLCNrDEMIbCtj8vFXJoQxKXMTossbe1yqy5NuvTGMudCj6iAVHWfRc/fADGQjtMi3WbU6f9WGndcJ2tHeElYASTjHyOakoQ2Hb2nABSaxn73CpF1vKn7cJhfpYkOOo/1k7Vi61t/LUXVEuJjZwXrmFuZcyxppTXNrzdhw3qLJ9mSZvXVfp3NMX3ALKjX2q/Z6OPUiiW4Te7iUOnSEs+mgs+4tYk609BWNNBiq3nTILtrpr9dWPd3qXFt4Rasr4Eesnoqiy6AKUeW71e1EnHXSraCvQk/qG3o0XVTXU3Nn+N0m1QHEa6y3530u0DbOBg1JnsOHGxlM7bkRwAWJoqzLdapzM2aB3ptHxlhBX0ngjcdLC7WjgBfpBv+KvkX+Utu1htPWlIErg2E6S8fp72Ae4MglI+a+7o4g3KZ4ZslAQBE/lpDJM5HVmbbIDQNsPe6M5yNp3tB8cY57dcTDhoYktpMOxyUd6MM2m/Esy1OZqrJ91nFi1uHbrGxmzGxW17sjxGyFmz7OxnB9bwyusZxNUM/055Hpo4sZRicGhrr6hF/PMGozn0QujMWN2R27RsdbWtjY7eMSMpvCmN3RmxkuZSKrFXLysjwQmZ3AubkcMuvMzHXXSbJeBuNyhHgsV6wf4TWbsaysdWHOu5BZ5C9kbTEqxzGg1L8L9alnCnwXYVx2bWgvFmvCcdl3YJy2F3mcThaI1WWa/R2d6Zi3NLAMyn+Rl3JdO3Q6871F35c2fWz8NvOlBbQDOvO30Qy3vJlL4/NJb6VPJaSPSZ4ZjIrnISal8xa6NP0M8pL21mS8G2rSoKdKvIaO4Xri4+vcll7ktjTPbZ64klTV1faj1ioTVXErLvmt6CJIT4W5DNU8ERm1oKyIPpnDtd9eGbgYa532bqaknTKvpm2jA8Op29sYvreE761Lv70iZ/0Knjs413VNiC9qQpzXhAKPy/GOuTYtcm0Ol0v6YRh2+5HQFWAObYvKLOsxx/yHqmMN4uX5SEPb2mre01ZoXoeGKk9L8spjhbbEwjz4Pvd8P8+fc+wrzLGf8P5ldUsTWeGYu/sDlYG1hN/BBL/rq3LWlYt4HrDsjG9zPSM2cY6c0Y22v19oxHYmAmph4HQqMoVsVquIX5mH8d4mWozEOqu3xcrt0BkC82vSZpgBjGWeiZORvJ5mrNhUBuFiiW3k5rQfir4VUPiGX8lSXZqTEhuJXQGpCn7VXeK+vJ2Zwx6vNqfYm7ccp9SmanEEkAAjyVVzogr7lsmut8FSENtRVzUXXGc85ND6lJf6cRMul2o2XcctiWUa8xATiDGjrgS+07RwergWCUXx99V53Fm6g32VQdq2nLw1s2HVjmi1340WI0ojMntFkdJr36O66Fi3Q3I2Jdt7esINwUzklwDsXJZfWOFUqW9IDx3yS7Jnz0JL6Q3qs4XU25ue3uSZqImz43pvKKqyPmC9fYQqfao667ZUDawEQ4z6DZfdzejXfj0M5c3cr46Q2NzoTI/jnNDxzV2qLYn+Kx155sAVnDRycGecyocm733zdQKe2jPYuJ0bwJHCXL2LobX21smLt2a3HYre20h7Ua+qzeytZw/xWBUEQZkleNBDOs0uaPrDja94ra3rpSPvNWaUbvzasdZVbz1u7ZvxPIvwgYhxb6/EprqK3raAMGZGFdVNNA67E4+jkFd7BYQ0YFN3KtrLoDuFhT4QpxNG78h1sB2H1Oti52GWH8qh3Z9QDdZYog1dtUdA3HHsdqNbmaEuYnemZ8vuJBpaA3k4rIaDLT1yyTiwSXPiLBQutaNu9CZPYrUlOJK2Hi7YejJedtjYVDrRa09VMOxtTNixh4t+Y1HdsMGae8MWEyWL0D7Rp/XBlkn3JNL1cGzSQEXFsuSZs9j409ds6rsTfYJqqbLGo/EYJtlpc75tDcGIS/W3eYiKzh7N0GMjfjRybnB+W551vjAywxajJ0i577p0UP3KffVzA1+wGhhLYKZFLz/NDzHLd8Gq0RZB0xiC1ygdBTWCJJGa3jCaNR2QKEUbBG5bGOzji5PPJ3mte669cwPnvMP98lFqLsMtRjWSoC3dpoxaAzPzrQVC1SigY3DLYcAfirQI23qoqHrsgPTL3xxOOrzfoRfy/Eu255f8T4zOE10iQMXh9q040WvUoPERUkXoJ7T51GjWkMZTfuz1Efma/mohlyM56PK53Kj/qu8GvjfZ0sPYblQXkSAPNJHuzsF4N/J3PW4XrHYDRBz2bdZLFuGt7wYfxSwhQpKsQayA2NW905axBObftl+45/xzef+ZHXRgUaq0HrnH3yuDZ44R+VFbgBuOCjfoD2DtYioKo8Ah7flkKitMKkM91ittN/b1Cn++IFDhIO/YLsCwuQ99w9V/ryj8SGD6EqyE/OiZRlAcxVAUqxG/VzjpWdFgM1e5M+8ptV5IflSm1E1a+waIX3C0CXmiTarZxPPTChh1J9orxKPFru1Tv/R8/bMAOUdl6Lnm6Www534H4WLgPeiC+vjl/+PFi6vP/xHkkOZuAIWh6xvsPWiDPUaWfVL1g3wtkJixG+WfpItPqneFO4G6erL4VSvAEkNxk5qdhi7snVmIpEKiyGDcY1uBFtjKwGaj7TT2wxiZ3V8B7ySt33VE/Qs+BPEo9M55wdNh/rByUHID9pKso8iDHE7RdDF2A5ZcyXKcqv6F9Afyewt6WYM+YpzH2iGMibRSvpy+MsLc/8WP/EfOIlQh/4L7koJtmvv3KPVp4IDIH257vWhqu0YdsU7QI+C9pO+scFvJ+u06dBq4VRvLgl7yern+YPfyk2dTH+GHE6/idgOEj8v7b0LrBb5UsEe0vDBwNXIm4NZJGvqH4yI4giIl+nv4mQJqZ7tefmJdnH3CCZ4q7TKBHDLzP/5epGYLVMZQI71keCb7wIrfAnN9nP8K+3LkTAZflCGKEAfcqzFNO53fFie31+ernNbma0qXwSkYXL/+3PIo0KXseRk43go69BAHNU4j77CLJuLQZjSObcb16Jmi9Y47ipW4rY+8y3sh+fIpTlaRoznfwc8UUlhsPk6PF7MejoO5dZwv7/KInhsMD3PfGj0T990AFLdeYMWE5dE8xsAH+IFEN58Y08wH4FpTDjkQtgfp7rx4cnrGsty0OHQ/oENHHKxxa+hMCye4ZncFvb558/5A+hCQ5+splxF6XNk/wOs8X9GD3Jil7KoYRRX6/UGlrfGSyisVkRmpXebgpHeUFxN/GCpGFrskPzw+3mD8MKteWC4Gya2bWkfN8/sLt9S+QOPcgwSsxjEjRmSkzkHk08htwmGYpLo3h3upQxxeAO5MVV6nUtZGbmnoU4WRVEZq8aPDhO/Hf4xNEcL5FY27gzf4nM2Xh/b9K2rFKDdiHit4syKNBo8VgqjhjcqgLXCCxFQoBK/wLQG+DSqyNjivlluXQj6dtZDroMJXrs196SraZdBWPD1w1rpTJGgAd2DHxv121F4qclvMKyVvBPx3wvq8zFR9W97Zu7XWRsBxkzQuyD9fdx+wb3DML0Trwe6Pc43uSqhbEkMD9cEGeKcrkyUXAm7RRzWarg2lkskl3q0McmmdP7PJn9nkj5lNPo/SQtN7WeMihD+N30JEYczcFbiU6OZUFyX99vhpuA8c3eNvReWfGe4UtnEUQqXApXqfuVcZ/oh7z7uVu/79wdkvPH7HpQdd4M7LTG8mcuCBaJEnuSZCNim8QTcPsp1HbpCdv7qJuuu9xOskCe205qWW/l+LMPUh8NEM/cOfOFwjf5D/vXgXWh23uZ/2+e92AuWO9Y+2E/g3Bn/jOvhR/OGFpHGqgTaIX70N6Q0kRRlIlZGmKEJF5WHe+L+6Bflf2wIw4xZT6Q+USqEx/P1bpYlUahW0SVVUtoIiCP5n7f/37yTuLp0/ao39NM381C6C/uIu4gcar/n8RyqzFFZ0WFlM/Y/Vfv0/CYt/ZTeT93kEgSI09XPdjOu7Zhz+873Mye8gTm63BW03LgP/6OZyojP4Fo3uu15ZmD7ExMXYDUrRtSwPlEeZ9XeAj664FvrTvuxG13UI+l3+yVcE+uWfGh+W48fPouV+/IKmWPfHw4D38FtU9z58vxu+UOKjiIXkRRyKMGxSPd6pYap71/Plte909sL4uR0q5uHLdr4QuMHwAfb7j8ev9DfwrxnCzMFvTW+duBtwj9+Z3UfsD9yE4BNu6BW7d+gfrKsbHhjBkfwI7XP5bhLc5PkD0l1hXvrunpMKDx5OMK6alGPoobdD70BiyTDH5Rmosg7cNI+154f8HBI9SfQe8VfGRq5KCvzrxJKfp5xP018UfjQWOGFQYRRBUXmJE5jKWBipGtM/HL5cIL/PUErxf2HEVj7LFzYzuSY0TV8nfD5J//HfObe8buhWGB2LiFcx87/bdo31Ds4AHmDDPL6/H/kxkY6t72HrliMfDl13dw5k7u0HLrbo9xuAHH74C6UwSNZ+mOv4VGkDI3/IM05JW+J80OlzQb+uD/apPtiP6HM8moMVvixzz7DMwZenCvLPqFQiXQVvWRVi1wQf4rmA/kg2OON94MHqCfh08V4ivS9xZ8kOwl8lkW/1wzt8/utf/gdQSwECFAAUAAIACAAcSmdaG8BNVkQWAABpRgAAIwAAAAAAAAAAACAAtIEAAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWxQSwUGAAAAAAEAAQBRAAAAhRYAAAAA"
    // MemoRead( cSignedXmlFile )

    // Crear la solicitud SOAP
    cXmlStr = ;
        '<?xml version="1.0" encoding="UTF-8"?>' + ;
        '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:wcf="http://wcf.dian.colombia">' + ;
        '<soapenv:Header/>'+;
        '<soapenv:Body>' + ;
        '<wcf:SendBillSync>' + ;
        '<wcf:fileName>' + cNomZip +'</wcf:fileName>' + ;
        '<wcf:contentFile>' + cFacturaXml + '</wcf:contentFile>' + ;
        '</wcf:SendBillSync>' + ;
        '</soapenv:Body>' + ;
        '</soapenv:Envelope>'

   // Establecer cabeceras requeridas por el WS
   // LOS HEADER COMENTADOS LOS USA EL APP "SOAP UI"

   //aadd( aHeader, "Accept-Encoding: gzip,deflate" )
   aadd( aHeader, "Content-Type: application/soap+xml; charset=utf-8" )
   aadd( aHeader, "SOAPAction: http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync" )
   //aadd( aHeader, "Content-Length : "+ALLTRIM( STR(len(cXmlStr),12,0)) )
   //aadd( aHeader, "Host: vpfe.dian.gov.co" )
   //aadd( aHeader, "Connection: Keep-Alive" )
   //aadd( aHeader, "User-Agent: Apache-HttpClient/4.5.5 (Java/17.0.12)" )




   // Setear opciones
   curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, aHeader )
   curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
   curl_easy_setopt( hCurl, HB_CURLOPT_TIMEOUT, 30 )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYPEER, .F. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYHOST, .F. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, cCertFile )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTTYPE, cCertType )
   curl_easy_setopt( hCurl, HB_CURLOPT_KEYPASSWD, cCertPass )
   curl_easy_setopt( hCurl, HB_CURLOPT_POST, .T.)
   curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cXmlStr )
   curl_easy_setopt( hCurl, HB_CURLOPT_DL_BUFF_SETUP )

   // echo server, para depurar .T.
   curl_easy_setopt( hCurl, HB_CURLOPT_VERBOSE, .F. )

   // No reutilizar conexiones
   curl_easy_setopt( hCurl, HB_CURLOPT_FRESH_CONNECT, .T.)
   curl_easy_setopt( hCurl, HB_CURLOPT_FORBID_REUSE, .T.)

   // Conexion
   nError    := curl_easy_perform( hCurl )
   cResponse := curl_easy_dl_buff_get( hCurl )

   alert(nError)
   alert(cResponse)

   if nError == 0
      hb_memowrit( "respuesta.xml", cResponse )
   else
      ? "Error :"+ curl_easy_strerror( nError ), nError
   endif

   curl_easy_cleanup( hCurl )
   curl_global_cleanup()

return





//***************************************************************************************
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wcf="http://wcf.dian.colombia">
<soap:Header/>
<soap:Body>
<wcf:SendBillSync>
<!--Optional:-->
<wcf:fileName>z006331767200025SP104100000250.zip</wcf:fileName>
<!--Optional:--> <wcf:contentFile>UEsDBBQAAgAIABxKZ1obwE1WRBYAAGlGAAAjAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWztPNtyo0qS7xMx/6DwedkNHVncJMDR9iwgJCELJATo9salQEjcDEhI+pv9hvmE+bEtQFdbard7pifO7h5HdBiyMrPyVplZVLm//W3re5UNiBM3DJ4f0EfkoQICM7TcwHl+WKd2jXqoJKkeWLoXBuD5IQgf/vby1798E4JN6JqgAsmDBGLGwVOoJ27yFOg+SJ6SCJiu7Zp6Cvk+rQ3vKTEXwNefton1dKCtYQ8l+ZOpm19kwYW+HwaM48TA0VMAXyMoXpAmF0yNn2PKQnTzFkML6rlI0+ipXs+y7DHDH8PYqWMIgtQRug5xrMR1fjtig236U9Pz2xQEuTduiZCkUAbL1YMnJ9w8meGTrZvpOtaBB8w0DgPI+UlJ43UOBJCuhh4pt7oFzvKvY/cRpIlbaICgNILXN+gj/oj9doWPEugnJMQjeiZJ3DsGQutTsa8UmtbcIA8nE0CqxD2o3w9Li/xsHFXyn8PMVmgmjwWLWhiBoBAB0tXDpKax/Rr2iNYhbd3X3QCi1nPYic8j+gjHHmB8Q37foAef4PDJIUkJvzV0GjkOXngxgE/pJUKOAx351IJ+vMH8GukgW84mDr2PSO/wmHW6CGN3X9jrBaXIJoGQDZpAaYz6Vr+LeJftFdoQxG5o3UTO8eGCg8Gnx2kLrsgXDMGIGkLWMPpb/Xrke/R8YB2pm5fUR/hNQetfkfRKLWAdzJHclSpHH8bAdrcvyrCc6vD6PYp2HPovaIlePH8PWQ1fGjCLlNjw5XMlvyf3lZvvxs1l0CjhOjbv2DY3vmDBCD6tQi60QMVzk5RxYKXYCa3nh+bDBUCCC/f5QQvcFFgVqSBJKrwZBqHvmpU8yblJHvEVO4wr/DqGq7QkLxIE0EbCj6QBWKJATvTkmDBxrqGWu49i5iv64YUblDH0cfwT492zS2E7JbTTTI/BMA43rgXi+8F2xBBalSJ5gbPhULrxcAUsjccNfq+0BEaq/EfLjYFpuv/4e1CBVhf8aA2SNEwquwpjrfVAT6CFTaiN7oHkP4+scs7I8aXkiEM7NHEcJZskdgzio1T3JT/q+Oslf7FxErNxy6rROk7WCLvZqNF4w64RtGETtkUjVJ4KroW6577PXXOlnQJMWNzSXRHYv1pPizaRJoZaJkKZFgDwlURsg8YwEtVRnLAw3GhaDYO2jQaJgwYJXxoGhYKmaRIYRaOoTdl6EzMxukFYDdLCKYzCbZtsog26CR+uLXCp2h0rXOfNT4P5Jvq/NbKJj5FNwRaDJrEmdasUfCfOv4N+x1ryqDBl3msksNmAqQT2xU5Y20Q2eMwbs0fYmD2aYd6GrH2Yb+oJ0GNz8Rb/7QhZgd0zShm5U9EGaRAw8yOUDpcmrNMYQiCYSRENy0SJpkUaTZymGs0GRViUgYMmoGicNFG6CSwSRSzDalC6YaBNxEBNmyApmqQNkqbNUrGDsO9aj/r3e49v9e/2L+Xwzd7nJ7qibxaMVdcJ9Lxf/WKbLVjPDyfaGo5gNE6bVA0jKatGNABZM/QmVQMGCQMDBSSCUg+n+fL6aYfFK6cHRd/sHQJABDAarArjOTAm0oV/Sxh1VHa1I56rQYFq0FlBLYcgOArDvn6t149wLNghxFG9mh/G4Lc40WvJQscazSPPEbBBDFcTKLQ/vdUaJtqwsEbecFF0jTBJrGZgNIQjFgHzhN00abhsitJaGkGN9SCBBdhPrl8/lfLKCSDYAA/Wb6uWHJUtJK1/nKHlOnB9f9EUULffrg1Qshnr3hq8iE7UVGM18Yh5b7abTmVGNlsGkhKsJmRjkOxZQmLYTRpT2XMh0iVxATgZ8HvGfQW7PFgO5vvtayFXO1L/KiNwqbscv7p0OCPn1XTL9PWQ7wRorzOVM6c7JAN8hC03Q4DMiC8aQd1F4Du7v9/KdTTM+7c4dUFyNNAxhL9oqKRgF0F2yS8zllNvR6uVPWT3o8Ga2DKkFXQmzKutKG/q9HU8WWW6zVQHpkTxnxur/jGXnFQuKK4zVAH6wTRl9iNqwTDboZkkQWvXWpFDnWLXfcQfDaLptN3dtz3SYMZ2A4Rv3VgU69sV39lZuDXwN3VW5NHBWB4ilFrdOK3RbqjozZ6sKFUn3Eu2kjXm6LbbUOSha0lUNt7MgoWKMMyG4jrU0M1eEdTyBquwbSgzqhWOGtux4776PrdeUu4K6wG7Lo2mPXax0qpvokH1tOrkbYrg+01PAYMFPVE1nxrx9qCarRpKu/XmJdnodeqtNIvEJpKeRMTbcitls34LBBNiAQYxOXWSLhmxZkRHfY+NuJm+WOMDxIrszg4A1fX7SuxUt1OJmqCSSo8jcd0k2TQKJWptuOko9mbEClGaI0eKMrFK7nbUDKHSJFobW6KfTtHGW/b8fPLZ2SOF3w6L9CdKyvX6njYQGm5T9dMLly+NYscB05UgdLkWx7E25zCZwDKOILxWBRVB8F4oa1lLnvVew7mw2JgSI/N9VmYyx9S2vSWzYh1pzDKi2B1LY3klsQIvsao2VkYrT1E13pERWlQRlFPgs4a0VXEkZ7wza41luc1nSUNs8XtRFbbwXyq12ozYIjoMqvFcluEyNt5ZHc/XJ9Ji3qH3QptdmD7vjHxvZ0zg78nWm+GjnYE1ohkG58La6Xza8/VpL50pbMvAthtj0otmKu+I7IGvk01lpC2Nxr2OMu5JMsRTke1Q1XowEFlVHovbdotRSr1MkUN6wxFCa3CM76/EtSgnGScX8nf4rNdS9wxoZ8hOajG4uJS34l4jxP1cL2DLS9hYF4VuXxxlWafUv9dipZa2grLtZ47UkuFvzVGRmTNoMXtxJGZ8OY/GZyG00QwVl0JDUgVCVJisW/JotVhLksc9TeFzW7fVMe+JKk85I2/cVr1RW9vzI5GhCt3ZkShISxHyMjFpL2y7LUYv9UxEHpkvoC3R3L7za7tuhRYDSrxQbCMoq3kjIbebPJY0RYOu27GdsTYejPnxpX8hWcpZ0Hem305nk0YA/dAXmVUpy0LkZITKHId3RQbpcMpbRxEMvCXzLCNrDEMIbCtj8vFXJoQxKXMTossbe1yqy5NuvTGMudCj6iAVHWfRc/fADGQjtMi3WbU6f9WGndcJ2tHeElYASTjHyOakoQ2Hb2nABSaxn73CpF1vKn7cJhfpYkOOo/1k7Vi61t/LUXVEuJjZwXrmFuZcyxppTXNrzdhw3qLJ9mSZvXVfp3NMX3ALKjX2q/Z6OPUiiW4Te7iUOnSEs+mgs+4tYk609BWNNBiq3nTILtrpr9dWPd3qXFt4Rasr4Eesnoqiy6AKUeW71e1EnHXSraCvQk/qG3o0XVTXU3Nn+N0m1QHEa6y3530u0DbOBg1JnsOHGxlM7bkRwAWJoqzLdapzM2aB3ptHxlhBX0ngjcdLC7WjgBfpBv+KvkX+Utu1htPWlIErg2E6S8fp72Ae4MglI+a+7o4g3KZ4ZslAQBE/lpDJM5HVmbbIDQNsPe6M5yNp3tB8cY57dcTDhoYktpMOxyUd6MM2m/Esy1OZqrJ91nFi1uHbrGxmzGxW17sjxGyFmz7OxnB9bwyusZxNUM/055Hpo4sZRicGhrr6hF/PMGozn0QujMWN2R27RsdbWtjY7eMSMpvCmN3RmxkuZSKrFXLysjwQmZ3AubkcMuvMzHXXSbJeBuNyhHgsV6wf4TWbsaysdWHOu5BZ5C9kbTEqxzGg1L8L9alnCnwXYVx2bWgvFmvCcdl3YJy2F3mcThaI1WWa/R2d6Zi3NLAMyn+Rl3JdO3Q6871F35c2fWz8NvOlBbQDOvO30Qy3vJlL4/NJb6VPJaSPSZ4ZjIrnISal8xa6NP0M8pL21mS8G2rSoKdKvIaO4Xri4+vcll7ktjTPbZ64klTV1faj1ioTVXErLvmt6CJIT4W5DNU8ERm1oKyIPpnDtd9eGbgYa532bqaknTKvpm2jA8Op29sYvreE761Lv70iZ/0Knjs413VNiC9qQpzXhAKPy/GOuTYtcm0Ol0v6YRh2+5HQFWAObYvKLOsxx/yHqmMN4uX5SEPb2mre01ZoXoeGKk9L8spjhbbEwjz4Pvd8P8+fc+wrzLGf8P5ldUsTWeGYu/sDlYG1hN/BBL/rq3LWlYt4HrDsjG9zPSM2cY6c0Y22v19oxHYmAmph4HQqMoVsVquIX5mH8d4mWozEOqu3xcrt0BkC82vSZpgBjGWeiZORvJ5mrNhUBuFiiW3k5rQfir4VUPiGX8lSXZqTEhuJXQGpCn7VXeK+vJ2Zwx6vNqfYm7ccp9SmanEEkAAjyVVzogr7lsmut8FSENtRVzUXXGc85ND6lJf6cRMul2o2XcctiWUa8xATiDGjrgS+07RwergWCUXx99V53Fm6g32VQdq2nLw1s2HVjmi1340WI0ojMntFkdJr36O66Fi3Q3I2Jdt7esINwUzklwDsXJZfWOFUqW9IDx3yS7Jnz0JL6Q3qs4XU25ue3uSZqImz43pvKKqyPmC9fYQqfao667ZUDawEQ4z6DZfdzejXfj0M5c3cr46Q2NzoTI/jnNDxzV2qLYn+Kx155sAVnDRycGecyocm733zdQKe2jPYuJ0bwJHCXL2LobX21smLt2a3HYre20h7Ua+qzeytZw/xWBUEQZkleNBDOs0uaPrDja94ra3rpSPvNWaUbvzasdZVbz1u7ZvxPIvwgYhxb6/EprqK3raAMGZGFdVNNA67E4+jkFd7BYQ0YFN3KtrLoDuFhT4QpxNG78h1sB2H1Oti52GWH8qh3Z9QDdZYog1dtUdA3HHsdqNbmaEuYnemZ8vuJBpaA3k4rIaDLT1yyTiwSXPiLBQutaNu9CZPYrUlOJK2Hi7YejJedtjYVDrRa09VMOxtTNixh4t+Y1HdsMGae8MWEyWL0D7Rp/XBlkn3JNL1cGzSQEXFsuSZs9j409ds6rsTfYJqqbLGo/EYJtlpc75tDcGIS/W3eYiKzh7N0GMjfjRybnB+W551vjAywxajJ0i577p0UP3KffVzA1+wGhhLYKZFLz/NDzHLd8Gq0RZB0xiC1ygdBTWCJJGa3jCaNR2QKEUbBG5bGOzji5PPJ3mte669cwPnvMP98lFqLsMtRjWSoC3dpoxaAzPzrQVC1SigY3DLYcAfirQI23qoqHrsgPTL3xxOOrzfoRfy/Eu255f8T4zOE10iQMXh9q040WvUoPERUkXoJ7T51GjWkMZTfuz1Efma/mohlyM56PK53Kj/qu8GvjfZ0sPYblQXkSAPNJHuzsF4N/J3PW4XrHYDRBz2bdZLFuGt7wYfxSwhQpKsQayA2NW905axBObftl+45/xzef+ZHXRgUaq0HrnH3yuDZ44R+VFbgBuOCjfoD2DtYioKo8Ah7flkKitMKkM91ittN/b1Cn++IFDhIO/YLsCwuQ99w9V/ryj8SGD6EqyE/OiZRlAcxVAUqxG/VzjpWdFgM1e5M+8ptV5IflSm1E1a+waIX3C0CXmiTarZxPPTChh1J9orxKPFru1Tv/R8/bMAOUdl6Lnm6Www534H4WLgPeiC+vjl/+PFi6vP/xHkkOZuAIWh6xvsPWiDPUaWfVL1g3wtkJixG+WfpItPqneFO4G6erL4VSvAEkNxk5qdhi7snVmIpEKiyGDcY1uBFtjKwGaj7TT2wxiZ3V8B7ySt33VE/Qs+BPEo9M55wdNh/rByUHID9pKso8iDHE7RdDF2A5ZcyXKcqv6F9Afyewt6WYM+YpzH2iGMibRSvpy+MsLc/8WP/EfOIlQh/4L7koJtmvv3KPVp4IDIH257vWhqu0YdsU7QI+C9pO+scFvJ+u06dBq4VRvLgl7yern+YPfyk2dTH+GHE6/idgOEj8v7b0LrBb5UsEe0vDBwNXIm4NZJGvqH4yI4giIl+nv4mQJqZ7tefmJdnH3CCZ4q7TKBHDLzP/5epGYLVMZQI71keCb7wIrfAnN9nP8K+3LkTAZflCGKEAfcqzFNO53fFie31+ernNbma0qXwSkYXL/+3PIo0KXseRk43go69BAHNU4j77CLJuLQZjSObcb16Jmi9Y47ipW4rY+8y3sh+fIpTlaRoznfwc8UUlhsPk6PF7MejoO5dZwv7/KInhsMD3PfGj0T990AFLdeYMWE5dE8xsAH+IFEN58Y08wH4FpTDjkQtgfp7rx4cnrGsty0OHQ/oENHHKxxa+hMCye4ZncFvb558/5A+hCQ5+splxF6XNk/wOs8X9GD3Jil7KoYRRX6/UGlrfGSyisVkRmpXebgpHeUFxN/GCpGFrskPzw+3mD8MKteWC4Gya2bWkfN8/sLt9S+QOPcgwSsxjEjRmSkzkHk08htwmGYpLo3h3upQxxeAO5MVV6nUtZGbmnoU4WRVEZq8aPDhO/Hf4xNEcL5FY27gzf4nM2Xh/b9K2rFKDdiHit4syKNBo8VgqjhjcqgLXCCxFQoBK/wLQG+DSqyNjivlluXQj6dtZDroMJXrs196SraZdBWPD1w1rpTJGgAd2DHxv121F4qclvMKyVvBPx3wvq8zFR9W97Zu7XWRsBxkzQuyD9fdx+wb3DML0Trwe6Pc43uSqhbEkMD9cEGeKcrkyUXAm7RRzWarg2lkskl3q0McmmdP7PJn9nkj5lNPo/SQtN7WeMihD+N30JEYczcFbiU6OZUFyX99vhpuA8c3eNvReWfGe4UtnEUQqXApXqfuVcZ/oh7z7uVu/79wdkvPH7HpQdd4M7LTG8mcuCBaJEnuSZCNim8QTcPsp1HbpCdv7qJuuu9xOskCe205qWW/l+LMPUh8NEM/cOfOFwjf5D/vXgXWh23uZ/2+e92AuWO9Y+2E/g3Bn/jOvhR/OGFpHGqgTaIX70N6Q0kRRlIlZGmKEJF5WHe+L+6Bflf2wIw4xZT6Q+USqEx/P1bpYlUahW0SVVUtoIiCP5n7f/37yTuLp0/ao39NM381C6C/uIu4gcar/n8RyqzFFZ0WFlM/Y/Vfv0/CYt/ZTeT93kEgSI09XPdjOu7Zhz+873Mye8gTm63BW03LgP/6OZyojP4Fo3uu15ZmD7ExMXYDUrRtSwPlEeZ9XeAj664FvrTvuxG13UI+l3+yVcE+uWfGh+W48fPouV+/IKmWPfHw4D38FtU9z58vxu+UOKjiIXkRRyKMGxSPd6pYap71/Plte909sL4uR0q5uHLdr4QuMHwAfb7j8ev9DfwrxnCzMFvTW+duBtwj9+Z3UfsD9yE4BNu6BW7d+gfrKsbHhjBkfwI7XP5bhLc5PkD0l1hXvrunpMKDx5OMK6alGPoobdD70BiyTDH5Rmosg7cNI+154f8HBI9SfQe8VfGRq5KCvzrxJKfp5xP018UfjQWOGFQYRRBUXmJE5jKWBipGtM/HL5cIL/PUErxf2HEVj7LFzYzuSY0TV8nfD5J//HfObe8buhWGB2LiFcx87/bdo31Ds4AHmDDPL6/H/kxkY6t72HrliMfDl13dw5k7u0HLrbo9xuAHH74C6UwSNZ+mOv4VGkDI3/IM05JW+J80OlzQb+uD/apPtiP6HM8moMVvixzz7DMwZenCvLPqFQiXQVvWRVi1wQf4rmA/kg2OON94MHqCfh08V4ivS9xZ8kOwl8lkW/1wzt8/utf/gdQSwECFAAUAAIACAAcSmdaG8BNVkQWAABpRgAAIwAAAAAAAAAAACAAtIEAAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWxQSwUGAAAAAAEAAQBRAAAAhRYAAAAA</wcf:contentFile>
</wcf:SendBillSync>
</soap:Body>
</soap:Envelope>]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by quim_]]> 2025-03-19T06:51:00-06:00 2025-03-19T06:51:00-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278453#p278453
Aunque me envies certificado y datos no voy a poderlo probar, cada WS es un mundo y los servicios bajo SOAP más

A veces existen cabeceras que hay que enviar, del tipo

Code: Select all | Expand

      "Accept-Encoding:gzip" ]
      "Content-Encoding:gzip" ]
      "Content-Type:application/octet-stream;charset=UTF-8" ]
Hay que conocer muy bien los requerimientos de cada agencia tributaria o gubernamental

También una vez el XML firmado, antes de enviar, a veces hay que comprimir con gzip

Cuando dices, 'no me funciona' a qué te refieres, a error de certificado ? rechazo de la dian ?
Qué te devuelve nError, cResponse ?]]>

Aunque me envies certificado y datos no voy a poderlo probar, cada WS es un mundo y los servicios bajo SOAP más

A veces existen cabeceras que hay que enviar, del tipo

Code: Select all | Expand

      "Accept-Encoding:gzip" ]
      "Content-Encoding:gzip" ]
      "Content-Type:application/octet-stream;charset=UTF-8" ]
Hay que conocer muy bien los requerimientos de cada agencia tributaria o gubernamental

También una vez el XML firmado, antes de enviar, a veces hay que comprimir con gzip

Cuando dices, 'no me funciona' a qué te refieres, a error de certificado ? rechazo de la dian ?
Qué te devuelve nError, cResponse ?]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by russimicro]]> 2025-03-19T07:34:36-06:00 2025-03-19T07:34:36-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278455#p278455
Al parece se queda solo en la primera parte que es firmar con el certificado ... que no lo puede leer]]>

Al parece se queda solo en la primera parte que es firmar con el certificado ... que no lo puede leer]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by russimicro]]> 2025-03-19T08:05:05-06:00 2025-03-19T08:05:05-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278456#p278456 https://russoft.net

y genera el error 58]]>
https://russoft.net

y genera el error 58]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by russimicro]]> 2025-03-19T08:31:22-06:00 2025-03-19T08:31:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278457#p278457
y ahora obtengo error 0
Y SARTA VACIA]]>

y ahora obtengo error 0
Y SARTA VACIA]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by russimicro]]> 2025-03-19T09:23:32-06:00 2025-03-19T09:23:32-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278458#p278458
Gracias]]>

Gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 :: Reply by russimicro]]> 2025-03-19T11:30:21-06:00 2025-03-19T11:30:21-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278460#p278460 <![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 (SOLUCIONADO ) :: Reply by russimicro]]> 2025-03-19T17:18:09-06:00 2025-03-19T17:18:09-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278466#p278466 el siguiente código

Nota : solo me falta firmar desde harbour el archivo a enviar en : curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cXmlStr )

Requiero ayuda de expertos en el tema de firmar xml---

Gracias

JONSSON RUSSI

Code: Select all | Expand


#include "hbcurl.ch"

PROCEDURE main()

   local nError, cResponse
   //local cXmlStr   := hb_memoread( "peticion.xml" )
   local aHeader   := {}

   local cUrl := "https://vpfe.dian.gov.co/WcfDianCustomerServices.svc"
   local cCertFile := "CERTIFICADO.p12"
   local cCertType := "P12" // o "PFX"
   local cCertPass := "xxxxxxxxx"
   local cNomZip := "z006331767200025SP104100000250.zip"
   local cFacturaXml,cXmlStr := ""
   local aHasRes :=  hash()
   local cFilRes := ""
   local cSignedXmlFile := "E:\TEMP\XML_FIRMADO\z006331767200025SP104100000250_fv_B64"
   local hCurl

    cFacturaXml = MemoRead( cSignedXmlFile )
    //  cFacturaXml :=  "UEsDBBQAAgAIABxKZ1obwE1WRBYAAGlGAAAjAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWztPNtyo0qS7xMx/6DwedkNHVncJMDR9iwgJCELJATo9salQEjcDEhI+pv9hvmE+bEtQFdbard7pifO7h5HdBiyMrPyVplZVLm//W3re5UNiBM3DJ4f0EfkoQICM7TcwHl+WKd2jXqoJKkeWLoXBuD5IQgf/vby1798E4JN6JqgAsmDBGLGwVOoJ27yFOg+SJ6SCJiu7Zp6Cvk+rQ3vKTEXwNefton1dKCtYQ8l+ZOpm19kwYW+HwaM48TA0VMAXyMoXpAmF0yNn2PKQnTzFkML6rlI0+ipXs+y7DHDH8PYqWMIgtQRug5xrMR1fjtig236U9Pz2xQEuTduiZCkUAbL1YMnJ9w8meGTrZvpOtaBB8w0DgPI+UlJ43UOBJCuhh4pt7oFzvKvY/cRpIlbaICgNILXN+gj/oj9doWPEugnJMQjeiZJ3DsGQutTsa8UmtbcIA8nE0CqxD2o3w9Li/xsHFXyn8PMVmgmjwWLWhiBoBAB0tXDpKax/Rr2iNYhbd3X3QCi1nPYic8j+gjHHmB8Q37foAef4PDJIUkJvzV0GjkOXngxgE/pJUKOAx351IJ+vMH8GukgW84mDr2PSO/wmHW6CGN3X9jrBaXIJoGQDZpAaYz6Vr+LeJftFdoQxG5o3UTO8eGCg8Gnx2kLrsgXDMGIGkLWMPpb/Xrke/R8YB2pm5fUR/hNQetfkfRKLWAdzJHclSpHH8bAdrcvyrCc6vD6PYp2HPovaIlePH8PWQ1fGjCLlNjw5XMlvyf3lZvvxs1l0CjhOjbv2DY3vmDBCD6tQi60QMVzk5RxYKXYCa3nh+bDBUCCC/f5QQvcFFgVqSBJKrwZBqHvmpU8yblJHvEVO4wr/DqGq7QkLxIE0EbCj6QBWKJATvTkmDBxrqGWu49i5iv64YUblDH0cfwT492zS2E7JbTTTI/BMA43rgXi+8F2xBBalSJ5gbPhULrxcAUsjccNfq+0BEaq/EfLjYFpuv/4e1CBVhf8aA2SNEwquwpjrfVAT6CFTaiN7oHkP4+scs7I8aXkiEM7NHEcJZskdgzio1T3JT/q+Oslf7FxErNxy6rROk7WCLvZqNF4w64RtGETtkUjVJ4KroW6577PXXOlnQJMWNzSXRHYv1pPizaRJoZaJkKZFgDwlURsg8YwEtVRnLAw3GhaDYO2jQaJgwYJXxoGhYKmaRIYRaOoTdl6EzMxukFYDdLCKYzCbZtsog26CR+uLXCp2h0rXOfNT4P5Jvq/NbKJj5FNwRaDJrEmdasUfCfOv4N+x1ryqDBl3msksNmAqQT2xU5Y20Q2eMwbs0fYmD2aYd6GrH2Yb+oJ0GNz8Rb/7QhZgd0zShm5U9EGaRAw8yOUDpcmrNMYQiCYSRENy0SJpkUaTZymGs0GRViUgYMmoGicNFG6CSwSRSzDalC6YaBNxEBNmyApmqQNkqbNUrGDsO9aj/r3e49v9e/2L+Xwzd7nJ7qibxaMVdcJ9Lxf/WKbLVjPDyfaGo5gNE6bVA0jKatGNABZM/QmVQMGCQMDBSSCUg+n+fL6aYfFK6cHRd/sHQJABDAarArjOTAm0oV/Sxh1VHa1I56rQYFq0FlBLYcgOArDvn6t149wLNghxFG9mh/G4Lc40WvJQscazSPPEbBBDFcTKLQ/vdUaJtqwsEbecFF0jTBJrGZgNIQjFgHzhN00abhsitJaGkGN9SCBBdhPrl8/lfLKCSDYAA/Wb6uWHJUtJK1/nKHlOnB9f9EUULffrg1Qshnr3hq8iE7UVGM18Yh5b7abTmVGNlsGkhKsJmRjkOxZQmLYTRpT2XMh0iVxATgZ8HvGfQW7PFgO5vvtayFXO1L/KiNwqbscv7p0OCPn1XTL9PWQ7wRorzOVM6c7JAN8hC03Q4DMiC8aQd1F4Du7v9/KdTTM+7c4dUFyNNAxhL9oqKRgF0F2yS8zllNvR6uVPWT3o8Ga2DKkFXQmzKutKG/q9HU8WWW6zVQHpkTxnxur/jGXnFQuKK4zVAH6wTRl9iNqwTDboZkkQWvXWpFDnWLXfcQfDaLptN3dtz3SYMZ2A4Rv3VgU69sV39lZuDXwN3VW5NHBWB4ilFrdOK3RbqjozZ6sKFUn3Eu2kjXm6LbbUOSha0lUNt7MgoWKMMyG4jrU0M1eEdTyBquwbSgzqhWOGtux4776PrdeUu4K6wG7Lo2mPXax0qpvokH1tOrkbYrg+01PAYMFPVE1nxrx9qCarRpKu/XmJdnodeqtNIvEJpKeRMTbcitls34LBBNiAQYxOXWSLhmxZkRHfY+NuJm+WOMDxIrszg4A1fX7SuxUt1OJmqCSSo8jcd0k2TQKJWptuOko9mbEClGaI0eKMrFK7nbUDKHSJFobW6KfTtHGW/b8fPLZ2SOF3w6L9CdKyvX6njYQGm5T9dMLly+NYscB05UgdLkWx7E25zCZwDKOILxWBRVB8F4oa1lLnvVew7mw2JgSI/N9VmYyx9S2vSWzYh1pzDKi2B1LY3klsQIvsao2VkYrT1E13pERWlQRlFPgs4a0VXEkZ7wza41luc1nSUNs8XtRFbbwXyq12ozYIjoMqvFcluEyNt5ZHc/XJ9Ji3qH3QptdmD7vjHxvZ0zg78nWm+GjnYE1ohkG58La6Xza8/VpL50pbMvAthtj0otmKu+I7IGvk01lpC2Nxr2OMu5JMsRTke1Q1XowEFlVHovbdotRSr1MkUN6wxFCa3CM76/EtSgnGScX8nf4rNdS9wxoZ8hOajG4uJS34l4jxP1cL2DLS9hYF4VuXxxlWafUv9dipZa2grLtZ47UkuFvzVGRmTNoMXtxJGZ8OY/GZyG00QwVl0JDUgVCVJisW/JotVhLksc9TeFzW7fVMe+JKk85I2/cVr1RW9vzI5GhCt3ZkShISxHyMjFpL2y7LUYv9UxEHpkvoC3R3L7za7tuhRYDSrxQbCMoq3kjIbebPJY0RYOu27GdsTYejPnxpX8hWcpZ0Hem305nk0YA/dAXmVUpy0LkZITKHId3RQbpcMpbRxEMvCXzLCNrDEMIbCtj8vFXJoQxKXMTossbe1yqy5NuvTGMudCj6iAVHWfRc/fADGQjtMi3WbU6f9WGndcJ2tHeElYASTjHyOakoQ2Hb2nABSaxn73CpF1vKn7cJhfpYkOOo/1k7Vi61t/LUXVEuJjZwXrmFuZcyxppTXNrzdhw3qLJ9mSZvXVfp3NMX3ALKjX2q/Z6OPUiiW4Te7iUOnSEs+mgs+4tYk609BWNNBiq3nTILtrpr9dWPd3qXFt4Rasr4Eesnoqiy6AKUeW71e1EnHXSraCvQk/qG3o0XVTXU3Nn+N0m1QHEa6y3530u0DbOBg1JnsOHGxlM7bkRwAWJoqzLdapzM2aB3ptHxlhBX0ngjcdLC7WjgBfpBv+KvkX+Utu1htPWlIErg2E6S8fp72Ae4MglI+a+7o4g3KZ4ZslAQBE/lpDJM5HVmbbIDQNsPe6M5yNp3tB8cY57dcTDhoYktpMOxyUd6MM2m/Esy1OZqrJ91nFi1uHbrGxmzGxW17sjxGyFmz7OxnB9bwyusZxNUM/055Hpo4sZRicGhrr6hF/PMGozn0QujMWN2R27RsdbWtjY7eMSMpvCmN3RmxkuZSKrFXLysjwQmZ3AubkcMuvMzHXXSbJeBuNyhHgsV6wf4TWbsaysdWHOu5BZ5C9kbTEqxzGg1L8L9alnCnwXYVx2bWgvFmvCcdl3YJy2F3mcThaI1WWa/R2d6Zi3NLAMyn+Rl3JdO3Q6871F35c2fWz8NvOlBbQDOvO30Qy3vJlL4/NJb6VPJaSPSZ4ZjIrnISal8xa6NP0M8pL21mS8G2rSoKdKvIaO4Xri4+vcll7ktjTPbZ64klTV1faj1ioTVXErLvmt6CJIT4W5DNU8ERm1oKyIPpnDtd9eGbgYa532bqaknTKvpm2jA8Op29sYvreE761Lv70iZ/0Knjs413VNiC9qQpzXhAKPy/GOuTYtcm0Ol0v6YRh2+5HQFWAObYvKLOsxx/yHqmMN4uX5SEPb2mre01ZoXoeGKk9L8spjhbbEwjz4Pvd8P8+fc+wrzLGf8P5ldUsTWeGYu/sDlYG1hN/BBL/rq3LWlYt4HrDsjG9zPSM2cY6c0Y22v19oxHYmAmph4HQqMoVsVquIX5mH8d4mWozEOqu3xcrt0BkC82vSZpgBjGWeiZORvJ5mrNhUBuFiiW3k5rQfir4VUPiGX8lSXZqTEhuJXQGpCn7VXeK+vJ2Zwx6vNqfYm7ccp9SmanEEkAAjyVVzogr7lsmut8FSENtRVzUXXGc85ND6lJf6cRMul2o2XcctiWUa8xATiDGjrgS+07RwergWCUXx99V53Fm6g32VQdq2nLw1s2HVjmi1340WI0ojMntFkdJr36O66Fi3Q3I2Jdt7esINwUzklwDsXJZfWOFUqW9IDx3yS7Jnz0JL6Q3qs4XU25ue3uSZqImz43pvKKqyPmC9fYQqfao667ZUDawEQ4z6DZfdzejXfj0M5c3cr46Q2NzoTI/jnNDxzV2qLYn+Kx155sAVnDRycGecyocm733zdQKe2jPYuJ0bwJHCXL2LobX21smLt2a3HYre20h7Ua+qzeytZw/xWBUEQZkleNBDOs0uaPrDja94ra3rpSPvNWaUbvzasdZVbz1u7ZvxPIvwgYhxb6/EprqK3raAMGZGFdVNNA67E4+jkFd7BYQ0YFN3KtrLoDuFhT4QpxNG78h1sB2H1Oti52GWH8qh3Z9QDdZYog1dtUdA3HHsdqNbmaEuYnemZ8vuJBpaA3k4rIaDLT1yyTiwSXPiLBQutaNu9CZPYrUlOJK2Hi7YejJedtjYVDrRa09VMOxtTNixh4t+Y1HdsMGae8MWEyWL0D7Rp/XBlkn3JNL1cGzSQEXFsuSZs9j409ds6rsTfYJqqbLGo/EYJtlpc75tDcGIS/W3eYiKzh7N0GMjfjRybnB+W551vjAywxajJ0i577p0UP3KffVzA1+wGhhLYKZFLz/NDzHLd8Gq0RZB0xiC1ygdBTWCJJGa3jCaNR2QKEUbBG5bGOzji5PPJ3mte669cwPnvMP98lFqLsMtRjWSoC3dpoxaAzPzrQVC1SigY3DLYcAfirQI23qoqHrsgPTL3xxOOrzfoRfy/Eu255f8T4zOE10iQMXh9q040WvUoPERUkXoJ7T51GjWkMZTfuz1Efma/mohlyM56PK53Kj/qu8GvjfZ0sPYblQXkSAPNJHuzsF4N/J3PW4XrHYDRBz2bdZLFuGt7wYfxSwhQpKsQayA2NW905axBObftl+45/xzef+ZHXRgUaq0HrnH3yuDZ44R+VFbgBuOCjfoD2DtYioKo8Ah7flkKitMKkM91ittN/b1Cn++IFDhIO/YLsCwuQ99w9V/ryj8SGD6EqyE/OiZRlAcxVAUqxG/VzjpWdFgM1e5M+8ptV5IflSm1E1a+waIX3C0CXmiTarZxPPTChh1J9orxKPFru1Tv/R8/bMAOUdl6Lnm6Www534H4WLgPeiC+vjl/+PFi6vP/xHkkOZuAIWh6xvsPWiDPUaWfVL1g3wtkJixG+WfpItPqneFO4G6erL4VSvAEkNxk5qdhi7snVmIpEKiyGDcY1uBFtjKwGaj7TT2wxiZ3V8B7ySt33VE/Qs+BPEo9M55wdNh/rByUHID9pKso8iDHE7RdDF2A5ZcyXKcqv6F9Afyewt6WYM+YpzH2iGMibRSvpy+MsLc/8WP/EfOIlQh/4L7koJtmvv3KPVp4IDIH257vWhqu0YdsU7QI+C9pO+scFvJ+u06dBq4VRvLgl7yern+YPfyk2dTH+GHE6/idgOEj8v7b0LrBb5UsEe0vDBwNXIm4NZJGvqH4yI4giIl+nv4mQJqZ7tefmJdnH3CCZ4q7TKBHDLzP/5epGYLVMZQI71keCb7wIrfAnN9nP8K+3LkTAZflCGKEAfcqzFNO53fFie31+ernNbma0qXwSkYXL/+3PIo0KXseRk43go69BAHNU4j77CLJuLQZjSObcb16Jmi9Y47ipW4rY+8y3sh+fIpTlaRoznfwc8UUlhsPk6PF7MejoO5dZwv7/KInhsMD3PfGj0T990AFLdeYMWE5dE8xsAH+IFEN58Y08wH4FpTDjkQtgfp7rx4cnrGsty0OHQ/oENHHKxxa+hMCye4ZncFvb558/5A+hCQ5+splxF6XNk/wOs8X9GD3Jil7KoYRRX6/UGlrfGSyisVkRmpXebgpHeUFxN/GCpGFrskPzw+3mD8MKteWC4Gya2bWkfN8/sLt9S+QOPcgwSsxjEjRmSkzkHk08htwmGYpLo3h3upQxxeAO5MVV6nUtZGbmnoU4WRVEZq8aPDhO/Hf4xNEcL5FY27gzf4nM2Xh/b9K2rFKDdiHit4syKNBo8VgqjhjcqgLXCCxFQoBK/wLQG+DSqyNjivlluXQj6dtZDroMJXrs196SraZdBWPD1w1rpTJGgAd2DHxv121F4qclvMKyVvBPx3wvq8zFR9W97Zu7XWRsBxkzQuyD9fdx+wb3DML0Trwe6Pc43uSqhbEkMD9cEGeKcrkyUXAm7RRzWarg2lkskl3q0McmmdP7PJn9nkj5lNPo/SQtN7WeMihD+N30JEYczcFbiU6OZUFyX99vhpuA8c3eNvReWfGe4UtnEUQqXApXqfuVcZ/oh7z7uVu/79wdkvPH7HpQdd4M7LTG8mcuCBaJEnuSZCNim8QTcPsp1HbpCdv7qJuuu9xOskCe205qWW/l+LMPUh8NEM/cOfOFwjf5D/vXgXWh23uZ/2+e92AuWO9Y+2E/g3Bn/jOvhR/OGFpHGqgTaIX70N6Q0kRRlIlZGmKEJF5WHe+L+6Bflf2wIw4xZT6Q+USqEx/P1bpYlUahW0SVVUtoIiCP5n7f/37yTuLp0/ao39NM381C6C/uIu4gcar/n8RyqzFFZ0WFlM/Y/Vfv0/CYt/ZTeT93kEgSI09XPdjOu7Zhz+873Mye8gTm63BW03LgP/6OZyojP4Fo3uu15ZmD7ExMXYDUrRtSwPlEeZ9XeAj664FvrTvuxG13UI+l3+yVcE+uWfGh+W48fPouV+/IKmWPfHw4D38FtU9z58vxu+UOKjiIXkRRyKMGxSPd6pYap71/Plte909sL4uR0q5uHLdr4QuMHwAfb7j8ev9DfwrxnCzMFvTW+duBtwj9+Z3UfsD9yE4BNu6BW7d+gfrKsbHhjBkfwI7XP5bhLc5PkD0l1hXvrunpMKDx5OMK6alGPoobdD70BiyTDH5Rmosg7cNI+154f8HBI9SfQe8VfGRq5KCvzrxJKfp5xP018UfjQWOGFQYRRBUXmJE5jKWBipGtM/HL5cIL/PUErxf2HEVj7LFzYzuSY0TV8nfD5J//HfObe8buhWGB2LiFcx87/bdo31Ds4AHmDDPL6/H/kxkY6t72HrliMfDl13dw5k7u0HLrbo9xuAHH74C6UwSNZ+mOv4VGkDI3/IM05JW+J80OlzQb+uD/apPtiP6HM8moMVvixzz7DMwZenCvLPqFQiXQVvWRVi1wQf4rmA/kg2OON94MHqCfh08V4ivS9xZ8kOwl8lkW/1wzt8/utf/gdQSwECFAAUAAIACAAcSmdaG8BNVkQWAABpRgAAIwAAAAAAAAAAACAAtIEAAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWxQSwUGAAAAAAEAAQBRAAAAhRYAAAAA"

    // Crear la solicitud SOAP
    cXmlStr := ;
        '<?xml version="1.0" encoding="UTF-8"?>' + ;
        '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wcf="http://wcf.dian.colombia">' + ;
        '<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsu:Timestamp wsu:Id="TS-BD40368ECABC33A9ED174242532066842"><wsu:Created>2025-03-19T23:02:00.668Z</wsu:Created><wsu:Expires>2025-03-20T15:42:00.668Z</wsu:Expires></wsu:Timestamp><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-BD40368ECABC33A9ED174242532063237">MIIHCDCCBfCgAwIBAgIIK+IT003JoQUwDQYJKoZIhvcNAQELBQAwgcUxJjAkBgNVBAMMHVNVQkNBIENBTUVSRklSTUEgQ09MT01CSUEgU0FTMRQwEgYDVQQFEws5MDEzMTIxMTItNDFAMD4GA1UECww3Q2VydGlmaWNhZG9zIFBhcmEgRmlybWEgRWxlY3Ryb25pY2EgQ2FtZXJmaXJtYSBDb2xvbWJpYTEgMB4GA1UECgwXQ0FNRVJGSVJNQSBDT0xPTUJJQSBTQVMxFDASBgNVBAcMC0JPR09UQSBELkMuMQswCQYDVQQGEwJDTzAeFw0yNDA3MjQxMzU4MzZaFw0yNjA3MjQxMzU4MzVaMIHLMRwwGgYDVQQJDBNDUkEgMzYgNDQgMzUgT0YgODAzMRMwEQYDVQQUEwozMTY1MjI5NTI4MSAwHgYDVQQDDBdNQVJUSEEgQ0FTVElMTE8gRlVFTlRFUzERMA8GA1UEBRMINjMzMTc2NzIxHDAaBgNVBAsME0ZhY3R1cmEgZWxlY3Ryb25pY2ExIDAeBgNVBAoMF01BUlRIQSBDQVNUSUxMTyBGVUVOVEVTMRQwEgYDVQQIDAtCdWNhcmFtYW5nYTELMAkGA1UEBhMCQ08wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCW4HEbz3N/QWH/5PrCol8/etMgghJizecnQbod7qY++ZKUPGKW1GUqsBIesoZ276W5UPPqtnCnc4zYKori/6SmrF7hthv7VpzWugdaULzQp+R4i2cG2Jcx+OcddRU6cxdYBoZD97FWjwqHKXZ2ahCh8tbzkFuPXlpN9F4zIIHG9p3BtOGuJhrCMdak905A8/6g7H1GLuud/txaCFIK1+kempBatMMiA1S4+EH+xWMYGtxIakolNLbapXh+uXcybmH68Ge4KraFZLCnUvgv1o7EC3PvQeXfZbnUxJ11BiCG+ZcrBeaJZpbVS1K7elVVjd1fpnEM95EK1qpmjUyDPXDXAgMBAAGjggLyMIIC7jAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFMCPn2uVGVZRNZ5UmMZ3l/0l2PbNMFsGCCsGAQUFBwEBBE8wTTBLBggrBgEFBQcwAYY/aHR0cDovL3BraWNvbC5jYW1lcmZpcm1hY29sb21iaWEuY28vZWpiY2EvcHVibGljd2ViL3N0YXR1cy9vY3NwMBUGA1UdEQQOMAyICisGAQQBgYcuHgswJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcDATCCAe8GA1UdHwEB/wSCAeMwggHfMIIB26CCAQmgggEFhoIBAWh0dHA6Ly9wa2ljb2wuY2FtZXJmaXJtYWNvbG9tYmlhLmNvL2VqYmNhL3B1YmxpY3dlYi93ZWJkaXN0L2NlcnRkaXN0P2NtZD1jcmwmaXNzdWVyPUNOJTNEU1VCQ0ErQ0FNRVJGSVJNQStDT0xPTUJJQStTQVMlMkNTTiUzRDkwMTMxMjExMi00JTJDT1UlM0RDZXJ0aWZpY2Fkb3MrUGFyYStGaXJtYStFbGVjdHJvbmljYStDYW1lcmZpcm1hK0NvbG9tYmlhJTJDTyUzRENBTUVSRklSTUErQ09MT01CSUErU0FTJTJDTCUzREJPR09UQStELkMuJTJDQyUzRENPooHLpIHIMIHFMSYwJAYDVQQDDB1TVUJDQSBDQU1FUkZJUk1BIENPTE9NQklBIFNBUzELMAkGA1UEBhMCQ08xFDASBgNVBAcMC0JPR09UQSBELkMuMSAwHgYDVQQKDBdDQU1FUkZJUk1BIENPTE9NQklBIFNBUzFAMD4GA1UECww3Q2VydGlmaWNhZG9zIFBhcmEgRmlybWEgRWxlY3Ryb25pY2EgQ2FtZXJmaXJtYSBDb2xvbWJpYTEUMBIGA1UEBRMLOTAxMzEyMTEyLTQwHQYDVR0OBBYEFCJbrc3C7Y95FmzhU4xYMe8hb39tMA4GA1UdDwEB/wQEAwIF4DANBgkqhkiG9w0BAQsFAAOCAQEArsRQuXwBM6SOohj2vQ6XLoMmdn83vEkQN/NZ7NBpMHI0+Im+ij3mQxYcPJET6X2qljVt8v+dC4eNeANQ+cWTIzDcBuxnjIMFpHTchCGVPC1/XENLr66Ly+wXurDNBA5Zo2I4VATkIEG6d39PuM4SSmz+ZrGjiOz+A0FfQsq6wP+fp9TLHphR8U4wfk87NKLl8H1Vafo7YX7Fz9WCPeYMEjeeyiBEhdoXS/v7l1PEj7JfYodSJO/YhNJzcla6EAp63BV/JPMTQaOBlzp1SL8+YHDTUekIbMpL5iByY9KL/ooQvZm+R0rcvaAJCCgogmcytUj4LK9plcOiIgtpg3gVtQ==</wsse:BinarySecurityToken><ds:Signature Id="SIG-BD40368ECABC33A9ED174242532066441" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces PrefixList="wsa soap wcf" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><ds:Reference URI="#id-BD40368ECABC33A9ED174242532063240"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces PrefixList="soap wcf" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>qJh6cLlCnqq3wbelPQpLrHWjF1DckDtAd6nImSnuk0A=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>QfUTEIbjYSlsBrTjWPwzciZvY/je5La75j8yZrRhxUDHqYHt/09erTS6o6Cd8kMFg4cLoleY1VF1P0xiFMLJCIQYvb9TKYmQPuV2y4vw2B7fAkKNRxSW5JRjeIaAWN3WZ3XjIZiKZMzNKXKVLuM6hKNQ1mtnKBHqc3QpRikmekRwpJ7hDACB+LCbwHQywG9aAdaKzELHO3zzc1khju1YvcRb+eN9Dll7I0CVSX7RUklUfdUtdcyumZPmsgRmPMAZp0PG9owrbOd24tLKDD8QJQM9duNrv+EghPzsBmhYe70CzVlJ7Q3JtiWPctn6O5+Skb2DIsSuyJ6+wkyMNXfdVQ==</ds:SignatureValue><ds:KeyInfo Id="KI-BD40368ECABC33A9ED174242532063238"><wsse:SecurityTokenReference wsu:Id="STR-BD40368ECABC33A9ED174242532063239"><wsse:Reference URI="#X509-BD40368ECABC33A9ED174242532063237" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></ds:KeyInfo></ds:Signature></wsse:Security><wsa:Action>http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync</wsa:Action><wsa:To wsu:Id="id-BD40368ECABC33A9ED174242532063240" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">https://vpfe.dian.gov.co/WcfDianCustomerServices.svc</wsa:To></soap:Header>'+;
        '<soap:Body>' + ;
        '<wcf:SendBillSync>' + ;
        '<wcf:fileName>' + cNomZip +'</wcf:fileName>' + ;
        '<wcf:contentFile>' + cFacturaXml + '</wcf:contentFile>' + ;
        '</wcf:SendBillSync>' + ;
        '</soap:Body>' + ;
        '</soap:Envelope>'


   //  HB_MEMOWRIT( "PRUEBA.XML", cXmlStr )

   // Establecer cabeceras requeridas por el WS

   aadd( aHeader, "Content-Type: application/soap+xml; charset=UTF-8" )
   aadd( aHeader, "SOAPaction=http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync" )
   aadd( aHeader, "Connection: Keep-Alive" )
   aadd( aHeader, "Cache-Control: private" )

   hCurl     := curl_easy_init()
   curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYPEER, .f. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYHOST, .f. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, cCertFile )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTTYPE, cCertType )
   curl_easy_setopt( hCurl, HB_CURLOPT_KEYPASSWD, cCertPass )

   curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cXmlStr )
   curl_easy_setopt( hCurl, HB_CURLOPT_DL_BUFF_SETUP )
   curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, aHeader )


   // echo server, para depurar .T.
   curl_easy_setopt( hCurl, HB_CURLOPT_VERBOSE, .T. )
   curl_easy_setopt( hCurl, HB_CURLOPT_ENCODING, "" )
   curl_easy_setopt( hCurl, HB_CURLOPT_MAXREDIRS, 10 )
   curl_easy_setopt( hCurl, HB_CURLOPT_CUSTOMREQUEST, "POST" )

   // No reutilizar conexiones
   curl_easy_setopt( hCurl, HB_CURLOPT_FRESH_CONNECT, .T.)
   curl_easy_setopt( hCurl, HB_CURLOPT_FORBID_REUSE, .T.)
 

   // Conexion
   nError    := curl_easy_perform( hCurl )
   cResponse := curl_easy_dl_buff_get( hCurl )

   if nError == 0
      hb_memowrit( "respuesta.xml", cResponse )
   else
      MSGINFO( curl_easy_strerror( nError ) )
   endif

   curl_easy_cleanup( hCurl )
   curl_global_cleanup()

return

]]>
el siguiente código

Nota : solo me falta firmar desde harbour el archivo a enviar en : curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cXmlStr )

Requiero ayuda de expertos en el tema de firmar xml---

Gracias

JONSSON RUSSI

Code: Select all | Expand


#include "hbcurl.ch"

PROCEDURE main()

   local nError, cResponse
   //local cXmlStr   := hb_memoread( "peticion.xml" )
   local aHeader   := {}

   local cUrl := "https://vpfe.dian.gov.co/WcfDianCustomerServices.svc"
   local cCertFile := "CERTIFICADO.p12"
   local cCertType := "P12" // o "PFX"
   local cCertPass := "xxxxxxxxx"
   local cNomZip := "z006331767200025SP104100000250.zip"
   local cFacturaXml,cXmlStr := ""
   local aHasRes :=  hash()
   local cFilRes := ""
   local cSignedXmlFile := "E:\TEMP\XML_FIRMADO\z006331767200025SP104100000250_fv_B64"
   local hCurl

    cFacturaXml = MemoRead( cSignedXmlFile )
    //  cFacturaXml :=  "UEsDBBQAAgAIABxKZ1obwE1WRBYAAGlGAAAjAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWztPNtyo0qS7xMx/6DwedkNHVncJMDR9iwgJCELJATo9salQEjcDEhI+pv9hvmE+bEtQFdbard7pifO7h5HdBiyMrPyVplZVLm//W3re5UNiBM3DJ4f0EfkoQICM7TcwHl+WKd2jXqoJKkeWLoXBuD5IQgf/vby1798E4JN6JqgAsmDBGLGwVOoJ27yFOg+SJ6SCJiu7Zp6Cvk+rQ3vKTEXwNefton1dKCtYQ8l+ZOpm19kwYW+HwaM48TA0VMAXyMoXpAmF0yNn2PKQnTzFkML6rlI0+ipXs+y7DHDH8PYqWMIgtQRug5xrMR1fjtig236U9Pz2xQEuTduiZCkUAbL1YMnJ9w8meGTrZvpOtaBB8w0DgPI+UlJ43UOBJCuhh4pt7oFzvKvY/cRpIlbaICgNILXN+gj/oj9doWPEugnJMQjeiZJ3DsGQutTsa8UmtbcIA8nE0CqxD2o3w9Li/xsHFXyn8PMVmgmjwWLWhiBoBAB0tXDpKax/Rr2iNYhbd3X3QCi1nPYic8j+gjHHmB8Q37foAef4PDJIUkJvzV0GjkOXngxgE/pJUKOAx351IJ+vMH8GukgW84mDr2PSO/wmHW6CGN3X9jrBaXIJoGQDZpAaYz6Vr+LeJftFdoQxG5o3UTO8eGCg8Gnx2kLrsgXDMGIGkLWMPpb/Xrke/R8YB2pm5fUR/hNQetfkfRKLWAdzJHclSpHH8bAdrcvyrCc6vD6PYp2HPovaIlePH8PWQ1fGjCLlNjw5XMlvyf3lZvvxs1l0CjhOjbv2DY3vmDBCD6tQi60QMVzk5RxYKXYCa3nh+bDBUCCC/f5QQvcFFgVqSBJKrwZBqHvmpU8yblJHvEVO4wr/DqGq7QkLxIE0EbCj6QBWKJATvTkmDBxrqGWu49i5iv64YUblDH0cfwT492zS2E7JbTTTI/BMA43rgXi+8F2xBBalSJ5gbPhULrxcAUsjccNfq+0BEaq/EfLjYFpuv/4e1CBVhf8aA2SNEwquwpjrfVAT6CFTaiN7oHkP4+scs7I8aXkiEM7NHEcJZskdgzio1T3JT/q+Oslf7FxErNxy6rROk7WCLvZqNF4w64RtGETtkUjVJ4KroW6577PXXOlnQJMWNzSXRHYv1pPizaRJoZaJkKZFgDwlURsg8YwEtVRnLAw3GhaDYO2jQaJgwYJXxoGhYKmaRIYRaOoTdl6EzMxukFYDdLCKYzCbZtsog26CR+uLXCp2h0rXOfNT4P5Jvq/NbKJj5FNwRaDJrEmdasUfCfOv4N+x1ryqDBl3msksNmAqQT2xU5Y20Q2eMwbs0fYmD2aYd6GrH2Yb+oJ0GNz8Rb/7QhZgd0zShm5U9EGaRAw8yOUDpcmrNMYQiCYSRENy0SJpkUaTZymGs0GRViUgYMmoGicNFG6CSwSRSzDalC6YaBNxEBNmyApmqQNkqbNUrGDsO9aj/r3e49v9e/2L+Xwzd7nJ7qibxaMVdcJ9Lxf/WKbLVjPDyfaGo5gNE6bVA0jKatGNABZM/QmVQMGCQMDBSSCUg+n+fL6aYfFK6cHRd/sHQJABDAarArjOTAm0oV/Sxh1VHa1I56rQYFq0FlBLYcgOArDvn6t149wLNghxFG9mh/G4Lc40WvJQscazSPPEbBBDFcTKLQ/vdUaJtqwsEbecFF0jTBJrGZgNIQjFgHzhN00abhsitJaGkGN9SCBBdhPrl8/lfLKCSDYAA/Wb6uWHJUtJK1/nKHlOnB9f9EUULffrg1Qshnr3hq8iE7UVGM18Yh5b7abTmVGNlsGkhKsJmRjkOxZQmLYTRpT2XMh0iVxATgZ8HvGfQW7PFgO5vvtayFXO1L/KiNwqbscv7p0OCPn1XTL9PWQ7wRorzOVM6c7JAN8hC03Q4DMiC8aQd1F4Du7v9/KdTTM+7c4dUFyNNAxhL9oqKRgF0F2yS8zllNvR6uVPWT3o8Ga2DKkFXQmzKutKG/q9HU8WWW6zVQHpkTxnxur/jGXnFQuKK4zVAH6wTRl9iNqwTDboZkkQWvXWpFDnWLXfcQfDaLptN3dtz3SYMZ2A4Rv3VgU69sV39lZuDXwN3VW5NHBWB4ilFrdOK3RbqjozZ6sKFUn3Eu2kjXm6LbbUOSha0lUNt7MgoWKMMyG4jrU0M1eEdTyBquwbSgzqhWOGtux4776PrdeUu4K6wG7Lo2mPXax0qpvokH1tOrkbYrg+01PAYMFPVE1nxrx9qCarRpKu/XmJdnodeqtNIvEJpKeRMTbcitls34LBBNiAQYxOXWSLhmxZkRHfY+NuJm+WOMDxIrszg4A1fX7SuxUt1OJmqCSSo8jcd0k2TQKJWptuOko9mbEClGaI0eKMrFK7nbUDKHSJFobW6KfTtHGW/b8fPLZ2SOF3w6L9CdKyvX6njYQGm5T9dMLly+NYscB05UgdLkWx7E25zCZwDKOILxWBRVB8F4oa1lLnvVew7mw2JgSI/N9VmYyx9S2vSWzYh1pzDKi2B1LY3klsQIvsao2VkYrT1E13pERWlQRlFPgs4a0VXEkZ7wza41luc1nSUNs8XtRFbbwXyq12ozYIjoMqvFcluEyNt5ZHc/XJ9Ji3qH3QptdmD7vjHxvZ0zg78nWm+GjnYE1ohkG58La6Xza8/VpL50pbMvAthtj0otmKu+I7IGvk01lpC2Nxr2OMu5JMsRTke1Q1XowEFlVHovbdotRSr1MkUN6wxFCa3CM76/EtSgnGScX8nf4rNdS9wxoZ8hOajG4uJS34l4jxP1cL2DLS9hYF4VuXxxlWafUv9dipZa2grLtZ47UkuFvzVGRmTNoMXtxJGZ8OY/GZyG00QwVl0JDUgVCVJisW/JotVhLksc9TeFzW7fVMe+JKk85I2/cVr1RW9vzI5GhCt3ZkShISxHyMjFpL2y7LUYv9UxEHpkvoC3R3L7za7tuhRYDSrxQbCMoq3kjIbebPJY0RYOu27GdsTYejPnxpX8hWcpZ0Hem305nk0YA/dAXmVUpy0LkZITKHId3RQbpcMpbRxEMvCXzLCNrDEMIbCtj8vFXJoQxKXMTossbe1yqy5NuvTGMudCj6iAVHWfRc/fADGQjtMi3WbU6f9WGndcJ2tHeElYASTjHyOakoQ2Hb2nABSaxn73CpF1vKn7cJhfpYkOOo/1k7Vi61t/LUXVEuJjZwXrmFuZcyxppTXNrzdhw3qLJ9mSZvXVfp3NMX3ALKjX2q/Z6OPUiiW4Te7iUOnSEs+mgs+4tYk609BWNNBiq3nTILtrpr9dWPd3qXFt4Rasr4Eesnoqiy6AKUeW71e1EnHXSraCvQk/qG3o0XVTXU3Nn+N0m1QHEa6y3530u0DbOBg1JnsOHGxlM7bkRwAWJoqzLdapzM2aB3ptHxlhBX0ngjcdLC7WjgBfpBv+KvkX+Utu1htPWlIErg2E6S8fp72Ae4MglI+a+7o4g3KZ4ZslAQBE/lpDJM5HVmbbIDQNsPe6M5yNp3tB8cY57dcTDhoYktpMOxyUd6MM2m/Esy1OZqrJ91nFi1uHbrGxmzGxW17sjxGyFmz7OxnB9bwyusZxNUM/055Hpo4sZRicGhrr6hF/PMGozn0QujMWN2R27RsdbWtjY7eMSMpvCmN3RmxkuZSKrFXLysjwQmZ3AubkcMuvMzHXXSbJeBuNyhHgsV6wf4TWbsaysdWHOu5BZ5C9kbTEqxzGg1L8L9alnCnwXYVx2bWgvFmvCcdl3YJy2F3mcThaI1WWa/R2d6Zi3NLAMyn+Rl3JdO3Q6871F35c2fWz8NvOlBbQDOvO30Qy3vJlL4/NJb6VPJaSPSZ4ZjIrnISal8xa6NP0M8pL21mS8G2rSoKdKvIaO4Xri4+vcll7ktjTPbZ64klTV1faj1ioTVXErLvmt6CJIT4W5DNU8ERm1oKyIPpnDtd9eGbgYa532bqaknTKvpm2jA8Op29sYvreE761Lv70iZ/0Knjs413VNiC9qQpzXhAKPy/GOuTYtcm0Ol0v6YRh2+5HQFWAObYvKLOsxx/yHqmMN4uX5SEPb2mre01ZoXoeGKk9L8spjhbbEwjz4Pvd8P8+fc+wrzLGf8P5ldUsTWeGYu/sDlYG1hN/BBL/rq3LWlYt4HrDsjG9zPSM2cY6c0Y22v19oxHYmAmph4HQqMoVsVquIX5mH8d4mWozEOqu3xcrt0BkC82vSZpgBjGWeiZORvJ5mrNhUBuFiiW3k5rQfir4VUPiGX8lSXZqTEhuJXQGpCn7VXeK+vJ2Zwx6vNqfYm7ccp9SmanEEkAAjyVVzogr7lsmut8FSENtRVzUXXGc85ND6lJf6cRMul2o2XcctiWUa8xATiDGjrgS+07RwergWCUXx99V53Fm6g32VQdq2nLw1s2HVjmi1340WI0ojMntFkdJr36O66Fi3Q3I2Jdt7esINwUzklwDsXJZfWOFUqW9IDx3yS7Jnz0JL6Q3qs4XU25ue3uSZqImz43pvKKqyPmC9fYQqfao667ZUDawEQ4z6DZfdzejXfj0M5c3cr46Q2NzoTI/jnNDxzV2qLYn+Kx155sAVnDRycGecyocm733zdQKe2jPYuJ0bwJHCXL2LobX21smLt2a3HYre20h7Ua+qzeytZw/xWBUEQZkleNBDOs0uaPrDja94ra3rpSPvNWaUbvzasdZVbz1u7ZvxPIvwgYhxb6/EprqK3raAMGZGFdVNNA67E4+jkFd7BYQ0YFN3KtrLoDuFhT4QpxNG78h1sB2H1Oti52GWH8qh3Z9QDdZYog1dtUdA3HHsdqNbmaEuYnemZ8vuJBpaA3k4rIaDLT1yyTiwSXPiLBQutaNu9CZPYrUlOJK2Hi7YejJedtjYVDrRa09VMOxtTNixh4t+Y1HdsMGae8MWEyWL0D7Rp/XBlkn3JNL1cGzSQEXFsuSZs9j409ds6rsTfYJqqbLGo/EYJtlpc75tDcGIS/W3eYiKzh7N0GMjfjRybnB+W551vjAywxajJ0i577p0UP3KffVzA1+wGhhLYKZFLz/NDzHLd8Gq0RZB0xiC1ygdBTWCJJGa3jCaNR2QKEUbBG5bGOzji5PPJ3mte669cwPnvMP98lFqLsMtRjWSoC3dpoxaAzPzrQVC1SigY3DLYcAfirQI23qoqHrsgPTL3xxOOrzfoRfy/Eu255f8T4zOE10iQMXh9q040WvUoPERUkXoJ7T51GjWkMZTfuz1Efma/mohlyM56PK53Kj/qu8GvjfZ0sPYblQXkSAPNJHuzsF4N/J3PW4XrHYDRBz2bdZLFuGt7wYfxSwhQpKsQayA2NW905axBObftl+45/xzef+ZHXRgUaq0HrnH3yuDZ44R+VFbgBuOCjfoD2DtYioKo8Ah7flkKitMKkM91ittN/b1Cn++IFDhIO/YLsCwuQ99w9V/ryj8SGD6EqyE/OiZRlAcxVAUqxG/VzjpWdFgM1e5M+8ptV5IflSm1E1a+waIX3C0CXmiTarZxPPTChh1J9orxKPFru1Tv/R8/bMAOUdl6Lnm6Www534H4WLgPeiC+vjl/+PFi6vP/xHkkOZuAIWh6xvsPWiDPUaWfVL1g3wtkJixG+WfpItPqneFO4G6erL4VSvAEkNxk5qdhi7snVmIpEKiyGDcY1uBFtjKwGaj7TT2wxiZ3V8B7ySt33VE/Qs+BPEo9M55wdNh/rByUHID9pKso8iDHE7RdDF2A5ZcyXKcqv6F9Afyewt6WYM+YpzH2iGMibRSvpy+MsLc/8WP/EfOIlQh/4L7koJtmvv3KPVp4IDIH257vWhqu0YdsU7QI+C9pO+scFvJ+u06dBq4VRvLgl7yern+YPfyk2dTH+GHE6/idgOEj8v7b0LrBb5UsEe0vDBwNXIm4NZJGvqH4yI4giIl+nv4mQJqZ7tefmJdnH3CCZ4q7TKBHDLzP/5epGYLVMZQI71keCb7wIrfAnN9nP8K+3LkTAZflCGKEAfcqzFNO53fFie31+ernNbma0qXwSkYXL/+3PIo0KXseRk43go69BAHNU4j77CLJuLQZjSObcb16Jmi9Y47ipW4rY+8y3sh+fIpTlaRoznfwc8UUlhsPk6PF7MejoO5dZwv7/KInhsMD3PfGj0T990AFLdeYMWE5dE8xsAH+IFEN58Y08wH4FpTDjkQtgfp7rx4cnrGsty0OHQ/oENHHKxxa+hMCye4ZncFvb558/5A+hCQ5+splxF6XNk/wOs8X9GD3Jil7KoYRRX6/UGlrfGSyisVkRmpXebgpHeUFxN/GCpGFrskPzw+3mD8MKteWC4Gya2bWkfN8/sLt9S+QOPcgwSsxjEjRmSkzkHk08htwmGYpLo3h3upQxxeAO5MVV6nUtZGbmnoU4WRVEZq8aPDhO/Hf4xNEcL5FY27gzf4nM2Xh/b9K2rFKDdiHit4syKNBo8VgqjhjcqgLXCCxFQoBK/wLQG+DSqyNjivlluXQj6dtZDroMJXrs196SraZdBWPD1w1rpTJGgAd2DHxv121F4qclvMKyVvBPx3wvq8zFR9W97Zu7XWRsBxkzQuyD9fdx+wb3DML0Trwe6Pc43uSqhbEkMD9cEGeKcrkyUXAm7RRzWarg2lkskl3q0McmmdP7PJn9nkj5lNPo/SQtN7WeMihD+N30JEYczcFbiU6OZUFyX99vhpuA8c3eNvReWfGe4UtnEUQqXApXqfuVcZ/oh7z7uVu/79wdkvPH7HpQdd4M7LTG8mcuCBaJEnuSZCNim8QTcPsp1HbpCdv7qJuuu9xOskCe205qWW/l+LMPUh8NEM/cOfOFwjf5D/vXgXWh23uZ/2+e92AuWO9Y+2E/g3Bn/jOvhR/OGFpHGqgTaIX70N6Q0kRRlIlZGmKEJF5WHe+L+6Bflf2wIw4xZT6Q+USqEx/P1bpYlUahW0SVVUtoIiCP5n7f/37yTuLp0/ao39NM381C6C/uIu4gcar/n8RyqzFFZ0WFlM/Y/Vfv0/CYt/ZTeT93kEgSI09XPdjOu7Zhz+873Mye8gTm63BW03LgP/6OZyojP4Fo3uu15ZmD7ExMXYDUrRtSwPlEeZ9XeAj664FvrTvuxG13UI+l3+yVcE+uWfGh+W48fPouV+/IKmWPfHw4D38FtU9z58vxu+UOKjiIXkRRyKMGxSPd6pYap71/Plte909sL4uR0q5uHLdr4QuMHwAfb7j8ev9DfwrxnCzMFvTW+duBtwj9+Z3UfsD9yE4BNu6BW7d+gfrKsbHhjBkfwI7XP5bhLc5PkD0l1hXvrunpMKDx5OMK6alGPoobdD70BiyTDH5Rmosg7cNI+154f8HBI9SfQe8VfGRq5KCvzrxJKfp5xP018UfjQWOGFQYRRBUXmJE5jKWBipGtM/HL5cIL/PUErxf2HEVj7LFzYzuSY0TV8nfD5J//HfObe8buhWGB2LiFcx87/bdo31Ds4AHmDDPL6/H/kxkY6t72HrliMfDl13dw5k7u0HLrbo9xuAHH74C6UwSNZ+mOv4VGkDI3/IM05JW+J80OlzQb+uD/apPtiP6HM8moMVvixzz7DMwZenCvLPqFQiXQVvWRVi1wQf4rmA/kg2OON94MHqCfh08V4ivS9xZ8kOwl8lkW/1wzt8/utf/gdQSwECFAAUAAIACAAcSmdaG8BNVkQWAABpRgAAIwAAAAAAAAAAACAAtIEAAAAAZnYwMDYzMzE3NjcyMDAwMjVTUDEwNDEwMDAwMDI1MC54bWxQSwUGAAAAAAEAAQBRAAAAhRYAAAAA"

    // Crear la solicitud SOAP
    cXmlStr := ;
        '<?xml version="1.0" encoding="UTF-8"?>' + ;
        '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wcf="http://wcf.dian.colombia">' + ;
        '<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsu:Timestamp wsu:Id="TS-BD40368ECABC33A9ED174242532066842"><wsu:Created>2025-03-19T23:02:00.668Z</wsu:Created><wsu:Expires>2025-03-20T15:42:00.668Z</wsu:Expires></wsu:Timestamp><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-BD40368ECABC33A9ED174242532063237">MIIHCDCCBfCgAwIBAgIIK+IT003JoQUwDQYJKoZIhvcNAQELBQAwgcUxJjAkBgNVBAMMHVNVQkNBIENBTUVSRklSTUEgQ09MT01CSUEgU0FTMRQwEgYDVQQFEws5MDEzMTIxMTItNDFAMD4GA1UECww3Q2VydGlmaWNhZG9zIFBhcmEgRmlybWEgRWxlY3Ryb25pY2EgQ2FtZXJmaXJtYSBDb2xvbWJpYTEgMB4GA1UECgwXQ0FNRVJGSVJNQSBDT0xPTUJJQSBTQVMxFDASBgNVBAcMC0JPR09UQSBELkMuMQswCQYDVQQGEwJDTzAeFw0yNDA3MjQxMzU4MzZaFw0yNjA3MjQxMzU4MzVaMIHLMRwwGgYDVQQJDBNDUkEgMzYgNDQgMzUgT0YgODAzMRMwEQYDVQQUEwozMTY1MjI5NTI4MSAwHgYDVQQDDBdNQVJUSEEgQ0FTVElMTE8gRlVFTlRFUzERMA8GA1UEBRMINjMzMTc2NzIxHDAaBgNVBAsME0ZhY3R1cmEgZWxlY3Ryb25pY2ExIDAeBgNVBAoMF01BUlRIQSBDQVNUSUxMTyBGVUVOVEVTMRQwEgYDVQQIDAtCdWNhcmFtYW5nYTELMAkGA1UEBhMCQ08wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCW4HEbz3N/QWH/5PrCol8/etMgghJizecnQbod7qY++ZKUPGKW1GUqsBIesoZ276W5UPPqtnCnc4zYKori/6SmrF7hthv7VpzWugdaULzQp+R4i2cG2Jcx+OcddRU6cxdYBoZD97FWjwqHKXZ2ahCh8tbzkFuPXlpN9F4zIIHG9p3BtOGuJhrCMdak905A8/6g7H1GLuud/txaCFIK1+kempBatMMiA1S4+EH+xWMYGtxIakolNLbapXh+uXcybmH68Ge4KraFZLCnUvgv1o7EC3PvQeXfZbnUxJ11BiCG+ZcrBeaJZpbVS1K7elVVjd1fpnEM95EK1qpmjUyDPXDXAgMBAAGjggLyMIIC7jAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFMCPn2uVGVZRNZ5UmMZ3l/0l2PbNMFsGCCsGAQUFBwEBBE8wTTBLBggrBgEFBQcwAYY/aHR0cDovL3BraWNvbC5jYW1lcmZpcm1hY29sb21iaWEuY28vZWpiY2EvcHVibGljd2ViL3N0YXR1cy9vY3NwMBUGA1UdEQQOMAyICisGAQQBgYcuHgswJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcDATCCAe8GA1UdHwEB/wSCAeMwggHfMIIB26CCAQmgggEFhoIBAWh0dHA6Ly9wa2ljb2wuY2FtZXJmaXJtYWNvbG9tYmlhLmNvL2VqYmNhL3B1YmxpY3dlYi93ZWJkaXN0L2NlcnRkaXN0P2NtZD1jcmwmaXNzdWVyPUNOJTNEU1VCQ0ErQ0FNRVJGSVJNQStDT0xPTUJJQStTQVMlMkNTTiUzRDkwMTMxMjExMi00JTJDT1UlM0RDZXJ0aWZpY2Fkb3MrUGFyYStGaXJtYStFbGVjdHJvbmljYStDYW1lcmZpcm1hK0NvbG9tYmlhJTJDTyUzRENBTUVSRklSTUErQ09MT01CSUErU0FTJTJDTCUzREJPR09UQStELkMuJTJDQyUzRENPooHLpIHIMIHFMSYwJAYDVQQDDB1TVUJDQSBDQU1FUkZJUk1BIENPTE9NQklBIFNBUzELMAkGA1UEBhMCQ08xFDASBgNVBAcMC0JPR09UQSBELkMuMSAwHgYDVQQKDBdDQU1FUkZJUk1BIENPTE9NQklBIFNBUzFAMD4GA1UECww3Q2VydGlmaWNhZG9zIFBhcmEgRmlybWEgRWxlY3Ryb25pY2EgQ2FtZXJmaXJtYSBDb2xvbWJpYTEUMBIGA1UEBRMLOTAxMzEyMTEyLTQwHQYDVR0OBBYEFCJbrc3C7Y95FmzhU4xYMe8hb39tMA4GA1UdDwEB/wQEAwIF4DANBgkqhkiG9w0BAQsFAAOCAQEArsRQuXwBM6SOohj2vQ6XLoMmdn83vEkQN/NZ7NBpMHI0+Im+ij3mQxYcPJET6X2qljVt8v+dC4eNeANQ+cWTIzDcBuxnjIMFpHTchCGVPC1/XENLr66Ly+wXurDNBA5Zo2I4VATkIEG6d39PuM4SSmz+ZrGjiOz+A0FfQsq6wP+fp9TLHphR8U4wfk87NKLl8H1Vafo7YX7Fz9WCPeYMEjeeyiBEhdoXS/v7l1PEj7JfYodSJO/YhNJzcla6EAp63BV/JPMTQaOBlzp1SL8+YHDTUekIbMpL5iByY9KL/ooQvZm+R0rcvaAJCCgogmcytUj4LK9plcOiIgtpg3gVtQ==</wsse:BinarySecurityToken><ds:Signature Id="SIG-BD40368ECABC33A9ED174242532066441" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces PrefixList="wsa soap wcf" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><ds:Reference URI="#id-BD40368ECABC33A9ED174242532063240"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces PrefixList="soap wcf" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>qJh6cLlCnqq3wbelPQpLrHWjF1DckDtAd6nImSnuk0A=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>QfUTEIbjYSlsBrTjWPwzciZvY/je5La75j8yZrRhxUDHqYHt/09erTS6o6Cd8kMFg4cLoleY1VF1P0xiFMLJCIQYvb9TKYmQPuV2y4vw2B7fAkKNRxSW5JRjeIaAWN3WZ3XjIZiKZMzNKXKVLuM6hKNQ1mtnKBHqc3QpRikmekRwpJ7hDACB+LCbwHQywG9aAdaKzELHO3zzc1khju1YvcRb+eN9Dll7I0CVSX7RUklUfdUtdcyumZPmsgRmPMAZp0PG9owrbOd24tLKDD8QJQM9duNrv+EghPzsBmhYe70CzVlJ7Q3JtiWPctn6O5+Skb2DIsSuyJ6+wkyMNXfdVQ==</ds:SignatureValue><ds:KeyInfo Id="KI-BD40368ECABC33A9ED174242532063238"><wsse:SecurityTokenReference wsu:Id="STR-BD40368ECABC33A9ED174242532063239"><wsse:Reference URI="#X509-BD40368ECABC33A9ED174242532063237" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></ds:KeyInfo></ds:Signature></wsse:Security><wsa:Action>http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync</wsa:Action><wsa:To wsu:Id="id-BD40368ECABC33A9ED174242532063240" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">https://vpfe.dian.gov.co/WcfDianCustomerServices.svc</wsa:To></soap:Header>'+;
        '<soap:Body>' + ;
        '<wcf:SendBillSync>' + ;
        '<wcf:fileName>' + cNomZip +'</wcf:fileName>' + ;
        '<wcf:contentFile>' + cFacturaXml + '</wcf:contentFile>' + ;
        '</wcf:SendBillSync>' + ;
        '</soap:Body>' + ;
        '</soap:Envelope>'


   //  HB_MEMOWRIT( "PRUEBA.XML", cXmlStr )

   // Establecer cabeceras requeridas por el WS

   aadd( aHeader, "Content-Type: application/soap+xml; charset=UTF-8" )
   aadd( aHeader, "SOAPaction=http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync" )
   aadd( aHeader, "Connection: Keep-Alive" )
   aadd( aHeader, "Cache-Control: private" )

   hCurl     := curl_easy_init()
   curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYPEER, .f. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYHOST, .f. )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERT, cCertFile )
   curl_easy_setopt( hCurl, HB_CURLOPT_SSLCERTTYPE, cCertType )
   curl_easy_setopt( hCurl, HB_CURLOPT_KEYPASSWD, cCertPass )

   curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cXmlStr )
   curl_easy_setopt( hCurl, HB_CURLOPT_DL_BUFF_SETUP )
   curl_easy_setopt( hCurl, HB_CURLOPT_HTTPHEADER, aHeader )


   // echo server, para depurar .T.
   curl_easy_setopt( hCurl, HB_CURLOPT_VERBOSE, .T. )
   curl_easy_setopt( hCurl, HB_CURLOPT_ENCODING, "" )
   curl_easy_setopt( hCurl, HB_CURLOPT_MAXREDIRS, 10 )
   curl_easy_setopt( hCurl, HB_CURLOPT_CUSTOMREQUEST, "POST" )

   // No reutilizar conexiones
   curl_easy_setopt( hCurl, HB_CURLOPT_FRESH_CONNECT, .T.)
   curl_easy_setopt( hCurl, HB_CURLOPT_FORBID_REUSE, .T.)
 

   // Conexion
   nError    := curl_easy_perform( hCurl )
   cResponse := curl_easy_dl_buff_get( hCurl )

   if nError == 0
      hb_memowrit( "respuesta.xml", cResponse )
   else
      MSGINFO( curl_easy_strerror( nError ) )
   endif

   curl_easy_cleanup( hCurl )
   curl_global_cleanup()

return

]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 (SOLUCIONADO) :: Reply by russimicro]]> 2025-03-19T18:51:02-06:00 2025-03-19T18:51:02-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278467#p278467

Code: Select all | Expand

	<soap:Header
		xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<wsse:Security soap:mustUnderstand="true"
			xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
			xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
			<wsu:Timestamp wsu:Id="TS-938EB38DEFEBD26652174243018444012">
				<wsu:Created>2025-03-20T00:23:04.440Z</wsu:Created>
				<wsu:Expires>2025-03-20T17:03:04.440Z</wsu:Expires>
			</wsu:Timestamp>
			<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-938EB38DEFEBD2665217424301843837">MIIHCDCCBfCgAwIBAgIIK+IT003JoQUwDQYJKoZIhvcNAQELBQAwgcUxJjAkBgNVBAMMHVNVQkNBIENBTUVSRklSTUEgQ09MT01CSUEgU0FTMRQwEgYDVQQFEws5MDEzMTIxMTItNDFAMD4GA1UECww3Q2VydGlmaWNhZG9zIFBhcmEgRmlybWEgRWxlY3Ryb25pY2EgQ2FtZXJmaXJtYSBDb2xvbWJpYTEgMB4GA1UECgwXQ0FNRVJGSVJNQSBDT0xPTUJJQSBTQVMxFDASBgNVBAcMC0JPR09UQSBELkMuMQswCQYDVQQGEwJDTzAeFw0yNDA3MjQxMzU4MzZaFw0yNjA3MjQxMzU4MzVaMIHLMRwwGgYDVQQJDBNDUkEgMzYgNDQgMzUgT0YgODAzMRMwEQYDVQQUEwozMTY1MjI5NTI4MSAwHgYDVQQDDBdNQVJUSEEgQ0FTVElMTE8gRlVFTlRFUzERMA8GA1UEBRMINjMzMTc2NzIxHDAaBgNVBAsME0ZhY3R1cmEgZWxlY3Ryb25pY2ExIDAeBgNVBAoMF01BUlRIQSBDQVNUSUxMTyBGVUVOVEVTMRQwEgYDVQQIDAtCdWNhcmFtYW5nYTELMAkGA1UEBhMCQ08wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCW4HEbz3N/QWH/5PrCol8/etMgghJizecnQbod7qY++ZKUPGKW1GUqsBIesoZ276W5UPPqtnCnc4zYKori/6SmrF7hthv7VpzWugdaULzQp+R4i2cG2Jcx+OcddRU6cxdYBoZD97FWjwqHKXZ2ahCh8tbzkFuPXlpN9F4zIIHG9p3BtOGuJhrCMdak905A8/6g7H1GLuud/txaCFIK1+kempBatMMiA1S4+EH+xWMYGtxIakolNLbapXh+uXcybmH68Ge4KraFZLCnUvgv1o7EC3PvQeXfZbnUxJ11BiCG+ZcrBeaJZpbVS1K7elVVjd1fpnEM95EK1qpmjUyDPXDXAgMBAAGjggLyMIIC7jAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFMCPn2uVGVZRNZ5UmMZ3l/0l2PbNMFsGCCsGAQUFBwEBBE8wTTBLBggrBgEFBQcwAYY/aHR0cDovL3BraWNvbC5jYW1lcmZpcm1hY29sb21iaWEuY28vZWpiY2EvcHVibGljd2ViL3N0YXR1cy9vY3NwMBUGA1UdEQQOMAyICisGAQQBgYcuHgswJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcDATCCAe8GA1UdHwEB/wSCAeMwggHfMIIB26CCAQmgggEFhoIBAWh0dHA6Ly9wa2ljb2wuY2FtZXJmaXJtYWNvbG9tYmlhLmNvL2VqYmNhL3B1YmxpY3dlYi93ZWJkaXN0L2NlcnRkaXN0P2NtZD1jcmwmaXNzdWVyPUNOJTNEU1VCQ0ErQ0FNRVJGSVJNQStDT0xPTUJJQStTQVMlMkNTTiUzRDkwMTMxMjExMi00JTJDT1UlM0RDZXJ0aWZpY2Fkb3MrUGFyYStGaXJtYStFbGVjdHJvbmljYStDYW1lcmZpcm1hK0NvbG9tYmlhJTJDTyUzRENBTUVSRklSTUErQ09MT01CSUErU0FTJTJDTCUzREJPR09UQStELkMuJTJDQyUzRENPooHLpIHIMIHFMSYwJAYDVQQDDB1TVUJDQSBDQU1FUkZJUk1BIENPTE9NQklBIFNBUzELMAkGA1UEBhMCQ08xFDASBgNVBAcMC0JPR09UQSBELkMuMSAwHgYDVQQKDBdDQU1FUkZJUk1BIENPTE9NQklBIFNBUzFAMD4GA1UECww3Q2VydGlmaWNhZG9zIFBhcmEgRmlybWEgRWxlY3Ryb25pY2EgQ2FtZXJmaXJtYSBDb2xvbWJpYTEUMBIGA1UEBRMLOTAxMzEyMTEyLTQwHQYDVR0OBBYEFCJbrc3C7Y95FmzhU4xYMe8hb39tMA4GA1UdDwEB/wQEAwIF4DANBgkqhkiG9w0BAQsFAAOCAQEArsRQuXwBM6SOohj2vQ6XLoMmdn83vEkQN/NZ7NBpMHI0+Im+ij3mQxYcPJET6X2qljVt8v+dC4eNeANQ+cWTIzDcBuxnjIMFpHTchCGVPC1/XENLr66Ly+wXurDNBA5Zo2I4VATkIEG6d39PuM4SSmz+ZrGjiOz+A0FfQsq6wP+fp9TLHphR8U4wfk87NKLl8H1Vafo7YX7Fz9WCPeYMEjeeyiBEhdoXS/v7l1PEj7JfYodSJO/YhNJzcla6EAp63BV/JPMTQaOBlzp1SL8+YHDTUekIbMpL5iByY9KL/ooQvZm+R0rcvaAJCCgogmcytUj4LK9plcOiIgtpg3gVtQ==</wsse:BinarySecurityToken>
			<ds:Signature Id="SIG-938EB38DEFEBD26652174243018442611"
				xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
				<ds:SignedInfo>
					<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
						<ec:InclusiveNamespaces PrefixList="wsa soap wcf"
							xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/>
						</ds:CanonicalizationMethod>
						<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
						<ds:Reference URI="#id-938EB38DEFEBD26652174243018438610">
							<ds:Transforms>
								<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
									<ec:InclusiveNamespaces PrefixList="soap wcf"
										xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/>
									</ds:Transform>
								</ds:Transforms>
								<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
								<ds:DigestValue>buQfAhluXZsKUO9HlDLCSFgl0MeGNpeG7bWGlApVNL8=</ds:DigestValue>
							</ds:Reference>
						</ds:SignedInfo>
						<ds:SignatureValue>GMgcY6ADnFAlGnWNQqOsOOQDd+WicYhZwabfkWsZlcNiUacKLvpr7+K1akLjls7ZaP6XNj/3LwQOcFWB+it5rwuVbyC7DMGNYDMVih99dz6HiChUggeTZdDO7t+G2e/VHr+BQobqsrhn1Pj4X/WbFu+MFPtwRralxyZvCe/SamkidyQb2aNyXXI6PHZsW507o7aGmAF/MFYAk4b/8xf6QXYnRrkYUWoAsOjAO2vzILl8Lk7ppBCbYa6Q4AUzdsCnDqr9iKgC+nXw40gQ0Q/EeOzV/oSQ9VQDkLcDrYvWG8hsjFYBmF4F+AGfwC5yovuljrvDM82sG+D3yNMcLv+Ofg==</ds:SignatureValue>
						<ds:KeyInfo Id="KI-938EB38DEFEBD2665217424301843858">
							<wsse:SecurityTokenReference wsu:Id="STR-938EB38DEFEBD2665217424301843859">
								<wsse:Reference URI="#X509-938EB38DEFEBD2665217424301843837" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
							</wsse:SecurityTokenReference>
						</ds:KeyInfo>
					</ds:Signature>
				</wsse:Security>
				<wsa:Action>http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync</wsa:Action>
				<wsa:To wsu:Id="id-938EB38DEFEBD26652174243018438610"
					xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">https://vpfe.dian.gov.co/WcfDianCustomerServices.svc
				</wsa:To>
	</soap:Header>
]]>

Code: Select all | Expand

	<soap:Header
		xmlns:wsa="http://www.w3.org/2005/08/addressing">
		<wsse:Security soap:mustUnderstand="true"
			xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
			xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
			<wsu:Timestamp wsu:Id="TS-938EB38DEFEBD26652174243018444012">
				<wsu:Created>2025-03-20T00:23:04.440Z</wsu:Created>
				<wsu:Expires>2025-03-20T17:03:04.440Z</wsu:Expires>
			</wsu:Timestamp>
			<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-938EB38DEFEBD2665217424301843837">MIIHCDCCBfCgAwIBAgIIK+IT003JoQUwDQYJKoZIhvcNAQELBQAwgcUxJjAkBgNVBAMMHVNVQkNBIENBTUVSRklSTUEgQ09MT01CSUEgU0FTMRQwEgYDVQQFEws5MDEzMTIxMTItNDFAMD4GA1UECww3Q2VydGlmaWNhZG9zIFBhcmEgRmlybWEgRWxlY3Ryb25pY2EgQ2FtZXJmaXJtYSBDb2xvbWJpYTEgMB4GA1UECgwXQ0FNRVJGSVJNQSBDT0xPTUJJQSBTQVMxFDASBgNVBAcMC0JPR09UQSBELkMuMQswCQYDVQQGEwJDTzAeFw0yNDA3MjQxMzU4MzZaFw0yNjA3MjQxMzU4MzVaMIHLMRwwGgYDVQQJDBNDUkEgMzYgNDQgMzUgT0YgODAzMRMwEQYDVQQUEwozMTY1MjI5NTI4MSAwHgYDVQQDDBdNQVJUSEEgQ0FTVElMTE8gRlVFTlRFUzERMA8GA1UEBRMINjMzMTc2NzIxHDAaBgNVBAsME0ZhY3R1cmEgZWxlY3Ryb25pY2ExIDAeBgNVBAoMF01BUlRIQSBDQVNUSUxMTyBGVUVOVEVTMRQwEgYDVQQIDAtCdWNhcmFtYW5nYTELMAkGA1UEBhMCQ08wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCW4HEbz3N/QWH/5PrCol8/etMgghJizecnQbod7qY++ZKUPGKW1GUqsBIesoZ276W5UPPqtnCnc4zYKori/6SmrF7hthv7VpzWugdaULzQp+R4i2cG2Jcx+OcddRU6cxdYBoZD97FWjwqHKXZ2ahCh8tbzkFuPXlpN9F4zIIHG9p3BtOGuJhrCMdak905A8/6g7H1GLuud/txaCFIK1+kempBatMMiA1S4+EH+xWMYGtxIakolNLbapXh+uXcybmH68Ge4KraFZLCnUvgv1o7EC3PvQeXfZbnUxJ11BiCG+ZcrBeaJZpbVS1K7elVVjd1fpnEM95EK1qpmjUyDPXDXAgMBAAGjggLyMIIC7jAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFMCPn2uVGVZRNZ5UmMZ3l/0l2PbNMFsGCCsGAQUFBwEBBE8wTTBLBggrBgEFBQcwAYY/aHR0cDovL3BraWNvbC5jYW1lcmZpcm1hY29sb21iaWEuY28vZWpiY2EvcHVibGljd2ViL3N0YXR1cy9vY3NwMBUGA1UdEQQOMAyICisGAQQBgYcuHgswJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcDATCCAe8GA1UdHwEB/wSCAeMwggHfMIIB26CCAQmgggEFhoIBAWh0dHA6Ly9wa2ljb2wuY2FtZXJmaXJtYWNvbG9tYmlhLmNvL2VqYmNhL3B1YmxpY3dlYi93ZWJkaXN0L2NlcnRkaXN0P2NtZD1jcmwmaXNzdWVyPUNOJTNEU1VCQ0ErQ0FNRVJGSVJNQStDT0xPTUJJQStTQVMlMkNTTiUzRDkwMTMxMjExMi00JTJDT1UlM0RDZXJ0aWZpY2Fkb3MrUGFyYStGaXJtYStFbGVjdHJvbmljYStDYW1lcmZpcm1hK0NvbG9tYmlhJTJDTyUzRENBTUVSRklSTUErQ09MT01CSUErU0FTJTJDTCUzREJPR09UQStELkMuJTJDQyUzRENPooHLpIHIMIHFMSYwJAYDVQQDDB1TVUJDQSBDQU1FUkZJUk1BIENPTE9NQklBIFNBUzELMAkGA1UEBhMCQ08xFDASBgNVBAcMC0JPR09UQSBELkMuMSAwHgYDVQQKDBdDQU1FUkZJUk1BIENPTE9NQklBIFNBUzFAMD4GA1UECww3Q2VydGlmaWNhZG9zIFBhcmEgRmlybWEgRWxlY3Ryb25pY2EgQ2FtZXJmaXJtYSBDb2xvbWJpYTEUMBIGA1UEBRMLOTAxMzEyMTEyLTQwHQYDVR0OBBYEFCJbrc3C7Y95FmzhU4xYMe8hb39tMA4GA1UdDwEB/wQEAwIF4DANBgkqhkiG9w0BAQsFAAOCAQEArsRQuXwBM6SOohj2vQ6XLoMmdn83vEkQN/NZ7NBpMHI0+Im+ij3mQxYcPJET6X2qljVt8v+dC4eNeANQ+cWTIzDcBuxnjIMFpHTchCGVPC1/XENLr66Ly+wXurDNBA5Zo2I4VATkIEG6d39PuM4SSmz+ZrGjiOz+A0FfQsq6wP+fp9TLHphR8U4wfk87NKLl8H1Vafo7YX7Fz9WCPeYMEjeeyiBEhdoXS/v7l1PEj7JfYodSJO/YhNJzcla6EAp63BV/JPMTQaOBlzp1SL8+YHDTUekIbMpL5iByY9KL/ooQvZm+R0rcvaAJCCgogmcytUj4LK9plcOiIgtpg3gVtQ==</wsse:BinarySecurityToken>
			<ds:Signature Id="SIG-938EB38DEFEBD26652174243018442611"
				xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
				<ds:SignedInfo>
					<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
						<ec:InclusiveNamespaces PrefixList="wsa soap wcf"
							xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/>
						</ds:CanonicalizationMethod>
						<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
						<ds:Reference URI="#id-938EB38DEFEBD26652174243018438610">
							<ds:Transforms>
								<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
									<ec:InclusiveNamespaces PrefixList="soap wcf"
										xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/>
									</ds:Transform>
								</ds:Transforms>
								<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
								<ds:DigestValue>buQfAhluXZsKUO9HlDLCSFgl0MeGNpeG7bWGlApVNL8=</ds:DigestValue>
							</ds:Reference>
						</ds:SignedInfo>
						<ds:SignatureValue>GMgcY6ADnFAlGnWNQqOsOOQDd+WicYhZwabfkWsZlcNiUacKLvpr7+K1akLjls7ZaP6XNj/3LwQOcFWB+it5rwuVbyC7DMGNYDMVih99dz6HiChUggeTZdDO7t+G2e/VHr+BQobqsrhn1Pj4X/WbFu+MFPtwRralxyZvCe/SamkidyQb2aNyXXI6PHZsW507o7aGmAF/MFYAk4b/8xf6QXYnRrkYUWoAsOjAO2vzILl8Lk7ppBCbYa6Q4AUzdsCnDqr9iKgC+nXw40gQ0Q/EeOzV/oSQ9VQDkLcDrYvWG8hsjFYBmF4F+AGfwC5yovuljrvDM82sG+D3yNMcLv+Ofg==</ds:SignatureValue>
						<ds:KeyInfo Id="KI-938EB38DEFEBD2665217424301843858">
							<wsse:SecurityTokenReference wsu:Id="STR-938EB38DEFEBD2665217424301843859">
								<wsse:Reference URI="#X509-938EB38DEFEBD2665217424301843837" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
							</wsse:SecurityTokenReference>
						</ds:KeyInfo>
					</ds:Signature>
				</wsse:Security>
				<wsa:Action>http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync</wsa:Action>
				<wsa:To wsu:Id="id-938EB38DEFEBD26652174243018438610"
					xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">https://vpfe.dian.gov.co/WcfDianCustomerServices.svc
				</wsa:To>
	</soap:Header>
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 (SOLUCIONADO) :: Reply by quim_]]> 2025-03-20T05:52:21-06:00 2025-03-20T05:52:21-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278480#p278480
Puedes revisar el post que publiqué para entender un poco los formatos a que te enfrentas

viewtopic.php?t=44888

Como he comentado en otras ocasiones, con Chilkat puedes hacer casi de todo, lo que no consigues con las herramientas disponibles en FiveWin y harbour, puedes conseguirlo con Chilkat, además tienes ejemplos en código foxpro o vbasic muy parecido a nuestro codigo

https://tools.chilkat.io/soap_wsdl_gene ... oxpro&mr=f]]>

Puedes revisar el post que publiqué para entender un poco los formatos a que te enfrentas

viewtopic.php?t=44888

Como he comentado en otras ocasiones, con Chilkat puedes hacer casi de todo, lo que no consigues con las herramientas disponibles en FiveWin y harbour, puedes conseguirlo con Chilkat, además tienes ejemplos en código foxpro o vbasic muy parecido a nuestro codigo

https://tools.chilkat.io/soap_wsdl_gene ... oxpro&mr=f]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 (SOLUCIONADO) :: Reply by russimicro]]> 2025-03-20T06:09:57-06:00 2025-03-20T06:09:57-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278482#p278482
Si he leído tu post...

Y por practicidad creo que la solución es con Chilkat ... seria ver si en el foro podemos comprar la licencia para 4 programadores---

? la lib Chilkat , se puede usar directamente en (x)harbour o tocaría en c ?

Gracias...]]>

Si he leído tu post...

Y por practicidad creo que la solución es con Chilkat ... seria ver si en el foro podemos comprar la licencia para 4 programadores---

? la lib Chilkat , se puede usar directamente en (x)harbour o tocaría en c ?

Gracias...]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 (SOLUCIONADO) :: Reply by russimicro]]> 2025-03-20T07:53:16-06:00 2025-03-20T07:53:16-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278486#p278486

Code: Select all | Expand

FUNCTION CLILKAT(cFilNam, xDocB64)


LOCAL loXml
LOCAL lcSoapRequestBody
LOCAL lcEndpoint
LOCAL lcSoapAction
LOCAL lcContentType
LOCAL loHttp
LOCAL loResp
LOCAL loResponseXml
LOCAL lnStatusCode
LOCAL lcV_string
LOCAL lcIsValid
LOCAL lcStatusCode
LOCAL lcStatusDescription
LOCAL lcStatusMessage
LOCAL lcXmlBase64Bytes
LOCAL lcXmlBytes
LOCAL lcXmlDocumentKey
LOCAL lcXmlFileName
local cFilXml

* For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml')
loXml = CreateObject('Chilkat.Xml')
loXml:Tag = "soap:Envelope"
loXml:AddAttribute("xmlns:soap","http://www.w3.org/2003/05/soap-envelope")
loXml:AddAttribute("xmlns:wcf","http://wcf.dian.colombia")
loXml:UpdateChildContent("soap:Header","")
loXml:UpdateChildContent("soap:Body|wcf:SendBillSync|wcf:fileName",cFilNam)
loXml:UpdateChildContent("soap:Body|wcf:SendBillSync|wcf:contentFile",xDocB64)

* In a SOAP HTTP request, including the XML declaration (<?xml version="1.0" encoding="UTF-8"?>) in the XML body is generally not required.
loXml:EmitXmlDecl = 0
lcSoapRequestBody = loXml:GetXml()

lcEndpoint = "https://vpfe-hab.dian.gov.co/WcfDianCustomerServices.svc"
lcSoapAction = "http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync"
*  For SOAP requests, the standard Content-Type is usually set to "text/xml" or "application/soap+xml"
lcContentType = "application/soap+xml"

* For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Http')
loHttp = CreateObject('Chilkat.Http')

loHttp:ClearHeaders()
loHttp:SetRequestHeader("Content-Type",lcContentType)
loHttp:SetRequestHeader("SOAPAction",lcSoapAction)

loResp = loHttp:PostXml(lcEndpoint,lcSoapRequestBody,"utf-8")
IF (loHttp:LastMethodSuccess = 0)
    alert( loHttp:LastErrorText)
    alert( "Failed to send SOAP request." )
    RELEASE loXml
    RELEASE loHttp
    CANCEL
ENDIF

* Get the XML response body.
* For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml')
loResponseXml = CreateObject('Chilkat.Xml')
loResp:GetBodyXml(loResponseXml)

lnStatusCode = loResp:StatusCode
alert( "response status code: " + STR(lnStatusCode) )

RELEASE loResp

cFilXml :=  loResponseXml:GetXml()

hb_memowrit( "respuestaCli.xml", cFilXml )

* If the status code does not indicate succcess, then show the response XML,
* which probably contains error information.
IF (lnStatusCode <> 200)
    alert( cFilXml )
    RELEASE loXml
    RELEASE loHttp
    RELEASE loResponseXml
    CANCEL
ENDIF


* Parse the successful SOAP response XML.

* This is a sample of the response XML, but the namespace prefixes will be different.
* We can parse the result using "*" for the namespace prefixes (see below).

lcV_string = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:ErrorMessage|*:string")
lcIsValid = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:IsValid")
lcStatusCode = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:StatusCode")
lcStatusDescription = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:StatusDescription")
lcStatusMessage = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:StatusMessage")
lcXmlBase64Bytes = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:XmlBase64Bytes")
lcXmlBytes = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:XmlBytes")
lcXmlDocumentKey = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:XmlDocumentKey")
lcXmlFileName = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:XmlFileName")

RELEASE loXml
RELEASE loHttp
RELEASE loResponseXml


RETURN cFilXml
]]>

Code: Select all | Expand

FUNCTION CLILKAT(cFilNam, xDocB64)


LOCAL loXml
LOCAL lcSoapRequestBody
LOCAL lcEndpoint
LOCAL lcSoapAction
LOCAL lcContentType
LOCAL loHttp
LOCAL loResp
LOCAL loResponseXml
LOCAL lnStatusCode
LOCAL lcV_string
LOCAL lcIsValid
LOCAL lcStatusCode
LOCAL lcStatusDescription
LOCAL lcStatusMessage
LOCAL lcXmlBase64Bytes
LOCAL lcXmlBytes
LOCAL lcXmlDocumentKey
LOCAL lcXmlFileName
local cFilXml

* For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml')
loXml = CreateObject('Chilkat.Xml')
loXml:Tag = "soap:Envelope"
loXml:AddAttribute("xmlns:soap","http://www.w3.org/2003/05/soap-envelope")
loXml:AddAttribute("xmlns:wcf","http://wcf.dian.colombia")
loXml:UpdateChildContent("soap:Header","")
loXml:UpdateChildContent("soap:Body|wcf:SendBillSync|wcf:fileName",cFilNam)
loXml:UpdateChildContent("soap:Body|wcf:SendBillSync|wcf:contentFile",xDocB64)

* In a SOAP HTTP request, including the XML declaration (<?xml version="1.0" encoding="UTF-8"?>) in the XML body is generally not required.
loXml:EmitXmlDecl = 0
lcSoapRequestBody = loXml:GetXml()

lcEndpoint = "https://vpfe-hab.dian.gov.co/WcfDianCustomerServices.svc"
lcSoapAction = "http://wcf.dian.colombia/IWcfDianCustomerServices/SendBillSync"
*  For SOAP requests, the standard Content-Type is usually set to "text/xml" or "application/soap+xml"
lcContentType = "application/soap+xml"

* For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Http')
loHttp = CreateObject('Chilkat.Http')

loHttp:ClearHeaders()
loHttp:SetRequestHeader("Content-Type",lcContentType)
loHttp:SetRequestHeader("SOAPAction",lcSoapAction)

loResp = loHttp:PostXml(lcEndpoint,lcSoapRequestBody,"utf-8")
IF (loHttp:LastMethodSuccess = 0)
    alert( loHttp:LastErrorText)
    alert( "Failed to send SOAP request." )
    RELEASE loXml
    RELEASE loHttp
    CANCEL
ENDIF

* Get the XML response body.
* For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml')
loResponseXml = CreateObject('Chilkat.Xml')
loResp:GetBodyXml(loResponseXml)

lnStatusCode = loResp:StatusCode
alert( "response status code: " + STR(lnStatusCode) )

RELEASE loResp

cFilXml :=  loResponseXml:GetXml()

hb_memowrit( "respuestaCli.xml", cFilXml )

* If the status code does not indicate succcess, then show the response XML,
* which probably contains error information.
IF (lnStatusCode <> 200)
    alert( cFilXml )
    RELEASE loXml
    RELEASE loHttp
    RELEASE loResponseXml
    CANCEL
ENDIF


* Parse the successful SOAP response XML.

* This is a sample of the response XML, but the namespace prefixes will be different.
* We can parse the result using "*" for the namespace prefixes (see below).

lcV_string = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:ErrorMessage|*:string")
lcIsValid = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:IsValid")
lcStatusCode = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:StatusCode")
lcStatusDescription = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:StatusDescription")
lcStatusMessage = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:StatusMessage")
lcXmlBase64Bytes = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:XmlBase64Bytes")
lcXmlBytes = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:XmlBytes")
lcXmlDocumentKey = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:XmlDocumentKey")
lcXmlFileName = loResponseXml:GetChildContent("*:Body|*:SendBillSyncResponse|*:SendBillSyncResult|*:XmlFileName")

RELEASE loXml
RELEASE loHttp
RELEASE loResponseXml


RETURN cFilXml
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 (SOLUCIONADO) :: Reply by russimicro]]> 2025-03-20T14:18:04-06:00 2025-03-20T14:18:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278488#p278488
Ahora estoy mirando con firmar un xml tipo invoice (factura o notas electronicas)]]>

Ahora estoy mirando con firmar un xml tipo invoice (factura o notas electronicas)]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 (SOLUCIONADO) :: Reply by russimicro]]> 2025-03-21T05:43:44-06:00 2025-03-21T05:43:44-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278493#p278493
Estuve trabajando el ActiveX de CHILKAT y ya logre los 4 procesos críticos para enviar facturas electrónicas a la DIAN Colombia

1. Creación de XML
2. Firmar XML : INVOICE, CREDITNOTE, ETC
3. Firmar XML de petición o ejecución de WS DIAN
4. Envió de petición o ejecución de WS DIAN (para no usar LIBCURL)]]>

Estuve trabajando el ActiveX de CHILKAT y ya logre los 4 procesos críticos para enviar facturas electrónicas a la DIAN Colombia

1. Creación de XML
2. Firmar XML : INVOICE, CREDITNOTE, ETC
3. Firmar XML de petición o ejecución de WS DIAN
4. Envió de petición o ejecución de WS DIAN (para no usar LIBCURL)]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 (SOLUCIONADO) :: Reply by FiveWiDi]]> 2025-03-21T08:23:26-06:00 2025-03-21T08:23:26-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278496#p278496
russimicro wrote: Fri Mar 21, 2025 11:43 am Buen día...

Estuve trabajando el ActiveX de CHILKAT y ya logre los 4 procesos críticos para enviar facturas electrónicas a la DIAN Colombia

1. Creación de XML
2. Firmar XML : INVOICE, CREDITNOTE, ETC
3. Firmar XML de petición o ejecución de WS DIAN
4. Envió de petición o ejecución de WS DIAN (para no usar LIBCURL)
Hola a todos,

No estoy muy al corriente del proceso para Colombia pero:

1. Creación de XML -->> precisa de firma?
2. Firmar XML : INVOICE, CREDITNOTE, ETC -->> Para España creo que se puede hacer por comandos con Autofirma, creo que podría valer para Colombia (se trata de firmar un fichero con una firma digital, entiendo).
3. Firmar XML de petición o ejecución de WS DIAN -->> Esto lo desconozco.
4. Envió de petición o ejecución de WS DIAN (para no usar LIBCURL) -->> Yo los envío con CURL.EXE bajado de la red; por tanto me desvinculo del programa por si hay actualizaciones futuras de Windows o de no sé qué, y fuercen a recompilar el programa; sería suficiente con buscar la versión adecuada de CURL.EXE

Cuantas más utilidades estén fuera del programa mejor.
Hay quién aún está usando mi programa de hace 23 años (en pesetas y euros), gracias a no tener cosas 'complicadas' en él. Hoy en día compilado con FWH 25.01 32b y quizás este año a 64b. Pero no me pidan cosas bonitas.]]>
russimicro wrote: Fri Mar 21, 2025 11:43 am Buen día...

Estuve trabajando el ActiveX de CHILKAT y ya logre los 4 procesos críticos para enviar facturas electrónicas a la DIAN Colombia

1. Creación de XML
2. Firmar XML : INVOICE, CREDITNOTE, ETC
3. Firmar XML de petición o ejecución de WS DIAN
4. Envió de petición o ejecución de WS DIAN (para no usar LIBCURL)
Hola a todos,

No estoy muy al corriente del proceso para Colombia pero:

1. Creación de XML -->> precisa de firma?
2. Firmar XML : INVOICE, CREDITNOTE, ETC -->> Para España creo que se puede hacer por comandos con Autofirma, creo que podría valer para Colombia (se trata de firmar un fichero con una firma digital, entiendo).
3. Firmar XML de petición o ejecución de WS DIAN -->> Esto lo desconozco.
4. Envió de petición o ejecución de WS DIAN (para no usar LIBCURL) -->> Yo los envío con CURL.EXE bajado de la red; por tanto me desvinculo del programa por si hay actualizaciones futuras de Windows o de no sé qué, y fuercen a recompilar el programa; sería suficiente con buscar la versión adecuada de CURL.EXE

Cuantas más utilidades estén fuera del programa mejor.
Hay quién aún está usando mi programa de hace 23 años (en pesetas y euros), gracias a no tener cosas 'complicadas' en él. Hoy en día compilado con FWH 25.01 32b y quizás este año a 64b. Pero no me pidan cosas bonitas.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 (AHORA SOLUCION CHILKAT - ACTIVEX) :: Reply by wilsongamboa]]> 2025-03-21T12:00:38-06:00 2025-03-21T12:00:38-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278504#p278504 en mi pais Ecuador yo tuve que comprar un componente activex hecho en c# que me firma
Seria de agradecer si ponen ejemplos con la aotufirma con chilkat con openssl ya que si podemos controlar nosotros todo el rpoceso mucho mejor ya que a veces hay cambios inesperados de la parte tributaria y toca iniciar de nuevo con otro producto en firmado de xml
saludos
y se agradece de antemano]]>
en mi pais Ecuador yo tuve que comprar un componente activex hecho en c# que me firma
Seria de agradecer si ponen ejemplos con la aotufirma con chilkat con openssl ya que si podemos controlar nosotros todo el rpoceso mucho mejor ya que a veces hay cambios inesperados de la parte tributaria y toca iniciar de nuevo con otro producto en firmado de xml
saludos
y se agradece de antemano]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: LIB CURL + HARBOUR + BCC 7.7 (AHORA SOLUCION CHILKAT - ACTIVEX) :: Reply by russimicro]]> 2025-03-21T13:32:06-06:00 2025-03-21T13:32:06-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45530&p=278507#p278507 https://www.example-code.com/foxpro/ubl ... nature.asp]]> https://www.example-code.com/foxpro/ubl ... nature.asp]]> <![CDATA[FiveWin para Harbour/xHarbour :: Re: España: Normativa sancionadora sistemas informáticos :: Reply by Verhoven]]> 2025-03-22T01:19:29-06:00 2025-03-22T01:19:29-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=40705&p=278513#p278513 Os dejo la noticia para que la podáis revisar:

https://economistas.es/wp-content/uploa ... barees.pdf

Parece que hacienda va a hacer una aplicación para todo el mundo, ya veremos lo práctica que será, y que vuelve a retrasar la entrada en vigor y ajusta ahora la exigencia en función del importe de las facturas emitidas y el tamaño de las empresas.

Vuelven a demostrar que legislan a cadena suelta, sin pensárselo bien y siempre sin consultar a nadie ni admitir rectificaciones o consejos.

Así nos va...]]>
Os dejo la noticia para que la podáis revisar:

https://economistas.es/wp-content/uploa ... barees.pdf

Parece que hacienda va a hacer una aplicación para todo el mundo, ya veremos lo práctica que será, y que vuelve a retrasar la entrada en vigor y ajusta ahora la exigencia en función del importe de las facturas emitidas y el tamaño de las empresas.

Vuelven a demostrar que legislan a cadena suelta, sin pensárselo bien y siempre sin consultar a nadie ni admitir rectificaciones o consejos.

Así nos va...]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: España: Normativa sancionadora sistemas informáticos :: Reply by FiveWiDi]]> 2025-03-22T05:17:25-06:00 2025-03-22T05:17:25-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=40705&p=278516#p278516
Verhoven wrote: Sat Mar 22, 2025 7:19 am Nueva modificación en las exigencias de las facturas inmediatas.
Os dejo la noticia para que la podáis revisar:

https://economistas.es/wp-content/uploa ... barees.pdf

Parece que hacienda va a hacer una aplicación para todo el mundo, ya veremos lo práctica que será, y que vuelve a retrasar la entrada en vigor y ajusta ahora la exigencia en función del importe de las facturas emitidas y el tamaño de las empresas.

Vuelven a demostrar que legislan a cadena suelta, sin pensárselo bien y siempre sin consultar a nadie ni admitir rectificaciones o consejos.

Así nos va...
Hola,

Según este artículo está hablando de la factura electrónica, como aún no hay reglamento no me preocuparé. Cuando lo haya ya no serán artículos periodísticos (que a veces hablan de oídas) y entonces veremos los requisitos con certeza, y sobre todo los plazos que todo parece indicar que hasta 2027 tenemos tiempo.

De todas maneras primero está Verifactu, y eso facilitará (al menos un poco) el paso/uso de la factura electrónica, pues quién ya esté aplicando Verifactu On line, el paso a la factura electrónica le pillará (al menos a mi) con más experiencia en ciertos procesos.

>>...de las facturas inmediatas
No sé que son las facturas inmediatas, pero quizás con lo que intuyo que quieres decir, con Verifactu On line ya se debe aplicar.]]>
Verhoven wrote: Sat Mar 22, 2025 7:19 am Nueva modificación en las exigencias de las facturas inmediatas.
Os dejo la noticia para que la podáis revisar:

https://economistas.es/wp-content/uploa ... barees.pdf

Parece que hacienda va a hacer una aplicación para todo el mundo, ya veremos lo práctica que será, y que vuelve a retrasar la entrada en vigor y ajusta ahora la exigencia en función del importe de las facturas emitidas y el tamaño de las empresas.

Vuelven a demostrar que legislan a cadena suelta, sin pensárselo bien y siempre sin consultar a nadie ni admitir rectificaciones o consejos.

Así nos va...
Hola,

Según este artículo está hablando de la factura electrónica, como aún no hay reglamento no me preocuparé. Cuando lo haya ya no serán artículos periodísticos (que a veces hablan de oídas) y entonces veremos los requisitos con certeza, y sobre todo los plazos que todo parece indicar que hasta 2027 tenemos tiempo.

De todas maneras primero está Verifactu, y eso facilitará (al menos un poco) el paso/uso de la factura electrónica, pues quién ya esté aplicando Verifactu On line, el paso a la factura electrónica le pillará (al menos a mi) con más experiencia en ciertos procesos.

>>...de las facturas inmediatas
No sé que son las facturas inmediatas, pero quizás con lo que intuyo que quieres decir, con Verifactu On line ya se debe aplicar.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Repositorios de FiveLinux :: Author Antonio Linares]]> 2025-03-22T02:06:42-06:00 2025-03-22T02:06:42-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45558&p=278515#p278515 https://github.com/FiveTechSoft/FiveLinux2

FiveLinux basado en GTK 3.0
https://github.com/FiveTechSoft/FiveLinux3]]>
https://github.com/FiveTechSoft/FiveLinux2

FiveLinux basado en GTK 3.0
https://github.com/FiveTechSoft/FiveLinux3]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Repositorios de FiveLinux :: Reply by karinha]]> 2025-03-22T10:43:27-06:00 2025-03-22T10:43:27-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45558&p=278518#p278518
Gracias, tks.

Regards, saludos.]]>

Gracias, tks.

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Repositorios de FiveLinux :: Reply by Antonio Linares]]> 2025-03-22T14:01:46-06:00 2025-03-22T14:01:46-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45558&p=278523#p278523
Desde hace años mantenemos el código de FiveLinux en esos repositorios en GitHub :)]]>

Desde hace años mantenemos el código de FiveLinux en esos repositorios en GitHub :)]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Repositorios de FiveLinux :: Reply by wilsongamboa]]> 2025-03-22T21:26:00-06:00 2025-03-22T21:26:00-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45558&p=278527#p278527 funciona en linux ?
saludos]]>
funciona en linux ?
saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Repositorios de FiveLinux :: Reply by Antonio Linares]]> 2025-03-22T23:35:31-06:00 2025-03-22T23:35:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45558&p=278528#p278528 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Repositorios de FiveLinux :: Reply by wilsongamboa]]> 2025-03-23T06:43:22-06:00 2025-03-23T06:43:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45558&p=278530#p278530 un abrazo
Wilson]]>
un abrazo
Wilson]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Mover Botón de la barra de xbrowser :: Author jose_murugosa]]> 2025-03-18T07:51:16-06:00 2025-03-18T07:51:16-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45541&p=278427#p278427 Una consulta sobre mover un botón en xbrowser.

Estoy usando xbrowser en algunos casos solo con las opciones de desplazamiento y generar excel.
Aquí un ejemplo de como lo hago:

Code: Select all | Expand

FUNCTION Main()
     LOCAL i
     
     REQUEST DBFCDX
     RddSetDefault( "DBFCDX" )
     set DATE FRENCH
     SET CENTURY ON
     SET EPOCH TO Year( Date() ) - 40

     USE C:\fwh\samples\customer NEW SHARED
     
     XBROWSER "CUSTOMER" TITLE "Prueba" SETUP ;
               ( oBrw:bInit :=  { |o|   ;
                    o:oWnd:oBar:aControls[ 8 ]:lGroup := .F., ;
                    o:oWnd:oBar:aControls[ 5 ]:Hide(), ;
                    o:oWnd:oBar:aControls[ 6 ]:Hide(), ;
                    o:oWnd:oBar:aControls[ 7 ]:Hide(), ;
                    o:oWnd:oBar:aControls[ 8 ]:Hide() } ;
                 )
RETURN nil
La pregunta es:
¿Cómo se puede hacer para que el botón de excel no aparezca distanciado de los demás que no se ocultaron?]]>
Una consulta sobre mover un botón en xbrowser.

Estoy usando xbrowser en algunos casos solo con las opciones de desplazamiento y generar excel.
Aquí un ejemplo de como lo hago:

Code: Select all | Expand

FUNCTION Main()
     LOCAL i
     
     REQUEST DBFCDX
     RddSetDefault( "DBFCDX" )
     set DATE FRENCH
     SET CENTURY ON
     SET EPOCH TO Year( Date() ) - 40

     USE C:\fwh\samples\customer NEW SHARED
     
     XBROWSER "CUSTOMER" TITLE "Prueba" SETUP ;
               ( oBrw:bInit :=  { |o|   ;
                    o:oWnd:oBar:aControls[ 8 ]:lGroup := .F., ;
                    o:oWnd:oBar:aControls[ 5 ]:Hide(), ;
                    o:oWnd:oBar:aControls[ 6 ]:Hide(), ;
                    o:oWnd:oBar:aControls[ 7 ]:Hide(), ;
                    o:oWnd:oBar:aControls[ 8 ]:Hide() } ;
                 )
RETURN nil
La pregunta es:
¿Cómo se puede hacer para que el botón de excel no aparezca distanciado de los demás que no se ocultaron?]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Mover Botón de la barra de xbrowser :: Reply by cnavarro]]> 2025-03-18T15:41:40-06:00 2025-03-18T15:41:40-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45541&p=278440#p278440 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Mover Botón de la barra de xbrowser :: Reply by jose_murugosa]]> 2025-03-21T07:03:30-06:00 2025-03-21T07:03:30-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45541&p=278494#p278494 Si ya lo había probado pero no obtuve ningun resultado.]]> Si ya lo había probado pero no obtuve ningun resultado.]]> <![CDATA[FiveWin para Harbour/xHarbour :: Re: Mover Botón de la barra de xbrowser :: Reply by karinha]]> 2025-03-21T08:07:21-06:00 2025-03-21T08:07:21-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45541&p=278495#p278495

Code: Select all | Expand

// C:\FWH\SAMPLES\MURUGOS.PRG

#include "FiveWin.ch"

REQUEST DBFCDX

FUNCTION Main()

   LOCAL i

   rddSetDefault( "DBFCDX" )

   SET DATE FRENCH
   SET CENTURY ON
   SET EPOCH TO Year( Date() ) - 40

   USE ..\SAMPLES\CUSTOMER NEW SHARED
   GO TOP

   XBROWSER "CUSTOMER" TITLE "Prueba" SETUP               ;
      ( oBrw:bInit :=  {| o |                             ;
        o:oWnd:oBar:aControls[ 8 ]:lGroup := .F.,         ;
        o:oWnd:oBar:aControls[ 5 ]:Hide(),                ;
        o:oWnd:oBar:aControls[ 6 ]:Hide(),                ;
        o:oWnd:oBar:aControls[ 7 ]:Hide(),                ;
        o:oWnd:oBar:aControls[ 8 ]:Hide(),                ;
        o:oWnd:oBar:Del( Len( o:oWnd:oBar:aControls ) ) } ; // aqui
      )


RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>

Code: Select all | Expand

// C:\FWH\SAMPLES\MURUGOS.PRG

#include "FiveWin.ch"

REQUEST DBFCDX

FUNCTION Main()

   LOCAL i

   rddSetDefault( "DBFCDX" )

   SET DATE FRENCH
   SET CENTURY ON
   SET EPOCH TO Year( Date() ) - 40

   USE ..\SAMPLES\CUSTOMER NEW SHARED
   GO TOP

   XBROWSER "CUSTOMER" TITLE "Prueba" SETUP               ;
      ( oBrw:bInit :=  {| o |                             ;
        o:oWnd:oBar:aControls[ 8 ]:lGroup := .F.,         ;
        o:oWnd:oBar:aControls[ 5 ]:Hide(),                ;
        o:oWnd:oBar:aControls[ 6 ]:Hide(),                ;
        o:oWnd:oBar:aControls[ 7 ]:Hide(),                ;
        o:oWnd:oBar:aControls[ 8 ]:Hide(),                ;
        o:oWnd:oBar:Del( Len( o:oWnd:oBar:aControls ) ) } ; // aqui
      )


RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Mover Botón de la barra de xbrowser :: Reply by karinha]]> 2025-03-21T10:28:43-06:00 2025-03-21T10:28:43-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45541&p=278499#p278499
O esto?

Code: Select all | Expand

// C:\FWH\SAMPLES\MURUGOS.PRG - Version 2.

#include "FiveWin.ch"

REQUEST DBFCDX

FUNCTION Main()

   LOCAL i

   rddSetDefault( "DBFCDX" )

   SET DATE FRENCH
   SET CENTURY ON
   SET EPOCH TO Year( Date() ) - 40

   USE ..\SAMPLES\CUSTOMER NEW SHARED
   GO TOP

   /*
   XBROWSER "CUSTOMER" TITLE "Prueba" SETUP              ;
      ( oBrw:bInit :=  {| o |                            ;
        o:oWnd:oBar:aControls[ 8 ]:lGroup := .F.,        ;
        o:oWnd:oBar:aControls[ 5 ]:Hide(),               ;
        o:oWnd:oBar:aControls[ 6 ]:Hide(),               ;
        o:oWnd:oBar:aControls[ 7 ]:Hide(),               ;
        o:oWnd:oBar:aControls[ 8 ]:Hide(),               ;
        o:oWnd:oBar:Del( Len( o:oWnd:oBar:aControls )) } ;
      )
   */

   // Otro modelo
   XBROWSER "CUSTOMER" TITLE "Prueba" SETUP                              ;
      ( oBrw:bInit :=  {| o |                                            ;
        o:oWnd:oBar:aControls[ 8 ]:lGroup := .F.,                        ;
        o:oWnd:oBar:aControls[ 5 ]:Hide(),                               ;
        o:oWnd:oBar:aControls[ 6 ]:Hide(),                               ;
        o:oWnd:oBar:aControls[ 7 ]:Hide(),                               ;
        o:oWnd:oBar:aControls[ 8 ]:Hide(),                               ;
        o:oWnd:oBar:aControls[ 9 ]:Move( 0, o:oWnd:oBar:nWidth() -35 ) } ; // aqui
      )

RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>

O esto?

Code: Select all | Expand

// C:\FWH\SAMPLES\MURUGOS.PRG - Version 2.

#include "FiveWin.ch"

REQUEST DBFCDX

FUNCTION Main()

   LOCAL i

   rddSetDefault( "DBFCDX" )

   SET DATE FRENCH
   SET CENTURY ON
   SET EPOCH TO Year( Date() ) - 40

   USE ..\SAMPLES\CUSTOMER NEW SHARED
   GO TOP

   /*
   XBROWSER "CUSTOMER" TITLE "Prueba" SETUP              ;
      ( oBrw:bInit :=  {| o |                            ;
        o:oWnd:oBar:aControls[ 8 ]:lGroup := .F.,        ;
        o:oWnd:oBar:aControls[ 5 ]:Hide(),               ;
        o:oWnd:oBar:aControls[ 6 ]:Hide(),               ;
        o:oWnd:oBar:aControls[ 7 ]:Hide(),               ;
        o:oWnd:oBar:aControls[ 8 ]:Hide(),               ;
        o:oWnd:oBar:Del( Len( o:oWnd:oBar:aControls )) } ;
      )
   */

   // Otro modelo
   XBROWSER "CUSTOMER" TITLE "Prueba" SETUP                              ;
      ( oBrw:bInit :=  {| o |                                            ;
        o:oWnd:oBar:aControls[ 8 ]:lGroup := .F.,                        ;
        o:oWnd:oBar:aControls[ 5 ]:Hide(),                               ;
        o:oWnd:oBar:aControls[ 6 ]:Hide(),                               ;
        o:oWnd:oBar:aControls[ 7 ]:Hide(),                               ;
        o:oWnd:oBar:aControls[ 8 ]:Hide(),                               ;
        o:oWnd:oBar:aControls[ 9 ]:Move( 0, o:oWnd:oBar:nWidth() -35 ) } ; // aqui
      )

RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Mover Botón de la barra de xbrowser :: Reply by cnavarro]]> 2025-03-21T20:53:18-06:00 2025-03-21T20:53:18-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45541&p=278512#p278512

Code: Select all | Expand

#include "fivewin.ch"

FUNCTION Main()
     LOCAL i
     
     REQUEST DBFCDX
     RddSetDefault( "DBFCDX" )
     set DATE FRENCH
     SET CENTURY ON
     SET EPOCH TO Year( Date() ) - 40

     USE d:\fwh\fwhteam\samples\customer NEW SHARED
     
     XBROWSER "customer" TITLE "Prueba" SETUP ;
               ( oBrw:oWnd:bInit :=  { | o | ;
                    o:oBar:l2013 := .T., ;
                    o:oBar:l2010 := .F., ;
                    o:oBar:l2015 := .F., ;
                    o:oBar:aControls[ 5 ]:cTooltip  := o:oBar:aControls[ 9 ]:cToolTip, ;
                    o:oBar:aControls[ 5 ]:bAction   := o:oBar:aControls[ 9 ]:bAction, ;
                    o:oBar:aControls[ 5 ]:LoadBitmaps( FWBitmap( "Excel" ) ), ;
                    AEval( o:oBar:aControls, { | oBtt | oBtt:End() }, 6, 9 ), ; 
                    ASize( o:oBar:aControls, 5 ), ; 
                    AEval( o:oBar:aControls, { | oBtt | oBtt:Refresh() } ), ;
                    o:oBar:SetGradients(), ;
                    o:oBar:Refresh() ;
                  } )
RETURN nil

]]>

Code: Select all | Expand

#include "fivewin.ch"

FUNCTION Main()
     LOCAL i
     
     REQUEST DBFCDX
     RddSetDefault( "DBFCDX" )
     set DATE FRENCH
     SET CENTURY ON
     SET EPOCH TO Year( Date() ) - 40

     USE d:\fwh\fwhteam\samples\customer NEW SHARED
     
     XBROWSER "customer" TITLE "Prueba" SETUP ;
               ( oBrw:oWnd:bInit :=  { | o | ;
                    o:oBar:l2013 := .T., ;
                    o:oBar:l2010 := .F., ;
                    o:oBar:l2015 := .F., ;
                    o:oBar:aControls[ 5 ]:cTooltip  := o:oBar:aControls[ 9 ]:cToolTip, ;
                    o:oBar:aControls[ 5 ]:bAction   := o:oBar:aControls[ 9 ]:bAction, ;
                    o:oBar:aControls[ 5 ]:LoadBitmaps( FWBitmap( "Excel" ) ), ;
                    AEval( o:oBar:aControls, { | oBtt | oBtt:End() }, 6, 9 ), ; 
                    ASize( o:oBar:aControls, 5 ), ; 
                    AEval( o:oBar:aControls, { | oBtt | oBtt:Refresh() } ), ;
                    o:oBar:SetGradients(), ;
                    o:oBar:Refresh() ;
                  } )
RETURN nil

]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Mover Botón de la barra de xbrowser :: Reply by karinha]]> 2025-03-22T10:38:53-06:00 2025-03-22T10:38:53-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45541&p=278517#p278517

Code: Select all | Expand

// C:\FWH\SAMPLES\MURUGOS2.PRG

#Include "FiveWin.ch"

FUNCTION Main()

   LOCAL i

   REQUEST DBFCDX
   rddSetDefault( "DBFCDX" )

   SET DATE FRENCH
   SET CENTURY ON
   SET EPOCH TO Year( Date() ) - 40

   USE ..\SAMPLES\CUSTOMER NEW SHARED

   XBROWSER "CUSTOMER" TITLE "Prueba" SETUP                               ;
      ( oBrw:oWnd:bInit :=  {| o |                                        ;
        o:oBar:l2007 := .T.,                                              ;
        o:oBar:l2013 := .F.,                                              ;
        o:oBar:l2010 := .F.,                                              ;
        o:oBar:l2015 := .F.,                                              ;
        o:oBar:aControls[ 6 ]:Hide(),                                     ;
        o:oBar:aControls[ 7 ]:Hide(),                                     ;
        o:oBar:aControls[ 8 ]:Hide(),                                     ;
        o:oBar:aControls[ 9 ]:Hide(),                                     ;
        o:oBar:aControls[ 5 ]:cTooltip := o:oBar:aControls[ 9 ]:cToolTip, ;
        o:oBar:aControls[ 5 ]:bAction  := o:oBar:aControls[ 9 ]:bAction,  ;
        o:oBar:aControls[ 5 ]:LoadBitmaps( FWBitmap( "Excel" ) ),         ;
        AEval( o:oBar:aControls, {| oBtt | oBtt:End() }, 6, 9 ),          ;
        ASize( o:oBar:aControls, 5 ),                                     ;
        AEval( o:oBar:aControls, {| oBtt | oBtt:Refresh() } ),            ;
        o:oBar:SetGradients(),                                            ;
        o:oBar:Refresh()                                                  ;
      } )

RETURN NIL

// FIN / END
Regards, saludos.]]>

Code: Select all | Expand

// C:\FWH\SAMPLES\MURUGOS2.PRG

#Include "FiveWin.ch"

FUNCTION Main()

   LOCAL i

   REQUEST DBFCDX
   rddSetDefault( "DBFCDX" )

   SET DATE FRENCH
   SET CENTURY ON
   SET EPOCH TO Year( Date() ) - 40

   USE ..\SAMPLES\CUSTOMER NEW SHARED

   XBROWSER "CUSTOMER" TITLE "Prueba" SETUP                               ;
      ( oBrw:oWnd:bInit :=  {| o |                                        ;
        o:oBar:l2007 := .T.,                                              ;
        o:oBar:l2013 := .F.,                                              ;
        o:oBar:l2010 := .F.,                                              ;
        o:oBar:l2015 := .F.,                                              ;
        o:oBar:aControls[ 6 ]:Hide(),                                     ;
        o:oBar:aControls[ 7 ]:Hide(),                                     ;
        o:oBar:aControls[ 8 ]:Hide(),                                     ;
        o:oBar:aControls[ 9 ]:Hide(),                                     ;
        o:oBar:aControls[ 5 ]:cTooltip := o:oBar:aControls[ 9 ]:cToolTip, ;
        o:oBar:aControls[ 5 ]:bAction  := o:oBar:aControls[ 9 ]:bAction,  ;
        o:oBar:aControls[ 5 ]:LoadBitmaps( FWBitmap( "Excel" ) ),         ;
        AEval( o:oBar:aControls, {| oBtt | oBtt:End() }, 6, 9 ),          ;
        ASize( o:oBar:aControls, 5 ),                                     ;
        AEval( o:oBar:aControls, {| oBtt | oBtt:Refresh() } ),            ;
        o:oBar:SetGradients(),                                            ;
        o:oBar:Refresh()                                                  ;
      } )

RETURN NIL

// FIN / END
Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Mover Botón de la barra de xbrowser :: Reply by cnavarro]]> 2025-03-22T10:43:42-06:00 2025-03-22T10:43:42-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45541&p=278519#p278519 <![CDATA[FiveWin para Harbour/xHarbour :: Re: Mover Botón de la barra de xbrowser :: Reply by cnavarro]]> 2025-03-22T14:53:04-06:00 2025-03-22T14:53:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45541&p=278524#p278524

Code: Select all | Expand

#include "fivewin.ch"

FUNCTION Main()
     LOCAL i
     
     REQUEST DBFCDX
     RddSetDefault( "DBFCDX" )
     set DATE FRENCH
     SET CENTURY ON
     SET EPOCH TO Year( Date() ) - 40

     USE c:\fwh\amples\customer NEW SHARED
     
     XBROWSER "customer" TITLE "Prueba" SETUP ;
               ( oBrw:oWnd:bInit :=  { | o | ;
                    o:oBar:l2013 := .T., ;
                    o:oBar:l2010 := .F., ;
                    o:oBar:l2015 := .F., ;
                    o:oBar:aControls[ 5 ]:cTooltip  := o:oBar:aControls[ 9 ]:cToolTip, ;
                    o:oBar:aControls[ 5 ]:bAction   := o:oBar:aControls[ 9 ]:bAction, ;
                    o:oBar:aControls[ 5 ]:LoadBitmaps( FWBitmap( "Excel" ) ), ;
                    o:oBar:aControls[ 6 ]:cTooltip  := "Exit", ;
                    o:oBar:aControls[ 6 ]:bAction   := { | oBtt | oBtt:oWnd:oWnd:End() }, ;
                    o:oBar:aControls[ 6 ]:LoadBitmaps( FWBitmap( "exit2" ) ), ;  // close16
                    o:oBar:aControls[ 6 ]:lRight    := .T., ;
                    AEval( o:oBar:aControls, { | oBtt | oBtt:End() }, 7, 9 ), ; 
                    ASize( o:oBar:aControls, 6 ), ; 
                    AEval( o:oBar:aControls, { | oBtt | oBtt:Refresh() } ), ;
                    o:oBar:SetGradients(), ;
                    o:oBar:Refresh() ;
                  } )
RETURN nil

]]>

Code: Select all | Expand

#include "fivewin.ch"

FUNCTION Main()
     LOCAL i
     
     REQUEST DBFCDX
     RddSetDefault( "DBFCDX" )
     set DATE FRENCH
     SET CENTURY ON
     SET EPOCH TO Year( Date() ) - 40

     USE c:\fwh\amples\customer NEW SHARED
     
     XBROWSER "customer" TITLE "Prueba" SETUP ;
               ( oBrw:oWnd:bInit :=  { | o | ;
                    o:oBar:l2013 := .T., ;
                    o:oBar:l2010 := .F., ;
                    o:oBar:l2015 := .F., ;
                    o:oBar:aControls[ 5 ]:cTooltip  := o:oBar:aControls[ 9 ]:cToolTip, ;
                    o:oBar:aControls[ 5 ]:bAction   := o:oBar:aControls[ 9 ]:bAction, ;
                    o:oBar:aControls[ 5 ]:LoadBitmaps( FWBitmap( "Excel" ) ), ;
                    o:oBar:aControls[ 6 ]:cTooltip  := "Exit", ;
                    o:oBar:aControls[ 6 ]:bAction   := { | oBtt | oBtt:oWnd:oWnd:End() }, ;
                    o:oBar:aControls[ 6 ]:LoadBitmaps( FWBitmap( "exit2" ) ), ;  // close16
                    o:oBar:aControls[ 6 ]:lRight    := .T., ;
                    AEval( o:oBar:aControls, { | oBtt | oBtt:End() }, 7, 9 ), ; 
                    ASize( o:oBar:aControls, 6 ), ; 
                    AEval( o:oBar:aControls, { | oBtt | oBtt:Refresh() } ), ;
                    o:oBar:SetGradients(), ;
                    o:oBar:Refresh() ;
                  } )
RETURN nil

]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Mover Botón de la barra de xbrowser :: Reply by karinha]]> 2025-03-23T09:19:15-06:00 2025-03-23T09:19:15-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45541&p=278533#p278533
Regards, saludos.]]>

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Mover Botón de la barra de xbrowser :: Reply by jose_murugosa]]> 2025-03-24T05:34:31-06:00 2025-03-24T05:34:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45541&p=278539#p278539 Muuchas gracias.
Recien puedo ver y probar el código.
Que buenas soluciones las dos Cristóbal, me decanté por la del botón de salir.
Una belleza.

Gracias por la buena disposición que muestran siempre para ayudar.
Un fuerte abrazo]]>
Muuchas gracias.
Recien puedo ver y probar el código.
Que buenas soluciones las dos Cristóbal, me decanté por la del botón de salir.
Una belleza.

Gracias por la buena disposición que muestran siempre para ayudar.
Un fuerte abrazo]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: fivedit en equipo nuevo - SOLUCIONADO :: Reply by nanoespinoza]]> 2025-03-24T20:47:09-06:00 2025-03-24T20:47:09-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42781&p=278549#p278549
cnavarro wrote: Wed Feb 15, 2023 5:40 pm
ruben Dario wrote:Saludos al forum,
Lo descargue el me genera un error que no esta el archivo .fvl . este archivo lo crea el sistema o falta, xq no lo crea
La instalación es sencilla:
1.- https://bitbucket.org/fivetech/fivewin- ... ivedit.zip
2.- Descomprime en esa carpeta ( por si se han actualizado las DLLs )
https://bitbucket.org/fivetech/fivewin- ... E_DLLS.zip
3.- Descargar la ultima actualización del ejecutable
https://bitbucket.org/fivetech/fivewin- ... ivedit.exe

y copiarlo en la carpeta donde tuvieras ya instalado fivedit
Estimado Cristóbal.

Estoy con un problema para instalar Fivedit en una nueva portátil Dell, me sale un error luego de copiar los archivos previos ("La ejecución de código no puede continuar porque no se encontró MSVCR100.dll. Este problema se puede solucionar reinstalando el programa").

Intento descargar los archivos de instalación, desde los enlaces previos y aparecen ya deshabilitados, por favor, indicarme de donde los puedo descargar.

A su vez, también tengo un problema con Pelles C V12 en la nueva portátil; descargue el programa desde la web de Pelle Orinius, pero al momento de grabar, sale un error de que el archivo no existe y al revisar el archivo que estaba editado, resultado que se ha borrado, lo intenté varias veces reiniciando la máquina, pero se repite el mismo borrado del archivo .RES en edición; no sé si será algún virus o que, pero no le hallo solución.

Saludos cordiales

Fernando Espinoza A.]]>
cnavarro wrote: Wed Feb 15, 2023 5:40 pm
ruben Dario wrote:Saludos al forum,
Lo descargue el me genera un error que no esta el archivo .fvl . este archivo lo crea el sistema o falta, xq no lo crea
La instalación es sencilla:
1.- https://bitbucket.org/fivetech/fivewin- ... ivedit.zip
2.- Descomprime en esa carpeta ( por si se han actualizado las DLLs )
https://bitbucket.org/fivetech/fivewin- ... E_DLLS.zip
3.- Descargar la ultima actualización del ejecutable
https://bitbucket.org/fivetech/fivewin- ... ivedit.exe

y copiarlo en la carpeta donde tuvieras ya instalado fivedit
Estimado Cristóbal.

Estoy con un problema para instalar Fivedit en una nueva portátil Dell, me sale un error luego de copiar los archivos previos ("La ejecución de código no puede continuar porque no se encontró MSVCR100.dll. Este problema se puede solucionar reinstalando el programa").

Intento descargar los archivos de instalación, desde los enlaces previos y aparecen ya deshabilitados, por favor, indicarme de donde los puedo descargar.

A su vez, también tengo un problema con Pelles C V12 en la nueva portátil; descargue el programa desde la web de Pelle Orinius, pero al momento de grabar, sale un error de que el archivo no existe y al revisar el archivo que estaba editado, resultado que se ha borrado, lo intenté varias veces reiniciando la máquina, pero se repite el mismo borrado del archivo .RES en edición; no sé si será algún virus o que, pero no le hallo solución.

Saludos cordiales

Fernando Espinoza A.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: fivedit en equipo nuevo - SOLUCIONADO :: Reply by Antonio Linares]]> 2025-03-24T22:00:03-06:00 2025-03-24T22:00:03-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42781&p=278550#p278550
> no se encontró MSVCR100.dll

https://www.microsoft.com/en-us/downloa ... x?id=26999]]>

> no se encontró MSVCR100.dll

https://www.microsoft.com/en-us/downloa ... x?id=26999]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: fivedit en equipo nuevo - SOLUCIONADO :: Reply by nanoespinoza]]> 2025-03-24T22:32:49-06:00 2025-03-24T22:32:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42781&p=278551#p278551
Perfecto, resuelto el problema con Fivedit al instalar el archivo sugerido; ahora, podrían darme una mano con el tema del Pelles C y ese raro comportamiento.

Saludos

Fernando Espinoza A.]]>

Perfecto, resuelto el problema con Fivedit al instalar el archivo sugerido; ahora, podrían darme una mano con el tema del Pelles C y ese raro comportamiento.

Saludos

Fernando Espinoza A.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: fivedit en equipo nuevo - SOLUCIONADO :: Reply by Antonio Linares]]> 2025-03-25T00:56:09-06:00 2025-03-25T00:56:09-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42781&p=278552#p278552
Posiblemente se trate de un falso positivo.

Desactiva el antivirus y mira si con eso se corrige el problema. Tan pronto como el fichero de recursos se vaya modificando lo más probable es que desaparezca el error y puedas reactivar el antivirus.]]>

Posiblemente se trate de un falso positivo.

Desactiva el antivirus y mira si con eso se corrige el problema. Tan pronto como el fichero de recursos se vaya modificando lo más probable es que desaparezca el error y puedas reactivar el antivirus.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: fivedit en equipo nuevo :: Reply by Vikthor]]> 2025-03-26T13:46:04-06:00 2025-03-26T13:46:04-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42781&p=278590#p278590 Los enlaces a bitbucket.org están rotos.

cnavarro wrote: Sun Feb 12, 2023 3:37 am Hola Leandro
Actualiza a la última versión de FivEdit
https://bitbucket.org/fivetech/fivewin- ... ivedit.exe ( 31/01/2023 )
Prueba a descomprimir este fichero en la carpeta de instalación de FivEdit y me dices si se solucionó el problema
https://bitbucket.org/fivetech/fivewin- ... E_DLLS.zip
]]>
Los enlaces a bitbucket.org están rotos.

cnavarro wrote: Sun Feb 12, 2023 3:37 am Hola Leandro
Actualiza a la última versión de FivEdit
https://bitbucket.org/fivetech/fivewin- ... ivedit.exe ( 31/01/2023 )
Prueba a descomprimir este fichero en la carpeta de instalación de FivEdit y me dices si se solucionó el problema
https://bitbucket.org/fivetech/fivewin- ... E_DLLS.zip
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: fivedit en equipo nuevo - SOLUCIONADO :: Reply by cnavarro]]> 2025-03-26T14:46:29-06:00 2025-03-26T14:46:29-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42781&p=278591#p278591 <![CDATA[FiveWin para Harbour/xHarbour :: envio de mails usando oauth cuentas office365 :: Author wilsongamboa]]> 2025-03-27T08:12:52-06:00 2025-03-27T08:12:52-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45573&p=278630#p278630 existe esa posibilidad de envio de mails usando esas cuentas tengo las siguientes credenciales que me dio la gente de sistemas

usando Harbour consola si es posible

Nombre Aplicación Registrada en Azure: JoseNet Mail

Client ID: xxxxxxxx-5992-44af-b0a7-xxxxxxxxxx
Tenant ID: xxxxxxxxxx-a223-497c-b0b4-xxxxxxxxxxxx
Secret ID: xxxxxxxx-1016-46a7-935c-xxxxxxxxxxxx
Valor Secret ID: YOF8Q~xxxxxxxxxxxxxxxxx-xxxxxxxxxxx3 (Opcional)

supongo con las nuevas clases del ultimo fw ?

gracias por su ayuda
Wilson]]>
existe esa posibilidad de envio de mails usando esas cuentas tengo las siguientes credenciales que me dio la gente de sistemas

usando Harbour consola si es posible

Nombre Aplicación Registrada en Azure: JoseNet Mail

Client ID: xxxxxxxx-5992-44af-b0a7-xxxxxxxxxx
Tenant ID: xxxxxxxxxx-a223-497c-b0b4-xxxxxxxxxxxx
Secret ID: xxxxxxxx-1016-46a7-935c-xxxxxxxxxxxx
Valor Secret ID: YOF8Q~xxxxxxxxxxxxxxxxx-xxxxxxxxxxx3 (Opcional)

supongo con las nuevas clases del ultimo fw ?

gracias por su ayuda
Wilson]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: envio de mails usando oauth cuentas office365 :: Reply by karinha]]> 2025-03-27T08:16:52-06:00 2025-03-27T08:16:52-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45573&p=278631#p278631
Mira se ayuda:

viewtopic.php?t=45399

Gracias, tks.

Regards, saludos.]]>

Mira se ayuda:

viewtopic.php?t=45399

Gracias, tks.

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: envio de mails usando oauth cuentas office365 :: Reply by wilsongamboa]]> 2025-03-27T08:53:42-06:00 2025-03-27T08:53:42-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45573&p=278633#p278633 el proveedor es
microsoft azzure
pido ayuda ya habia leido lo de gmail obviamente por mis limitaciones no tengo idea de como implementar para office365
saludos
Wilson]]>
el proveedor es
microsoft azzure
pido ayuda ya habia leido lo de gmail obviamente por mis limitaciones no tengo idea de como implementar para office365
saludos
Wilson]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: envio de mails usando oauth cuentas office365 :: Reply by karinha]]> 2025-03-27T09:15:13-06:00 2025-03-27T09:15:13-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45573&p=278635#p278635
https://learn.microsoft.com/pt-br/azure ... m-azportal

Regards, saludos.]]>

https://learn.microsoft.com/pt-br/azure ... m-azportal

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: ¿COMPROBAR SI OUTLOOK.EXE ESTÁ ABIERTO EN EL ADAPTADOR DE WINDOWS? :: Author karinha]]> 2025-03-26T13:32:22-06:00 2025-03-26T13:32:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45568&p=278589#p278589
Porque solo quiero usar el comando:

Code: Select all | Expand

// PARA DESLIGAR O OUTLOOK, SE ESTIVER ABERTO AINDA. Joao
   WaitRun( "CMD /C TASKKILL.EXE /IM OutLook.exe /F", 0 )
Si OutLook.exe está en uso/abierto.

Gracias, tks.

Regards, saludos.]]>

Porque solo quiero usar el comando:

Code: Select all | Expand

// PARA DESLIGAR O OUTLOOK, SE ESTIVER ABERTO AINDA. Joao
   WaitRun( "CMD /C TASKKILL.EXE /IM OutLook.exe /F", 0 )
Si OutLook.exe está en uso/abierto.

Gracias, tks.

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: ¿COMPROBAR SI OUTLOOK.EXE ESTÁ ABIERTO EN EL ADAPTADOR DE WINDOWS? :: Reply by sysctrl2]]> 2025-03-26T15:15:20-06:00 2025-03-26T15:15:20-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45568&p=278595#p278595
1 := Usando Windows API con Harbour:

Code: Select all | Expand

// Método para verificar si Outlook está abierto
FUNCTION IsOutlookRunning()
    LOCAL hWnd
    
    // Buscar la ventana de Outlook
    hWnd := FindWindow("OlMainFrame", NIL)
    
    RETURN hWnd != 0
2 := Usando función de proceso del sistema:

Code: Select all | Expand

FUNCTION CheckOutlookProcess()
    LOCAL aProcessList, lOutlookRunning := .F.
    LOCAL i

    // Obtener lista de procesos
    aProcessList := GetProcessList()
    
    // Recorrer procesos buscando Outlook
    FOR i := 1 TO LEN(aProcessList)
        IF UPPER(aProcessList[i]) == "OUTLOOK.EXE"
            lOutlookRunning := .T.
            EXIT
        ENDIF
    NEXT

    RETURN lOutlookRunning
3 := Usando Windows API directamente:

Code: Select all | Expand

FUNCTION CheckOutlookProcess()
    LOCAL aProcessList, lOutlookRunning := .F.
    LOCAL i

    // Obtener lista de procesos
    aProcessList := GetProcessList()
    
    // Recorrer procesos buscando Outlook
    FOR i := 1 TO LEN(aProcessList)
        IF UPPER(aProcessList[i]) == "OUTLOOK.EXE"
            lOutlookRunning := .T.
            EXIT
        ENDIF
    NEXT

    RETURN lOutlookRunning
]]>

1 := Usando Windows API con Harbour:

Code: Select all | Expand

// Método para verificar si Outlook está abierto
FUNCTION IsOutlookRunning()
    LOCAL hWnd
    
    // Buscar la ventana de Outlook
    hWnd := FindWindow("OlMainFrame", NIL)
    
    RETURN hWnd != 0
2 := Usando función de proceso del sistema:

Code: Select all | Expand

FUNCTION CheckOutlookProcess()
    LOCAL aProcessList, lOutlookRunning := .F.
    LOCAL i

    // Obtener lista de procesos
    aProcessList := GetProcessList()
    
    // Recorrer procesos buscando Outlook
    FOR i := 1 TO LEN(aProcessList)
        IF UPPER(aProcessList[i]) == "OUTLOOK.EXE"
            lOutlookRunning := .T.
            EXIT
        ENDIF
    NEXT

    RETURN lOutlookRunning
3 := Usando Windows API directamente:

Code: Select all | Expand

FUNCTION CheckOutlookProcess()
    LOCAL aProcessList, lOutlookRunning := .F.
    LOCAL i

    // Obtener lista de procesos
    aProcessList := GetProcessList()
    
    // Recorrer procesos buscando Outlook
    FOR i := 1 TO LEN(aProcessList)
        IF UPPER(aProcessList[i]) == "OUTLOOK.EXE"
            lOutlookRunning := .T.
            EXIT
        ENDIF
    NEXT

    RETURN lOutlookRunning
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: ¿COMPROBAR SI OUTLOOK.EXE ESTÁ ABIERTO EN EL ADAPTADOR DE WINDOWS? :: Reply by karinha]]> 2025-03-27T05:11:20-06:00 2025-03-27T05:11:20-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45568&p=278618#p278618

Code: Select all | Expand

// Método para verificar si Outlook está abierto
FUNCTION IsOutlookRunning()
    LOCAL hWnd
    
    // Buscar la ventana de Outlook
    hWnd := FindWindow("OlMainFrame", NIL)
    
    RETURN hWnd != 0
NO FUNCIONA.

Regards, saludos.]]>

Code: Select all | Expand

// Método para verificar si Outlook está abierto
FUNCTION IsOutlookRunning()
    LOCAL hWnd
    
    // Buscar la ventana de Outlook
    hWnd := FindWindow("OlMainFrame", NIL)
    
    RETURN hWnd != 0
NO FUNCIONA.

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: ¿COMPROBAR SI OUTLOOK.EXE ESTÁ ABIERTO EN EL ADAPTADOR DE WINDOWS? :: Reply by karinha]]> 2025-03-27T05:16:39-06:00 2025-03-27T05:16:39-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45568&p=278619#p278619

Code: Select all | Expand

Error: Unresolved external '_HB_FUN_GETPROCESSLIST' referenced from C:\ACBRREAL\
ACBRREAL.OBJ
Regards, saludos.]]>

Code: Select all | Expand

Error: Unresolved external '_HB_FUN_GETPROCESSLIST' referenced from C:\ACBRREAL\
ACBRREAL.OBJ
Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: ¿COMPROBAR SI OUTLOOK.EXE ESTÁ ABIERTO EN EL ADAPTADOR DE WINDOWS? :: Reply by karinha]]> 2025-03-27T06:35:01-06:00 2025-03-27T06:35:01-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45568&p=278624#p278624
https://fivewin.com.br/index.php?/topic ... o-windows/

Code: Select all | Expand

/*
* Verificar se um Exe esta sendo executado e podendo at‚ derruba-lo
* Parametros: _cExe, _nKill
* Retorno: Retorno - .t. se estiver rodando
*
* Autor: toya
*/

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL _cExe := "OutLook.exe", _nKill := 2, lOk

   lOk := EstaRodandoKillExe( _cExe, _nKill )

   ? lOk

RETURN NIL
// Is the executable running?
FUNCTION EstaRodandoKillExe( _cExe, _nKill )

   LOCAL Retorno := .F.
   LOCAL oScriptObj
   LOCAL oWmiService
   LOCAL oListaProcess
   LOCAL oProcessos

   hb_default( @_nKill, 0 )

   oScriptObj    := CREATEOBJECT( "wbemScripting.SwbemLocator" )
   oWmiService   := oScriptObj:ConnectServer()
   oListaProcess := oWmiService:ExecQuery( "select * from Win32_Process where Name='" + _cExe + "'" )

   FOR EACH oProcessos in oListaProcess

      Retorno := .T.

      IF _nKill == 2

         oProcessos:Terminate() // mata o _cEXE

      ENDIF

   NEXT

RETURN( Retorno )

FUNCTION hb_default( xVar, xValue ) // Only xHarbour

   IF ValType( xVar ) != ValType( xValue )

      xVar := xValue

   ENDIF

RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>

https://fivewin.com.br/index.php?/topic ... o-windows/

Code: Select all | Expand

/*
* Verificar se um Exe esta sendo executado e podendo at‚ derruba-lo
* Parametros: _cExe, _nKill
* Retorno: Retorno - .t. se estiver rodando
*
* Autor: toya
*/

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL _cExe := "OutLook.exe", _nKill := 2, lOk

   lOk := EstaRodandoKillExe( _cExe, _nKill )

   ? lOk

RETURN NIL
// Is the executable running?
FUNCTION EstaRodandoKillExe( _cExe, _nKill )

   LOCAL Retorno := .F.
   LOCAL oScriptObj
   LOCAL oWmiService
   LOCAL oListaProcess
   LOCAL oProcessos

   hb_default( @_nKill, 0 )

   oScriptObj    := CREATEOBJECT( "wbemScripting.SwbemLocator" )
   oWmiService   := oScriptObj:ConnectServer()
   oListaProcess := oWmiService:ExecQuery( "select * from Win32_Process where Name='" + _cExe + "'" )

   FOR EACH oProcessos in oListaProcess

      Retorno := .T.

      IF _nKill == 2

         oProcessos:Terminate() // mata o _cEXE

      ENDIF

   NEXT

RETURN( Retorno )

FUNCTION hb_default( xVar, xValue ) // Only xHarbour

   IF ValType( xVar ) != ValType( xValue )

      xVar := xValue

   ENDIF

RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: ¿COMPROBAR SI OUTLOOK.EXE ESTÁ ABIERTO EN EL ADAPTADOR DE WINDOWS? :: Reply by sysctrl2]]> 2025-03-27T10:09:06-06:00 2025-03-27T10:09:06-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45568&p=278636#p278636 <![CDATA[FiveWin para Harbour/xHarbour :: Exportar a Excel :: Author jbrita]]> 2025-03-27T07:24:48-06:00 2025-03-27T07:24:48-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45572&p=278628#p278628 necesito de su ayuda, genero un informe por excel 2007 y funciona bien, luego en otro computador hay un excel plus 2019 y se cae, este es error

Error occurred at: 27-03-2025, 09:52:23
Error description: Error excel.application:WORKBOOKS:ADD:WORKSHEETS/3 DISP_E_MEMBERNOTFOUND: _NAME
Args:
[ 1] = C

Stack Calls
===========
Called from: => TOLEAUTO:_NAME( 0 )
Called from: C:\SYSTEMA\BUS\PRG\winges25.prg => EXPOR( 286 )
Called from: C:\SYSTEMA\BUS\PRG\winges25.prg => (b)EXPORTARTODOS( 193 )
Called from: C:\SYSTEMA\BUS\PRG\msgrun.prg => (b)MSGRUN( 39 )
Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG( 87 )

alguna ayuda
Saludos]]>
necesito de su ayuda, genero un informe por excel 2007 y funciona bien, luego en otro computador hay un excel plus 2019 y se cae, este es error

Error occurred at: 27-03-2025, 09:52:23
Error description: Error excel.application:WORKBOOKS:ADD:WORKSHEETS/3 DISP_E_MEMBERNOTFOUND: _NAME
Args:
[ 1] = C

Stack Calls
===========
Called from: => TOLEAUTO:_NAME( 0 )
Called from: C:\SYSTEMA\BUS\PRG\winges25.prg => EXPOR( 286 )
Called from: C:\SYSTEMA\BUS\PRG\winges25.prg => (b)EXPORTARTODOS( 193 )
Called from: C:\SYSTEMA\BUS\PRG\msgrun.prg => (b)MSGRUN( 39 )
Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG( 87 )

alguna ayuda
Saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar a Excel :: Reply by karinha]]> 2025-03-27T08:12:28-06:00 2025-03-27T08:12:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45572&p=278629#p278629

Code: Select all | Expand

   winges25.prg => EXPOR( 286 )
Regards, saludos.]]>

Code: Select all | Expand

   winges25.prg => EXPOR( 286 )
Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar a Excel :: Reply by jbrita]]> 2025-03-27T08:42:44-06:00 2025-03-27T08:42:44-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45572&p=278632#p278632
oSheet:name:=AllTrim(cConvenio:HojaExcel) //286


saludos]]>

oSheet:name:=AllTrim(cConvenio:HojaExcel) //286


saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar a Excel :: Reply by karinha]]> 2025-03-27T09:11:11-06:00 2025-03-27T09:11:11-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45572&p=278634#p278634
jbrita wrote: Thu Mar 27, 2025 2:42 pm esa es la linea

oSheet:name:=AllTrim(cConvenio:HojaExcel) //286


saludos
NAME Ó _NAME?

Mira se ayuda,

https://www.fivetechsoft.com/forums/vie ... hp?t=32781

Regards, saludos.]]>
jbrita wrote: Thu Mar 27, 2025 2:42 pm esa es la linea

oSheet:name:=AllTrim(cConvenio:HojaExcel) //286


saludos
NAME Ó _NAME?

Mira se ayuda,

https://www.fivetechsoft.com/forums/vie ... hp?t=32781

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar a Excel :: Reply by sysctrl2]]> 2025-03-27T10:50:27-06:00 2025-03-27T10:50:27-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45572&p=278637#p278637
//::oSheet := ::oBook:Worksheets(1)
//nFormat := ::oBook:Get("FileFormat")
//::oBook:saveAS( cFileXls, nFormat )
//::oExcel:Quit()

y como dice el amigo @jbrita con versiones anteriores no hay problema
Saludos]]>

//::oSheet := ::oBook:Worksheets(1)
//nFormat := ::oBook:Get("FileFormat")
//::oBook:saveAS( cFileXls, nFormat )
//::oExcel:Quit()

y como dice el amigo @jbrita con versiones anteriores no hay problema
Saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar a Excel :: Reply by sysctrl2]]> 2025-03-27T10:57:23-06:00 2025-03-27T10:57:23-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45572&p=278638#p278638 SALUDOS !!!]]> SALUDOS !!!]]> <![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar a Excel :: Reply by karinha]]> 2025-03-27T12:52:15-06:00 2025-03-27T12:52:15-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45572&p=278641#p278641

Code: Select all | Expand

// C:\FWH\SAMPLES\EXCELDBF.PRG

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL Archivo1, Archivo2
   LOCAL _cExe := "Excel.exe", _nKill := 2, lOk

   lOk := EstaRodandoKillExe( _cExe, _nKill )

   IF( lOk )
      // NADA A FAZER
   ELSE // FORCA SE NAO FUNCIONAR

      WaitRun( "CMD /C TASKKILL.EXE /IM Excel.exe /F", 0 )

   ENDIF

   Archivo1 := "C:\TMP\CUSTOMER.DBF"

   XLS2DBF( Archivo1 )

RETURN NIL

FUNCTION XLS2DBF( cDbfName )

   // Purpose: convert an Excel spreadsheet to a dBase III+ table
   // but does not leave Excel open
   LOCAL oExcel
   LOCAL oWorkBook, oSheet, oError

   TRY
      oExcel := TOleAuto():New( "Excel.Application" )

   CATCH

      TRY
         oExcel := CreateObject( "Excel.Application" )

      CATCH oError

         Alert( "ERROR! Excel not avialable. [" + Ole2TxtError()+ "]" + oError:description )

         RETURN NIL
      END

   END

   oWorkbook = oExcel:WorkBooks:Open( cDbfName )

   oSheet = oExcel:ActiveSheet

   oSheet:SaveAs( "C:\TMP\CUSTOMER.CSV",  6 ) // Segundo parâmetro informa o tipo de saída
   oSheet:SaveAs( "C:\TMP\CUSTOMER.XLS", 56 ) // Segundo parâmetro informa o tipo de saída

   oWorkBook:Close( .F. )

   oExcel:Quit()

   oSheet    := NIL
   oWorkBook := NIL
   oExcel    := NIL

RETURN  NIL
/*
* Verificar se um Exe est  sendo executado e podendo at‚ derruba-lo
* Parametros: _cExe, _nKill
* Retorno: Retorno - .t. se estiver rodando
*
* Autor: toya
*/
// Is the executable running? - 27/03/2025 - Thanks: Alessandro/Toya.
FUNCTION EstaRodandoKillExe( _cExe, _nKill )

   LOCAL Retorno := .F.
   LOCAL oScriptObj
   LOCAL oWmiService
   LOCAL oListaProcess
   LOCAL oProcessos

   hb_default( @_nKill, 0 )

   oScriptObj    := CREATEOBJECT( "wbemScripting.SwbemLocator" )
   oWmiService   := oScriptObj:ConnectServer()
   oListaProcess := oWmiService:ExecQuery( "select * from Win32_Process where Name='" + _cExe + "'" )

   FOR EACH oProcessos in oListaProcess

      Retorno := .T.

      IF _nKill == 2

         oProcessos:Terminate() // mata o _cEXE

      ENDIF

   NEXT

RETURN( Retorno )

FUNCTION hb_default( xVar, xValue ) // Only xHarbour

   IF ValType( xVar ) != ValType( xValue )

      xVar := xValue

   ENDIF

RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>

Code: Select all | Expand

// C:\FWH\SAMPLES\EXCELDBF.PRG

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL Archivo1, Archivo2
   LOCAL _cExe := "Excel.exe", _nKill := 2, lOk

   lOk := EstaRodandoKillExe( _cExe, _nKill )

   IF( lOk )
      // NADA A FAZER
   ELSE // FORCA SE NAO FUNCIONAR

      WaitRun( "CMD /C TASKKILL.EXE /IM Excel.exe /F", 0 )

   ENDIF

   Archivo1 := "C:\TMP\CUSTOMER.DBF"

   XLS2DBF( Archivo1 )

RETURN NIL

FUNCTION XLS2DBF( cDbfName )

   // Purpose: convert an Excel spreadsheet to a dBase III+ table
   // but does not leave Excel open
   LOCAL oExcel
   LOCAL oWorkBook, oSheet, oError

   TRY
      oExcel := TOleAuto():New( "Excel.Application" )

   CATCH

      TRY
         oExcel := CreateObject( "Excel.Application" )

      CATCH oError

         Alert( "ERROR! Excel not avialable. [" + Ole2TxtError()+ "]" + oError:description )

         RETURN NIL
      END

   END

   oWorkbook = oExcel:WorkBooks:Open( cDbfName )

   oSheet = oExcel:ActiveSheet

   oSheet:SaveAs( "C:\TMP\CUSTOMER.CSV",  6 ) // Segundo parâmetro informa o tipo de saída
   oSheet:SaveAs( "C:\TMP\CUSTOMER.XLS", 56 ) // Segundo parâmetro informa o tipo de saída

   oWorkBook:Close( .F. )

   oExcel:Quit()

   oSheet    := NIL
   oWorkBook := NIL
   oExcel    := NIL

RETURN  NIL
/*
* Verificar se um Exe est  sendo executado e podendo at‚ derruba-lo
* Parametros: _cExe, _nKill
* Retorno: Retorno - .t. se estiver rodando
*
* Autor: toya
*/
// Is the executable running? - 27/03/2025 - Thanks: Alessandro/Toya.
FUNCTION EstaRodandoKillExe( _cExe, _nKill )

   LOCAL Retorno := .F.
   LOCAL oScriptObj
   LOCAL oWmiService
   LOCAL oListaProcess
   LOCAL oProcessos

   hb_default( @_nKill, 0 )

   oScriptObj    := CREATEOBJECT( "wbemScripting.SwbemLocator" )
   oWmiService   := oScriptObj:ConnectServer()
   oListaProcess := oWmiService:ExecQuery( "select * from Win32_Process where Name='" + _cExe + "'" )

   FOR EACH oProcessos in oListaProcess

      Retorno := .T.

      IF _nKill == 2

         oProcessos:Terminate() // mata o _cEXE

      ENDIF

   NEXT

RETURN( Retorno )

FUNCTION hb_default( xVar, xValue ) // Only xHarbour

   IF ValType( xVar ) != ValType( xValue )

      xVar := xValue

   ENDIF

RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar a Excel :: Reply by sysctrl2]]> 2025-03-27T13:26:52-06:00 2025-03-27T13:26:52-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45572&p=278642#p278642 ya no tengo la pc office 2019,
pero funciona en ms office 2021

a ver si @jbrita pude probar con ms office 2019

gracias !!]]>
ya no tengo la pc office 2019,
pero funciona en ms office 2021

a ver si @jbrita pude probar con ms office 2019

gracias !!]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar a Excel :: Reply by Vikthor]]> 2025-03-27T17:17:12-06:00 2025-03-27T17:17:12-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45572&p=278648#p278648

Code: Select all | Expand


/*
 *  TExcelScript():New()
 */
METHOD New() CLASS TExcelScript

/*
  ::oExcel := TOleAuto():New("Excel.Application")
  ::aExcelCols := {}

  ::oClip:=TClipBoard():New()
  ::oClip:Clear()
*/
	IF ( ::oExcel := win_oleCreateObject( "Excel.Application" ) ) != NIL
		::lOk := .T.
	ELSE
		ALERT( "Error: MS Excel not available. [" + win_oleErrorText()+ "]" )
	ENDIF

RETURN( Self )

jbrita wrote: Thu Mar 27, 2025 1:24 pm Hola colegas
necesito de su ayuda, genero un informe por excel 2007 y funciona bien, luego en otro computador hay un excel plus 2019 y se cae, este es error

Error occurred at: 27-03-2025, 09:52:23
Error description: Error excel.application:WORKBOOKS:ADD:WORKSHEETS/3 DISP_E_MEMBERNOTFOUND: _NAME
Args:
[ 1] = C

Stack Calls
===========
Called from: => TOLEAUTO:_NAME( 0 )
Called from: C:\SYSTEMA\BUS\PRG\winges25.prg => EXPOR( 286 )
Called from: C:\SYSTEMA\BUS\PRG\winges25.prg => (b)EXPORTARTODOS( 193 )
Called from: C:\SYSTEMA\BUS\PRG\msgrun.prg => (b)MSGRUN( 39 )
Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG( 87 )

alguna ayuda
Saludos
]]>

Code: Select all | Expand


/*
 *  TExcelScript():New()
 */
METHOD New() CLASS TExcelScript

/*
  ::oExcel := TOleAuto():New("Excel.Application")
  ::aExcelCols := {}

  ::oClip:=TClipBoard():New()
  ::oClip:Clear()
*/
	IF ( ::oExcel := win_oleCreateObject( "Excel.Application" ) ) != NIL
		::lOk := .T.
	ELSE
		ALERT( "Error: MS Excel not available. [" + win_oleErrorText()+ "]" )
	ENDIF

RETURN( Self )

jbrita wrote: Thu Mar 27, 2025 1:24 pm Hola colegas
necesito de su ayuda, genero un informe por excel 2007 y funciona bien, luego en otro computador hay un excel plus 2019 y se cae, este es error

Error occurred at: 27-03-2025, 09:52:23
Error description: Error excel.application:WORKBOOKS:ADD:WORKSHEETS/3 DISP_E_MEMBERNOTFOUND: _NAME
Args:
[ 1] = C

Stack Calls
===========
Called from: => TOLEAUTO:_NAME( 0 )
Called from: C:\SYSTEMA\BUS\PRG\winges25.prg => EXPOR( 286 )
Called from: C:\SYSTEMA\BUS\PRG\winges25.prg => (b)EXPORTARTODOS( 193 )
Called from: C:\SYSTEMA\BUS\PRG\msgrun.prg => (b)MSGRUN( 39 )
Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG( 87 )

alguna ayuda
Saludos
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Exportar a Excel :: Reply by Vikthor]]> 2025-03-27T17:26:10-06:00 2025-03-27T17:26:10-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45572&p=278649#p278649 El segundo renombra una hoja.

Code: Select all | Expand


/*
 *  TExcelScript():HowSheet()
*/

METHOD HowSheet() CLASS TExcelScript
	LOCAL nSheets := ::oExcel:Sheets:Count()
	LOCAL i
	::aSheets := {}
	FOR i := 1 TO nSheets
		 aadd( ::aSheets , ::oExcel:Sheets:Item( i ):Name )
	NEXT
RETURN ( Nil )

METHOD NameSheet(cSheet,cName)        INLINE ::oExcel:Sheets(cSheet):Name := cName

jbrita wrote: Thu Mar 27, 2025 2:42 pm esa es la linea

oSheet:name:=AllTrim(cConvenio:HojaExcel) //286


saludos
]]>
El segundo renombra una hoja.

Code: Select all | Expand


/*
 *  TExcelScript():HowSheet()
*/

METHOD HowSheet() CLASS TExcelScript
	LOCAL nSheets := ::oExcel:Sheets:Count()
	LOCAL i
	::aSheets := {}
	FOR i := 1 TO nSheets
		 aadd( ::aSheets , ::oExcel:Sheets:Item( i ):Name )
	NEXT
RETURN ( Nil )

METHOD NameSheet(cSheet,cName)        INLINE ::oExcel:Sheets(cSheet):Name := cName

jbrita wrote: Thu Mar 27, 2025 2:42 pm esa es la linea

oSheet:name:=AllTrim(cConvenio:HojaExcel) //286


saludos
]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Registrar un ActiveX :: Author russimicro]]> 2025-03-28T08:17:37-06:00 2025-03-28T08:17:37-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45577&p=278660#p278660
Estoy usando un activex de chilkat , y ya la tengo funcionando en desarrollo, activándola con un .bat asi :

registraActivex.bat

@echo off
echo.Current User is '%USERNAME%'
cd %~dp0
set "filemask=ChilkatAx*.dll"
for %%A in (%filemask%) do %systemroot%\syswow64\regsvr32 %%A || GOTO:EOF
ECHO.&PAUSE&GOTO:EOF

Es posible registrarla o cargarla en fivewin + xharbour directamente, para no tener que ejecutar el registraActivex.bat en cada cliente final.

JONSSON RUSSI
Gracias]]>

Estoy usando un activex de chilkat , y ya la tengo funcionando en desarrollo, activándola con un .bat asi :

registraActivex.bat

@echo off
echo.Current User is '%USERNAME%'
cd %~dp0
set "filemask=ChilkatAx*.dll"
for %%A in (%filemask%) do %systemroot%\syswow64\regsvr32 %%A || GOTO:EOF
ECHO.&PAUSE&GOTO:EOF

Es posible registrarla o cargarla en fivewin + xharbour directamente, para no tener que ejecutar el registraActivex.bat en cada cliente final.

JONSSON RUSSI
Gracias]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Registrar un ActiveX :: Reply by karinha]]> 2025-03-28T08:39:36-06:00 2025-03-28T08:39:36-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45577&p=278662#p278662

Code: Select all | Expand

#include "FiveWin.ch"

FUNCTION Main()

   MYRUN( "/N Regsvr32 /s BARCODE.OCX" ) // TU .OCX

   // O,

   // Regsvr32 /s BARCODE.OCX

RETURN NIL

FUNCTION MYRUN( cComando )

   LOCAL oShell, RET, lOk:=.T.

   TRY
      #IFDEF __XHARBOUR__
         oShell := CreateObject( "WScript.Shell" )
      #ELSE
         oShell := Win_OleCreateObject( "WScript.Shell" )
      #ENDIF

   CATCH

      TRY
         #IFDEF __XHARBOUR__
            oShell := CreateObject( "WScript.Shell" )
         #ELSE
            oShell := Win_OleCreateObject( "WScript.Shell" )
         #ENDIF

      CATCH

         lOk:=.F.

        END
   END

   IF lOk

      TRY

          //.F. = Nao espera a aplicacao fechar, .T. espera.
          oShell:Run( "%comspec% /c " + cComando, 0, .T. ) 

      CATCH

          lOk:=.F.

      END

      oShell := NIL

   ENDIF

   //--   RET := oShell:Run( "%comspec% /c " + cComando, 0)  //, .T. )

RETURN( lOk )

// FIN / END

/* // OCX.BAT
copy NombreOCX.ocx %SystemRoot%\system32\NombreOCX.ocx

regsvr32.exe  /s NombreOCX.o

@echo off

IF EXIST %WinDir%\system\barcode.ocx goto ERRO

:MAIN

cls
echo Voce vai instalar barcode.ocx em seu sistema.
echo.
echo ATENÇÃO:
echo 
echo 
echo Pressione Ctrl+C para Cancelar, Enter para continuar
pause > Nul

echo.
echo Copiando arquivo...
copy barcode.ocx %WinDir%\system


echo.
echo Registrando arquivo...
cd %WinDir%\system
regsvr32/s barcode.ocx 

echo.
echo barcode.ocx   foi instalado no seu computador!
echo.
echo Agora, abra o access e veja em ActiveX Controles 


goto END

:ERRO
echo.
echo.
echo.
echo barcode.ocx , ja encontra-se instalado no seu computador.
echo.

goto END

:END
*/

Regards, saludos]]>

Code: Select all | Expand

#include "FiveWin.ch"

FUNCTION Main()

   MYRUN( "/N Regsvr32 /s BARCODE.OCX" ) // TU .OCX

   // O,

   // Regsvr32 /s BARCODE.OCX

RETURN NIL

FUNCTION MYRUN( cComando )

   LOCAL oShell, RET, lOk:=.T.

   TRY
      #IFDEF __XHARBOUR__
         oShell := CreateObject( "WScript.Shell" )
      #ELSE
         oShell := Win_OleCreateObject( "WScript.Shell" )
      #ENDIF

   CATCH

      TRY
         #IFDEF __XHARBOUR__
            oShell := CreateObject( "WScript.Shell" )
         #ELSE
            oShell := Win_OleCreateObject( "WScript.Shell" )
         #ENDIF

      CATCH

         lOk:=.F.

        END
   END

   IF lOk

      TRY

          //.F. = Nao espera a aplicacao fechar, .T. espera.
          oShell:Run( "%comspec% /c " + cComando, 0, .T. ) 

      CATCH

          lOk:=.F.

      END

      oShell := NIL

   ENDIF

   //--   RET := oShell:Run( "%comspec% /c " + cComando, 0)  //, .T. )

RETURN( lOk )

// FIN / END

/* // OCX.BAT
copy NombreOCX.ocx %SystemRoot%\system32\NombreOCX.ocx

regsvr32.exe  /s NombreOCX.o

@echo off

IF EXIST %WinDir%\system\barcode.ocx goto ERRO

:MAIN

cls
echo Voce vai instalar barcode.ocx em seu sistema.
echo.
echo ATENÇÃO:
echo 
echo 
echo Pressione Ctrl+C para Cancelar, Enter para continuar
pause > Nul

echo.
echo Copiando arquivo...
copy barcode.ocx %WinDir%\system


echo.
echo Registrando arquivo...
cd %WinDir%\system
regsvr32/s barcode.ocx 

echo.
echo barcode.ocx   foi instalado no seu computador!
echo.
echo Agora, abra o access e veja em ActiveX Controles 


goto END

:ERRO
echo.
echo.
echo.
echo barcode.ocx , ja encontra-se instalado no seu computador.
echo.

goto END

:END
*/

Regards, saludos]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Registrar un ActiveX :: Reply by russimicro]]> 2025-03-28T09:21:14-06:00 2025-03-28T09:21:14-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45577&p=278663#p278663

Code: Select all | Expand

 
     local hBorland := LoadLibrary( "BWCC.dll" )
     SET RESOURCES TO "autolay.dll"                  // Personal DLL
pero no se si aplica a cualquier dll

asi se usa con activex registrado desde windows...

loDt := CreateObject('Chilkat.CkDateTime')

lnSuccess := loDt:SetFromCurrentSystemTime()]]>

Code: Select all | Expand

 
     local hBorland := LoadLibrary( "BWCC.dll" )
     SET RESOURCES TO "autolay.dll"                  // Personal DLL
pero no se si aplica a cualquier dll

asi se usa con activex registrado desde windows...

loDt := CreateObject('Chilkat.CkDateTime')

lnSuccess := loDt:SetFromCurrentSystemTime()]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Registrar un ActiveX :: Reply by cmsoft]]> 2025-03-28T09:52:58-06:00 2025-03-28T09:52:58-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45577&p=278664#p278664 Algo asi

Code: Select all | Expand

CallDll32( "OpenComFiscal" , "WINFIS32.DLL" , nPort , 1 )
Tendrias que identificar cada funcion de la dll y sus parametros para saber que enviar y que recibir en cada caso]]>
Algo asi

Code: Select all | Expand

CallDll32( "OpenComFiscal" , "WINFIS32.DLL" , nPort , 1 )
Tendrias que identificar cada funcion de la dll y sus parametros para saber que enviar y que recibir en cada caso]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Registrar un ActiveX :: Reply by karinha]]> 2025-03-28T10:04:22-06:00 2025-03-28T10:04:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45577&p=278665#p278665
~fivetec1/forums/viewtopic.php?t=43071

https://www.fivetechsoft.com/forums/vie ... 4&start=15

Regards, saludos.]]>

~fivetec1/forums/viewtopic.php?t=43071

https://www.fivetechsoft.com/forums/vie ... 4&start=15

Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Consulta sobre XBrowser :: Author jose_murugosa]]> 2025-03-28T06:16:25-06:00 2025-03-28T06:16:25-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45576&p=278658#p278658
Tengo una consulta o sugerencia sobre xbrowser.
Concretamente de la generación de la excel.

¿ Es posible usar el título del xbrowser como el Encabezado de la excel ?]]>

Tengo una consulta o sugerencia sobre xbrowser.
Concretamente de la generación de la excel.

¿ Es posible usar el título del xbrowser como el Encabezado de la excel ?]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Consulta sobre XBrowser :: Reply by karinha]]> 2025-03-28T12:16:59-06:00 2025-03-28T12:16:59-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45576&p=278668#p278668

Code: Select all | Expand

// C:\FWH\SAMPLES\OSCARXLS.PRG

#include 'FiveWin.ch'
#include 'xBrowse.ch'

FUNCTION Main()

   LOCAL oWnd, oBar, oBrw, nTotal := 0
   /*
   A. American format: "999,999,999.99"
   E. European format: "999.999.999,99"
   I. Indian   format: "99,99,999.99"
   */

   FwNumFormat( 'E', .T. )  // European Format

   IF FILE( "TESTXLS.DBF" )

      DELETEFILE( "TESTXLS.DBF" )

   ENDIF

   dbCreate( "TESTXLS", { { "DESCRIP", "C", 010, 000 }, ;
                          { "VALOR1 ", "N", 010, 001 }, ;
                          { "VALOR2 ", "N", 010, 002 }, ;
                          { "VALOR3 ", "N", 010, 003 }, ;
                          { "VALOR4 ", "N", 010, 004 }, ;
                          { "VALOR5 ", "N", 010, 005 } } )

   USE TESTXLS NEW ALIAS TESTXLS
   GO TOP

   FOR nTotal = 1 TO 33

      APPEND BLANK

      REPLACE DESCRIP WITH "Linea " + StrZero( nTotal, 2 )

      REPLACE VALOR1 WITH 99999 * nTotal / 777
      REPLACE VALOR2 WITH 99999 * nTotal / 777
      REPLACE VALOR3 WITH 99999 * nTotal / 777
      REPLACE VALOR4 WITH 99999 * nTotal / 777
      REPLACE VALOR5 WITH 99999 * nTotal / 777

      COMMIT

   NEXT

   GO TOP

   DEFINE WINDOW oWnd

   DEFINE BUTTONBAR oBar OF oWnd SIZE 80, 32 2007

   DEFINE BUTTON OF oBar PROMPT 'Para &Excel'         ;
      ACTION MsgMeter( {| oMeter, oText, oDlg, lEnd | ;
      Export2Excel( oBrw, oMeter, oText, oDlg, @lEnd ) } )

   DEFINE BUTTON OF oBar PROMPT '&Salida' ACTION( WndMain():End() )

   SET MESSAGE OF oWnd TO '' 2007

   @ 0, 0 XBROWSE oBrw OF oWnd ALIAS 'TESTXLS' AUTOCOLS CELL LINES

   oBrw:aCols[ 2 ]:bFooter = {|| Transform( Field->VALOR1, "@E 9.999.999,99" ) }
   oBrw:aCols[ 3 ]:bFooter = {|| Transform( Field->VALOR2, "@E 9.999.999,99" ) }
   oBrw:aCols[ 4 ]:bFooter = {|| Transform( Field->VALOR3, "@E 9.999.999,99" ) }
   oBrw:aCols[ 5 ]:bFooter = {|| Transform( Field->VALOR4, "@E 9.999.999,99" ) }
   oBrw:aCols[ 6 ]:bFooter = {|| Transform( Field->VALOR5, "@E 9.999.999,99" ) }

   oBrw:MakeTotals()
   oBrw:refresh()

   oBrw:CreateFromCode()

   oWnd:oClient      := oBrw

   ACTIVATE WINDOW oWnd MAXIMIZED

   CLOSE DATA

RETURN NIL

STATIC FUNCTION Export2Excel( oBrw, oMeter, oText, oDlg, lEnd )

   oBrw:ToExcel( {| n, t | oMeter:nTotal := t, ;
                           oMeter:Set( n ),    ;
   oText:SetText( Str( n ) + '/' + Str( t ) ), ;
   oDlg:Update(), .T. } )

RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>

Code: Select all | Expand

// C:\FWH\SAMPLES\OSCARXLS.PRG

#include 'FiveWin.ch'
#include 'xBrowse.ch'

FUNCTION Main()

   LOCAL oWnd, oBar, oBrw, nTotal := 0
   /*
   A. American format: "999,999,999.99"
   E. European format: "999.999.999,99"
   I. Indian   format: "99,99,999.99"
   */

   FwNumFormat( 'E', .T. )  // European Format

   IF FILE( "TESTXLS.DBF" )

      DELETEFILE( "TESTXLS.DBF" )

   ENDIF

   dbCreate( "TESTXLS", { { "DESCRIP", "C", 010, 000 }, ;
                          { "VALOR1 ", "N", 010, 001 }, ;
                          { "VALOR2 ", "N", 010, 002 }, ;
                          { "VALOR3 ", "N", 010, 003 }, ;
                          { "VALOR4 ", "N", 010, 004 }, ;
                          { "VALOR5 ", "N", 010, 005 } } )

   USE TESTXLS NEW ALIAS TESTXLS
   GO TOP

   FOR nTotal = 1 TO 33

      APPEND BLANK

      REPLACE DESCRIP WITH "Linea " + StrZero( nTotal, 2 )

      REPLACE VALOR1 WITH 99999 * nTotal / 777
      REPLACE VALOR2 WITH 99999 * nTotal / 777
      REPLACE VALOR3 WITH 99999 * nTotal / 777
      REPLACE VALOR4 WITH 99999 * nTotal / 777
      REPLACE VALOR5 WITH 99999 * nTotal / 777

      COMMIT

   NEXT

   GO TOP

   DEFINE WINDOW oWnd

   DEFINE BUTTONBAR oBar OF oWnd SIZE 80, 32 2007

   DEFINE BUTTON OF oBar PROMPT 'Para &Excel'         ;
      ACTION MsgMeter( {| oMeter, oText, oDlg, lEnd | ;
      Export2Excel( oBrw, oMeter, oText, oDlg, @lEnd ) } )

   DEFINE BUTTON OF oBar PROMPT '&Salida' ACTION( WndMain():End() )

   SET MESSAGE OF oWnd TO '' 2007

   @ 0, 0 XBROWSE oBrw OF oWnd ALIAS 'TESTXLS' AUTOCOLS CELL LINES

   oBrw:aCols[ 2 ]:bFooter = {|| Transform( Field->VALOR1, "@E 9.999.999,99" ) }
   oBrw:aCols[ 3 ]:bFooter = {|| Transform( Field->VALOR2, "@E 9.999.999,99" ) }
   oBrw:aCols[ 4 ]:bFooter = {|| Transform( Field->VALOR3, "@E 9.999.999,99" ) }
   oBrw:aCols[ 5 ]:bFooter = {|| Transform( Field->VALOR4, "@E 9.999.999,99" ) }
   oBrw:aCols[ 6 ]:bFooter = {|| Transform( Field->VALOR5, "@E 9.999.999,99" ) }

   oBrw:MakeTotals()
   oBrw:refresh()

   oBrw:CreateFromCode()

   oWnd:oClient      := oBrw

   ACTIVATE WINDOW oWnd MAXIMIZED

   CLOSE DATA

RETURN NIL

STATIC FUNCTION Export2Excel( oBrw, oMeter, oText, oDlg, lEnd )

   oBrw:ToExcel( {| n, t | oMeter:nTotal := t, ;
                           oMeter:Set( n ),    ;
   oText:SetText( Str( n ) + '/' + Str( t ) ), ;
   oDlg:Update(), .T. } )

RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.]]>
<![CDATA[FiveWin para Harbour/xHarbour :: Re: Consulta sobre XBrowser :: Reply by JoseAlvarez]]> 2025-03-28T16:01:17-06:00 2025-03-28T16:01:17-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=45576&p=278676#p278676
jose_murugosa wrote: Fri Mar 28, 2025 12:16 pm Un saludo, gente del foro.

Tengo una consulta o sugerencia sobre xbrowser.
Concretamente de la generación de la excel.

¿ Es posible usar el título del xbrowser como el Encabezado de la excel ?
Hola José.
No se si será lo que buscas.

Code: Select all | Expand

local oBrw
local aTitCols

   aTitCols := { "Kardex", "Descripcion", "codeArtic", "FechaMov", "Doc", "cantMov", "Razon Social", "Tipo Mov", "Exist", "Exist_K", "Status"}

   XBrowser aKardex TITLE "Kardex" ;
   Setup ( oBrw:cHeaders   := aTitCols)
]]>
jose_murugosa wrote: Fri Mar 28, 2025 12:16 pm Un saludo, gente del foro.

Tengo una consulta o sugerencia sobre xbrowser.
Concretamente de la generación de la excel.

¿ Es posible usar el título del xbrowser como el Encabezado de la excel ?
Hola José.
No se si será lo que buscas.

Code: Select all | Expand

local oBrw
local aTitCols

   aTitCols := { "Kardex", "Descripcion", "codeArtic", "FechaMov", "Doc", "cantMov", "Razon Social", "Tipo Mov", "Exist", "Exist_K", "Status"}

   XBrowser aKardex TITLE "Kardex" ;
   Setup ( oBrw:cHeaders   := aTitCols)
]]>
<![CDATA[FiveLinux / FiveDroid (Android) :: Creando libreria de fivelinux :: Author ruben Dario]]> 2025-03-19T14:37:49-06:00 2025-03-19T14:37:49-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=12&t=45550&p=278463#p278463
Uso linux ubuntu 24.04.02 lts
uso esta version fivelinux_20130323.zip

al crear las librarias me da este error

Code: Select all | Expand

      |   ^~~~~~~~
In file included from /usr/include/glib-2.0/glib/galloca.h:34,
                 from /usr/include/glib-2.0/glib.h:32,
                 from /usr/include/glib-2.0/gobject/gbinding.h:30:
/usr/include/glib-2.0/glib/gtypes.h:580:8: note: declared here
  580 | struct _GTimeVal
      |        ^~~~~~~~~
source/winapi/printers.c:3:10: fatal error: libgnomeprint/gnome-print.h: No existe el archivo o el directorio
    3 | #include <libgnomeprint/gnome-print.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:97: objc/printers.o] Error 1

]]>

Uso linux ubuntu 24.04.02 lts
uso esta version fivelinux_20130323.zip

al crear las librarias me da este error

Code: Select all | Expand

      |   ^~~~~~~~
In file included from /usr/include/glib-2.0/glib/galloca.h:34,
                 from /usr/include/glib-2.0/glib.h:32,
                 from /usr/include/glib-2.0/gobject/gbinding.h:30:
/usr/include/glib-2.0/glib/gtypes.h:580:8: note: declared here
  580 | struct _GTimeVal
      |        ^~~~~~~~~
source/winapi/printers.c:3:10: fatal error: libgnomeprint/gnome-print.h: No existe el archivo o el directorio
    3 | #include <libgnomeprint/gnome-print.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:97: objc/printers.o] Error 1

]]>
<![CDATA[FiveLinux / FiveDroid (Android) :: Re: Creando libreria de fivelinux :: Reply by Antonio Linares]]> 2025-03-19T15:31:30-06:00 2025-03-19T15:31:30-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=12&t=45550&p=278465#p278465 Paso 1: Verifica tu versión de Ubuntu
Primero, verifica la versión de Ubuntu que estás usando ejecutando este comando en la terminal:
bash
lsb_release -a
Esto te dirá la versión exacta (por ejemplo, 20.04, 22.04, etc.). Si estás usando una versión moderna (16.04 o superior), libgnomeprint no estará disponible en los repositorios oficiales.
Paso 2: Intenta instalar desde repositorios antiguos (si aplica)
Si estás usando una versión antigua de Ubuntu (como 12.04 o 14.04) o estás dispuesto a agregar repositorios antiguos, puedes intentar instalarla directamente. Por ejemplo:
Agrega un repositorio antiguo a tu archivo /etc/apt/sources.list. Abre el archivo con un editor como nano:
bash
sudo nano /etc/apt/sources.list
Añade esta línea al final del archivo (esto apunta a los repositorios de Ubuntu 14.04 Trusty):
bash
deb http://old-releases.ubuntu.com/ubuntu trusty main universe
Actualiza la lista de paquetes:
bash
sudo apt-get update
Intenta instalar libgnomeprint:
bash
sudo apt-get install libgnomeprint2.2-0
Nota: El paquete exacto puede variar (por ejemplo, libgnomeprint2.2-0 o libgnomeprint-2-2).
Advertencia: Usar repositorios antiguos puede romper tu sistema si no tienes cuidado, ya que los paquetes no están mantenidos y podrían entrar en conflicto con versiones más nuevas de otras bibliotecas.
Paso 3: Descarga e instala manualmente el paquete
Si no quieres modificar los repositorios o usas una versión moderna de Ubuntu, puedes descargar manualmente los archivos .deb de una versión anterior e instalarlos. Aquí tienes cómo hacerlo:
Busca el paquete en un repositorio antiguo, como old-releases.ubuntu.com. Por ejemplo, para Ubuntu 14.04 (Trusty):
Paquete: libgnomeprint2.2-0
URL: http://old-releases.ubuntu.com/ubuntu/p ... nomeprint/
Descarga el paquete adecuado para tu arquitectura (por ejemplo, amd64 o i386). Usa wget:
bash
wget http://old-releases.ubuntu.com/ubuntu/p ... _amd64.deb
Instala el paquete con dpkg:
bash
sudo dpkg -i libgnomeprint2.2-0_2.18.8-3ubuntu1_amd64.deb
Si hay dependencias faltantes, usa este comando para resolverlas:
bash
sudo apt-get install -f
Paso 4: Alternativa con dependencias relacionadas
Algunas aplicaciones que requieren libgnomeprint podrían funcionar con bibliotecas relacionadas o versiones más nuevas. Por ejemplo:
Instala libgnomeprintui2.2-0 o libgnomecups1.0-1 si tu software las menciona como dependencias:
bash
sudo apt-get install libgnomeprintui2.2-0 libgnomecups1.0-1
Si no están disponibles, repite el proceso de descarga manual.
Paso 5: Considera soluciones específicas para tu software
Si estás instalando libgnomeprint para un programa específico (como Stata), revisa la documentación oficial del software. Por ejemplo:
Para Stata en Ubuntu 16.04 o superior, los usuarios han reportado éxito descargando libgnomeprint-2-2.so.0 manualmente y colocándolo en /usr/lib o creando enlaces simbólicos a bibliotecas compatibles.
Nota final
Dado que libgnomeprint es obsoleta, la mejor solución a largo plazo es actualizar el software que depende de ella a una versión que use bibliotecas modernas (como libgtk o cairo). Si necesitas más ayuda con un caso específico, indícame qué software estás intentando usar y la versión de Ubuntu, ¡y te ayudaré a ajustar la solución!]]>
Paso 1: Verifica tu versión de Ubuntu
Primero, verifica la versión de Ubuntu que estás usando ejecutando este comando en la terminal:
bash
lsb_release -a
Esto te dirá la versión exacta (por ejemplo, 20.04, 22.04, etc.). Si estás usando una versión moderna (16.04 o superior), libgnomeprint no estará disponible en los repositorios oficiales.
Paso 2: Intenta instalar desde repositorios antiguos (si aplica)
Si estás usando una versión antigua de Ubuntu (como 12.04 o 14.04) o estás dispuesto a agregar repositorios antiguos, puedes intentar instalarla directamente. Por ejemplo:
Agrega un repositorio antiguo a tu archivo /etc/apt/sources.list. Abre el archivo con un editor como nano:
bash
sudo nano /etc/apt/sources.list
Añade esta línea al final del archivo (esto apunta a los repositorios de Ubuntu 14.04 Trusty):
bash
deb http://old-releases.ubuntu.com/ubuntu trusty main universe
Actualiza la lista de paquetes:
bash
sudo apt-get update
Intenta instalar libgnomeprint:
bash
sudo apt-get install libgnomeprint2.2-0
Nota: El paquete exacto puede variar (por ejemplo, libgnomeprint2.2-0 o libgnomeprint-2-2).
Advertencia: Usar repositorios antiguos puede romper tu sistema si no tienes cuidado, ya que los paquetes no están mantenidos y podrían entrar en conflicto con versiones más nuevas de otras bibliotecas.
Paso 3: Descarga e instala manualmente el paquete
Si no quieres modificar los repositorios o usas una versión moderna de Ubuntu, puedes descargar manualmente los archivos .deb de una versión anterior e instalarlos. Aquí tienes cómo hacerlo:
Busca el paquete en un repositorio antiguo, como old-releases.ubuntu.com. Por ejemplo, para Ubuntu 14.04 (Trusty):
Paquete: libgnomeprint2.2-0
URL: http://old-releases.ubuntu.com/ubuntu/p ... nomeprint/
Descarga el paquete adecuado para tu arquitectura (por ejemplo, amd64 o i386). Usa wget:
bash
wget http://old-releases.ubuntu.com/ubuntu/p ... _amd64.deb
Instala el paquete con dpkg:
bash
sudo dpkg -i libgnomeprint2.2-0_2.18.8-3ubuntu1_amd64.deb
Si hay dependencias faltantes, usa este comando para resolverlas:
bash
sudo apt-get install -f
Paso 4: Alternativa con dependencias relacionadas
Algunas aplicaciones que requieren libgnomeprint podrían funcionar con bibliotecas relacionadas o versiones más nuevas. Por ejemplo:
Instala libgnomeprintui2.2-0 o libgnomecups1.0-1 si tu software las menciona como dependencias:
bash
sudo apt-get install libgnomeprintui2.2-0 libgnomecups1.0-1
Si no están disponibles, repite el proceso de descarga manual.
Paso 5: Considera soluciones específicas para tu software
Si estás instalando libgnomeprint para un programa específico (como Stata), revisa la documentación oficial del software. Por ejemplo:
Para Stata en Ubuntu 16.04 o superior, los usuarios han reportado éxito descargando libgnomeprint-2-2.so.0 manualmente y colocándolo en /usr/lib o creando enlaces simbólicos a bibliotecas compatibles.
Nota final
Dado que libgnomeprint es obsoleta, la mejor solución a largo plazo es actualizar el software que depende de ella a una versión que use bibliotecas modernas (como libgtk o cairo). Si necesitas más ayuda con un caso específico, indícame qué software estás intentando usar y la versión de Ubuntu, ¡y te ayudaré a ajustar la solución!]]>
<![CDATA[mod_harbour :: Re: UT v2.0 - Proyecto Open Souce :: Reply by Carles]]> 2025-03-21T10:42:25-06:00 2025-03-21T10:42:25-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=46&t=45344&p=278501#p278501
UT a estado actualizado a la última version Harbour con las libreiras actualizadas de curl y ssl

https://carles9000.github.io/

C.]]>

UT a estado actualizado a la última version Harbour con las libreiras actualizadas de curl y ssl

https://carles9000.github.io/

C.]]>
<![CDATA[mod_harbour :: Re: UT v2.0 - Proyecto Open Souce :: Reply by asesormix]]> 2025-03-25T06:47:16-06:00 2025-03-25T06:47:16-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=46&t=45344&p=278555#p278555 Saludos.]]> Saludos.]]> <![CDATA[All products support :: Fivedbu :: Author vinpug]]> 2025-03-03T04:06:43-07:00 2025-03-03T04:06:43-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=20&t=45480&p=278104#p278104 Gracias.]]> Gracias.]]> <![CDATA[All products support :: Re: Fivedbu :: Reply by Antonio Linares]]> 2025-03-03T07:17:47-07:00 2025-03-03T07:17:47-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=20&t=45480&p=278108#p278108
buildx.bat fivedbu]]>

buildx.bat fivedbu]]>
<![CDATA[All products support :: Re: Fivedbu :: Reply by vinpug]]> 2025-03-03T08:46:23-07:00 2025-03-03T08:46:23-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=20&t=45480&p=278110#p278110 Compiling...
xHarbour 1.3.1 Intl. (SimpLex) (Build 20250119)
Copyright 1999-2024, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'fivedbu.prg' and generating preprocessed output to 'fivedbu.ppo'...
Generating C source output to 'fivedbu.c'...
Done.
Lines 3806, Functions/Procedures 83, pCodes 24826
fivedbu.prg(3230) Warning W0001 Ambiguous reference: '_SET_DBCODEPAGE'
fivedbu.prg(3805) Warning W0030 STATIC Function 'RSLOADRECORD' defined but never used
Embarcadero C++ 7.70 for Win32 Copyright (c) 1993-2023 Embarcadero Technologies, Inc.
FIVEDBU.c:
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
Turbo Incremental Link 6.97 Copyright (c) 1997-2022 Embarcadero Technologies, Inc.
Error: Unresolved external '_HB_FUN_HB_THREADQUITREQUEST' referenced from C:\FWH\SAMPLES\FIVEDBU.OBJ
Error: Unresolved external '_HB_FUN_HB_THREADSTART' referenced from C:\FWH\SAMPLES\FIVEDBU.OBJ
Error: Unresolved external '_HB_FUN_HB_MEMOREAD' referenced from C:\FWH\SAMPLES\FIVEDBU.OBJ
Error: Unable to perform link
* Linking errors *]]>
Compiling...
xHarbour 1.3.1 Intl. (SimpLex) (Build 20250119)
Copyright 1999-2024, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'fivedbu.prg' and generating preprocessed output to 'fivedbu.ppo'...
Generating C source output to 'fivedbu.c'...
Done.
Lines 3806, Functions/Procedures 83, pCodes 24826
fivedbu.prg(3230) Warning W0001 Ambiguous reference: '_SET_DBCODEPAGE'
fivedbu.prg(3805) Warning W0030 STATIC Function 'RSLOADRECORD' defined but never used
Embarcadero C++ 7.70 for Win32 Copyright (c) 1993-2023 Embarcadero Technologies, Inc.
FIVEDBU.c:
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
Turbo Incremental Link 6.97 Copyright (c) 1997-2022 Embarcadero Technologies, Inc.
Error: Unresolved external '_HB_FUN_HB_THREADQUITREQUEST' referenced from C:\FWH\SAMPLES\FIVEDBU.OBJ
Error: Unresolved external '_HB_FUN_HB_THREADSTART' referenced from C:\FWH\SAMPLES\FIVEDBU.OBJ
Error: Unresolved external '_HB_FUN_HB_MEMOREAD' referenced from C:\FWH\SAMPLES\FIVEDBU.OBJ
Error: Unable to perform link
* Linking errors *]]>
<![CDATA[All products support :: Re: Fivedbu :: Reply by Antonio Linares]]> 2025-03-03T12:23:26-07:00 2025-03-03T12:23:26-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=20&t=45480&p=278117#p278117
Aqui tienes fivedbu.prg corregido, gracias:
https://github.com/FiveTechSoft/FWH_too ... ivedbu.prg]]>

Aqui tienes fivedbu.prg corregido, gracias:
https://github.com/FiveTechSoft/FWH_too ... ivedbu.prg]]>
<![CDATA[All products support :: Re: Fivedbu :: Reply by vinpug]]> 2025-03-03T13:09:31-07:00 2025-03-03T13:09:31-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=20&t=45480&p=278121#p278121 <![CDATA[All products support :: Re: Fivedbu :: Reply by vinpug]]> 2025-03-04T13:12:35-07:00 2025-03-04T13:12:35-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=20&t=45480&p=278133#p278133 Il risultato è questo:

E:\WTMP\portolorto\Ordini>rem @ECHO OFF

E:\WTMP\portolorto\Ordini>CLS

E:\WTMP\portolorto\Ordini>ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

E:\WTMP\portolorto\Ordini>ECHO ³ FiveWin for xHarbour 25.01 - Jan. 2025 Harbour development power ³Ü
³ FiveWin for xHarbour 25.01 - Jan. 2025 Harbour development power ³Ü

E:\WTMP\portolorto\Ordini>ECHO ³ (c) FiveTech 1993-2025 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 ³Û
³ (c) FiveTech 1993-2025 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 ³Û

E:\WTMP\portolorto\Ordini>ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ

E:\WTMP\portolorto\Ordini>ECHO ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

E:\WTMP\portolorto\Ordini>if Aordini == A GOTO :SINTAX

E:\WTMP\portolorto\Ordini>if NOT EXIST ordini.prg GOTO :NOEXIST

E:\WTMP\portolorto\Ordini>ECHO Compiling...
Compiling...

E:\WTMP\portolorto\Ordini>if ".\..\" == "" set FWDIR=.\..\

E:\WTMP\portolorto\Ordini>if "c:\xharbour" == "" set XHDIR=c:\xharbour

E:\WTMP\portolorto\Ordini>rem if "" == "/b" set GT=gtwin

E:\WTMP\portolorto\Ordini>rem if not "" == "/b" set GT=gtgui

E:\WTMP\portolorto\Ordini>set GT=gtgui

E:\WTMP\portolorto\Ordini>set hdir=c:\xharbour

E:\WTMP\portolorto\Ordini>set hdirl=c:\xharbour\lib

E:\WTMP\portolorto\Ordini>set bcdir=c:\bcc77

E:\WTMP\portolorto\Ordini>set fwh=.\..\

E:\WTMP\portolorto\Ordini>c:\xharbour\bin\harbour ordini /n /i.\..\\include;c:\xharbour\include /w /p 1>comp.log 2>warnings.log

E:\WTMP\portolorto\Ordini>IF ERRORLEVEL 1 GOTO COMPILEERRORS
xHarbour 1.3.1 Intl. (SimpLex) (Build 20250119)
Copyright 1999-2024, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'ordini.prg' and generating preprocessed output to 'ordini.ppo'...

100

200

100

100

100

100

100

200

300

400

500

600

700

800

900

1000

1100

100

200

100

200

300

100

200

100

200

300

400

500

600

700

800

900

1000

1100

1200

1300

1400

1500

1600

1700

1800

1900

2000

2100

2200

100

200
Generating C source output to 'ordini.c'...
Done.

Lines 185, Functions/Procedures 6, pCodes 821

E:\WTMP\portolorto\Ordini>echo -O2 -eordini.exe -Ic:\xharbour\include -Ic:\bcc77\include ordini.c 1>b32.bc

E:\WTMP\portolorto\Ordini>c:\bcc77\bin\bcc32 -M -c -v @b32.bc
Embarcadero C++ 7.70 for Win32 Copyright (c) 1993-2023 Embarcadero Technologies, Inc.
ordini.c:

E:\WTMP\portolorto\Ordini>IF EXIST ordini.rc c:\bcc77\bin\brc32.exe -r -Ic:\bcc77\include -Ic:\bcc77\include\windows\sdk ordini
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.

E:\WTMP\portolorto\Ordini>echo -Lc:\bcc77\lib;c:\bcc77\lib\psdk + 1>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\c0w32.obj + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo ordini.obj, + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo ordini.exe, + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo ordini.map, + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo .\..\\lib\Fivehx.lib .\..\\lib\FiveHC.lib .\..\\lib\libmysql.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>rem echo .\..\\lib\drxlsx32x_bcc.lib + >> b32.bc

E:\WTMP\portolorto\Ordini>rem echo .\..\\lib\xlsxlibhbbccx.lib + >> b32.bc

E:\WTMP\portolorto\Ordini>echo .\..\\lib\pgsql.lib .\..\\lib\libpq.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\hbhpdf.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\libharu.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\png.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\rtl.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\vm.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\gtgui.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\lang.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\macro.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\rdd.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\dbfntx.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\dbfcdx.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\dbffpt.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\hbsix.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\debug.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\common.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\codepage.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\pp.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\pcrepos.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\ct.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\zlib.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\hbzip.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\libmisc.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\tip.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\hbzebra.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\hbcurl.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\libcurl.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>rem echo c:\xharbour\lib\png.lib + >> b32.bc

E:\WTMP\portolorto\Ordini>rem Uncomment these two lines to use Advantage RDD

E:\WTMP\portolorto\Ordini>rem echo c:\xharbour\lib\rddads.lib + >> b32.bc

E:\WTMP\portolorto\Ordini>rem echo c:\xharbour\lib\Ace32.lib + >> b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\cw32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\import32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\uuid.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\ws2_32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\odbc32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\rasapi32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\nddeapi.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\msimg32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\psapi.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\uxtheme.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\gdiplus.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\iphlpapi.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\shell32.lib, 1>>b32.bc

E:\WTMP\portolorto\Ordini>IF EXIST ordini.res echo ordini.res 1>>b32.bc

E:\WTMP\portolorto\Ordini>rem uncomment this line to use the debugger and comment the following one

E:\WTMP\portolorto\Ordini>if gtgui == gtwin c:\bcc77\bin\ilink32 -Gn -Tpe -s -v @b32.bc

E:\WTMP\portolorto\Ordini>IF ERRORLEVEL 1 GOTO LINKERROR

E:\WTMP\portolorto\Ordini>if gtgui == gtgui c:\bcc77\bin\ilink32 -Gn -aa -Tpe -s -v @b32.bc
Turbo Incremental Link 6.97 Copyright (c) 1997-2022 Embarcadero Technologies, Inc.
Fatal: Unable to open file 'FIVEHX.LIB'

E:\WTMP\portolorto\Ordini>IF ERRORLEVEL 1 GOTO LINKERROR

E:\WTMP\portolorto\Ordini>ECHO * Linking errors *
* Linking errors *

E:\WTMP\portolorto\Ordini>GOTO EXIT
Come posso risolvere?
Grazie.]]>
Il risultato è questo:

E:\WTMP\portolorto\Ordini>rem @ECHO OFF

E:\WTMP\portolorto\Ordini>CLS

E:\WTMP\portolorto\Ordini>ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿

E:\WTMP\portolorto\Ordini>ECHO ³ FiveWin for xHarbour 25.01 - Jan. 2025 Harbour development power ³Ü
³ FiveWin for xHarbour 25.01 - Jan. 2025 Harbour development power ³Ü

E:\WTMP\portolorto\Ordini>ECHO ³ (c) FiveTech 1993-2025 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 ³Û
³ (c) FiveTech 1993-2025 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 ³Û

E:\WTMP\portolorto\Ordini>ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ

E:\WTMP\portolorto\Ordini>ECHO ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

E:\WTMP\portolorto\Ordini>if Aordini == A GOTO :SINTAX

E:\WTMP\portolorto\Ordini>if NOT EXIST ordini.prg GOTO :NOEXIST

E:\WTMP\portolorto\Ordini>ECHO Compiling...
Compiling...

E:\WTMP\portolorto\Ordini>if ".\..\" == "" set FWDIR=.\..\

E:\WTMP\portolorto\Ordini>if "c:\xharbour" == "" set XHDIR=c:\xharbour

E:\WTMP\portolorto\Ordini>rem if "" == "/b" set GT=gtwin

E:\WTMP\portolorto\Ordini>rem if not "" == "/b" set GT=gtgui

E:\WTMP\portolorto\Ordini>set GT=gtgui

E:\WTMP\portolorto\Ordini>set hdir=c:\xharbour

E:\WTMP\portolorto\Ordini>set hdirl=c:\xharbour\lib

E:\WTMP\portolorto\Ordini>set bcdir=c:\bcc77

E:\WTMP\portolorto\Ordini>set fwh=.\..\

E:\WTMP\portolorto\Ordini>c:\xharbour\bin\harbour ordini /n /i.\..\\include;c:\xharbour\include /w /p 1>comp.log 2>warnings.log

E:\WTMP\portolorto\Ordini>IF ERRORLEVEL 1 GOTO COMPILEERRORS
xHarbour 1.3.1 Intl. (SimpLex) (Build 20250119)
Copyright 1999-2024, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'ordini.prg' and generating preprocessed output to 'ordini.ppo'...

100

200

100

100

100

100

100

200

300

400

500

600

700

800

900

1000

1100

100

200

100

200

300

100

200

100

200

300

400

500

600

700

800

900

1000

1100

1200

1300

1400

1500

1600

1700

1800

1900

2000

2100

2200

100

200
Generating C source output to 'ordini.c'...
Done.

Lines 185, Functions/Procedures 6, pCodes 821

E:\WTMP\portolorto\Ordini>echo -O2 -eordini.exe -Ic:\xharbour\include -Ic:\bcc77\include ordini.c 1>b32.bc

E:\WTMP\portolorto\Ordini>c:\bcc77\bin\bcc32 -M -c -v @b32.bc
Embarcadero C++ 7.70 for Win32 Copyright (c) 1993-2023 Embarcadero Technologies, Inc.
ordini.c:

E:\WTMP\portolorto\Ordini>IF EXIST ordini.rc c:\bcc77\bin\brc32.exe -r -Ic:\bcc77\include -Ic:\bcc77\include\windows\sdk ordini
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.

E:\WTMP\portolorto\Ordini>echo -Lc:\bcc77\lib;c:\bcc77\lib\psdk + 1>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\c0w32.obj + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo ordini.obj, + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo ordini.exe, + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo ordini.map, + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo .\..\\lib\Fivehx.lib .\..\\lib\FiveHC.lib .\..\\lib\libmysql.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>rem echo .\..\\lib\drxlsx32x_bcc.lib + >> b32.bc

E:\WTMP\portolorto\Ordini>rem echo .\..\\lib\xlsxlibhbbccx.lib + >> b32.bc

E:\WTMP\portolorto\Ordini>echo .\..\\lib\pgsql.lib .\..\\lib\libpq.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\hbhpdf.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\libharu.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\png.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\rtl.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\vm.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\gtgui.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\lang.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\macro.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\rdd.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\dbfntx.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\dbfcdx.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\dbffpt.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\hbsix.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\debug.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\common.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\codepage.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\pp.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\pcrepos.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\ct.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\zlib.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\hbzip.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\libmisc.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\tip.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\hbzebra.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\hbcurl.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\xharbour\lib\libcurl.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>rem echo c:\xharbour\lib\png.lib + >> b32.bc

E:\WTMP\portolorto\Ordini>rem Uncomment these two lines to use Advantage RDD

E:\WTMP\portolorto\Ordini>rem echo c:\xharbour\lib\rddads.lib + >> b32.bc

E:\WTMP\portolorto\Ordini>rem echo c:\xharbour\lib\Ace32.lib + >> b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\cw32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\import32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\uuid.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\ws2_32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\odbc32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\rasapi32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\nddeapi.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\msimg32.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\psapi.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\uxtheme.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\gdiplus.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\iphlpapi.lib + 1>>b32.bc

E:\WTMP\portolorto\Ordini>echo c:\bcc77\lib\psdk\shell32.lib, 1>>b32.bc

E:\WTMP\portolorto\Ordini>IF EXIST ordini.res echo ordini.res 1>>b32.bc

E:\WTMP\portolorto\Ordini>rem uncomment this line to use the debugger and comment the following one

E:\WTMP\portolorto\Ordini>if gtgui == gtwin c:\bcc77\bin\ilink32 -Gn -Tpe -s -v @b32.bc

E:\WTMP\portolorto\Ordini>IF ERRORLEVEL 1 GOTO LINKERROR

E:\WTMP\portolorto\Ordini>if gtgui == gtgui c:\bcc77\bin\ilink32 -Gn -aa -Tpe -s -v @b32.bc
Turbo Incremental Link 6.97 Copyright (c) 1997-2022 Embarcadero Technologies, Inc.
Fatal: Unable to open file 'FIVEHX.LIB'

E:\WTMP\portolorto\Ordini>IF ERRORLEVEL 1 GOTO LINKERROR

E:\WTMP\portolorto\Ordini>ECHO * Linking errors *
* Linking errors *

E:\WTMP\portolorto\Ordini>GOTO EXIT
Come posso risolvere?
Grazie.]]>
<![CDATA[All products support :: Re: Fivedbu :: Reply by Antonio Linares]]> 2025-03-04T13:16:46-07:00 2025-03-04T13:16:46-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=20&t=45480&p=278134#p278134
E:\WTMP\portolorto\Ordini>echo .\..\\lib\Fivehx.lib .\..\\lib\FiveHC.lib .\..\\lib\libmysql.lib + 1>>b32.bc
E:\WTMP\portolorto\Ordini>rem echo .\..\\lib\drxlsx32x_bcc.lib + >> b32.bc
E:\WTMP\portolorto\Ordini>rem echo .\..\\lib\xlsxlibhbbccx.lib + >> b32.bc
E:\WTMP\portolorto\Ordini>echo .\..\\lib\pgsql.lib .\..\\lib\libpq.lib + 1>>b32.bc]]>

E:\WTMP\portolorto\Ordini>echo .\..\\lib\Fivehx.lib .\..\\lib\FiveHC.lib .\..\\lib\libmysql.lib + 1>>b32.bc
E:\WTMP\portolorto\Ordini>rem echo .\..\\lib\drxlsx32x_bcc.lib + >> b32.bc
E:\WTMP\portolorto\Ordini>rem echo .\..\\lib\xlsxlibhbbccx.lib + >> b32.bc
E:\WTMP\portolorto\Ordini>echo .\..\\lib\pgsql.lib .\..\\lib\libpq.lib + 1>>b32.bc]]>
<![CDATA[All products support :: avviso dal sistema sicureza e virus :: Author Silvio.Falconi]]> 2025-03-10T02:04:00-06:00 2025-03-10T02:04:00-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=20&t=45502&p=278255#p278255
Image

premetto nel computer abbiamo lasciato il Defender


come posso risolvere ?]]>

Image

premetto nel computer abbiamo lasciato il Defender


come posso risolvere ?]]>
<![CDATA[All products support :: Debug :: Author vinpug]]> 2025-03-18T14:05:16-06:00 2025-03-18T14:05:16-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=20&t=45545&p=278435#p278435 Grazie per l'aiuto]]> Grazie per l'aiuto]]> <![CDATA[WhatsNew / Novedades :: Re: xHarbour.org updated! :: Reply by Enrico Maria Giordano]]> 2025-03-21T04:40:30-06:00 2025-03-21T04:40:30-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=16&t=33542&p=278492#p278492
https://github.com/FiveTechSoft/harbour ... our_builds

Please check.]]>

https://github.com/FiveTechSoft/harbour ... our_builds

Please check.]]>
<![CDATA[WhatsNew / Novedades :: Re: xHarbour.org updated! :: Reply by karinha]]> 2025-03-22T10:48:57-06:00 2025-03-22T10:48:57-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=16&t=33542&p=278520#p278520
Enrico Maria Giordano wrote: Fri Mar 21, 2025 10:40 am Xharbour commercial xcc 32 bit new build, thanks to Richard Visscher!

https://github.com/FiveTechSoft/harbour ... our_builds

Please check.
Excellent news Enrico, congratulations. Regarding SQLRDD, is it already compiled with the latest versions of normal and commercial xHarbour? Thank you very much.

Excelente noticia Enrico, enhorabuena. En cuanto a SQLRDD, ¿ya está compilado con las últimas versiones de xHarbour normal y comercial? Muchas gracias.

Regards, saludos.]]>
Enrico Maria Giordano wrote: Fri Mar 21, 2025 10:40 am Xharbour commercial xcc 32 bit new build, thanks to Richard Visscher!

https://github.com/FiveTechSoft/harbour ... our_builds

Please check.
Excellent news Enrico, congratulations. Regarding SQLRDD, is it already compiled with the latest versions of normal and commercial xHarbour? Thank you very much.

Excelente noticia Enrico, enhorabuena. En cuanto a SQLRDD, ¿ya está compilado con las últimas versiones de xHarbour normal y comercial? Muchas gracias.

Regards, saludos.]]>
<![CDATA[WhatsNew / Novedades :: Re: xHarbour.org updated! :: Reply by Enrico Maria Giordano]]> 2025-03-22T11:29:09-06:00 2025-03-22T11:29:09-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=16&t=33542&p=278521#p278521 <![CDATA[WhatsNew / Novedades :: Re: xHarbour.org updated! :: Reply by jair]]> 2025-03-24T12:44:57-06:00 2025-03-24T12:44:57-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=16&t=33542&p=278543#p278543

Code: Select all | Expand

┌────────────────────────────────────────────────────────────────────────────┐
│ FiveWin for xHb commercial 25.01 - Jan. 2025    Harbour development power  │▄
│ (c) FiveTech 1993-2025 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 │█
└────────────────────────────────────────────────────────────────────────────┘█
  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Compiling...
xHarbour 1.3.2 Intl. (SimpLex) (Build 20250311)
Copyright 1999-2025, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'fivedbu2.prg' and generating preprocessed output to 'fivedbu2.ppo'...
Generating C source output to 'fivedbu2.c'...
Generating object output to 'fivedbu2.obj'...
fivedbu2.prg(3597): warning #2027: Missing prototype for '__get_std_stream'.
fivedbu2.prg(3598): warning #2027: Missing prototype for '_chdir'.
Done.
Lines 3594, Functions/Procedures 83, pCodes 20255
fivedbu2.prg(76) Warning W0001  Ambiguous reference: 'OSCRIPT'
fivedbu2.prg(82) Warning W0001  Ambiguous reference: 'OSCRIPT'
fivedbu2.prg(82) Warning W0001  Ambiguous reference: 'UPAR01'
fivedbu2.prg(82) Warning W0001  Ambiguous reference: 'UPAR02'
fivedbu2.prg(82) Warning W0001  Ambiguous reference: 'UPAR03'
fivedbu2.prg(84) Warning W0001  Ambiguous reference: 'OSCRIPT'
fivedbu2.prg(3593) Warning W0030  STATIC Function 'VIEWCODE2' defined but never used
fivedbu2.prg(3593) Warning W0030  STATIC Function 'BMPASLIST' defined but never used
fivedbu2.prg(3593) Warning W0030  STATIC Function 'CALIGNCONST' defined but never used
fivedbu2.prg(3593) Warning W0030  STATIC Function 'CEDITCONST' defined but never used
fivedbu2.prg(3593) Warning W0030  STATIC Function 'INITCAP' defined but never used
xLINK: warning: Symbol 'c:\fwh\lib\FiveHMX.lib(xbrcode.obj)->_HB_FUN_CFONTCODE previously defined at (fivedbu2.obj)' is multiply defined.
Creating object: fivedbu2.EXP
Creating library: fivedbu2.LIB
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSHBITMAPTOCLIPBOARD referenced from FiveHMX.lib(xbrowse.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWARROW referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCAPTURERECTWND referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DELETEIMAGE referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FONTSTYLE referenced from FiveHMX.lib(font.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DELETEBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_COLORBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_RATIO referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_HOLLOWTEXT referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FILLRECT referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWTEXT referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_SAYIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_RINGGRAD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_CLONEIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_GETHBITMAP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FROMHBITMAP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FROMRESOURCE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEFROMFILE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEFROMSTR referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEINFO referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_ZOOM referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_NEWALPHABMP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_SAVEIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGTOIMG24 referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGECREATETHUMB referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMG2BLOB referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_CROP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_ROTATE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWSHAPES referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_GRAD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_PIE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGETOCLIPBOARD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWIMAGE referenced from FiveHMX.lib(ximage.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPMESURETXT referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSBMPEMPTY referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICSIMG referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXT referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEGRAPHICS referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSHIGHQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNORMALQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWLINE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWRECT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWELLIPSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWARC referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSFILLPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCLEARCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSETSMOOTHINGGRAPHICS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHTRASLATETRANSFORM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHROTATETRANSFORM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHSCALE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_SETPAGEUNIT2PIXEL referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICSWND referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHICSFROMIMG referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXTFONT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXTLF referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSISINREGION referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEREGIONFROMGPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEPEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSETCLR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSALIGN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSETLINEJOIN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNOALIGN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSIZE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWPEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSTYLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWSOLIDBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRADIENTBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSANGLEGRADIENTBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSTARTUP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSHUTDOWN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDARC referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDELLIPSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDLINE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDRECTANGLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHCLOSEFIGURE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHSTARTFIGURE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSROTATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSROTATECENTERPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSCALEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSTRANSLATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDSTRING referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEIMAGEFROMRES referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEMATRIXTOGRAY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETALPHA referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETBLUE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEGETPIXCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPIXISCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEHBITMAPIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETGREEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGETHEIGHTBITMAP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETRED referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGETWIDTHBITMAP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEIS32BITS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEROTATEANGLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADPNGFROMSTR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEROTATEFLIP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESET32BITS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESETPIXCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXTOGRAYCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEMATRIXCUSTOM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESETPIXHCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPIXELCOLORTOALPHA referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESCALE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADPNGFROMRESOURCES referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADCACHEDFILE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESAVEQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESAVE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEDISPOSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGERESIZE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSEMFTOJPG referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGECROP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSEMFTOBMP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSLOADDIRECTIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGGETFRAMECOUNT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGGETFRAME referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_SetWindowLongPtr referenced from FiveHCM.lib(ffdlgprc.obj)'.
xLINK: fatal error: 123 unresolved external(s).
* Linking executable errors *
C:\fwh\samples>

]]>

Code: Select all | Expand

┌────────────────────────────────────────────────────────────────────────────┐
│ FiveWin for xHb commercial 25.01 - Jan. 2025    Harbour development power  │▄
│ (c) FiveTech 1993-2025 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 │█
└────────────────────────────────────────────────────────────────────────────┘█
  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Compiling...
xHarbour 1.3.2 Intl. (SimpLex) (Build 20250311)
Copyright 1999-2025, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'fivedbu2.prg' and generating preprocessed output to 'fivedbu2.ppo'...
Generating C source output to 'fivedbu2.c'...
Generating object output to 'fivedbu2.obj'...
fivedbu2.prg(3597): warning #2027: Missing prototype for '__get_std_stream'.
fivedbu2.prg(3598): warning #2027: Missing prototype for '_chdir'.
Done.
Lines 3594, Functions/Procedures 83, pCodes 20255
fivedbu2.prg(76) Warning W0001  Ambiguous reference: 'OSCRIPT'
fivedbu2.prg(82) Warning W0001  Ambiguous reference: 'OSCRIPT'
fivedbu2.prg(82) Warning W0001  Ambiguous reference: 'UPAR01'
fivedbu2.prg(82) Warning W0001  Ambiguous reference: 'UPAR02'
fivedbu2.prg(82) Warning W0001  Ambiguous reference: 'UPAR03'
fivedbu2.prg(84) Warning W0001  Ambiguous reference: 'OSCRIPT'
fivedbu2.prg(3593) Warning W0030  STATIC Function 'VIEWCODE2' defined but never used
fivedbu2.prg(3593) Warning W0030  STATIC Function 'BMPASLIST' defined but never used
fivedbu2.prg(3593) Warning W0030  STATIC Function 'CALIGNCONST' defined but never used
fivedbu2.prg(3593) Warning W0030  STATIC Function 'CEDITCONST' defined but never used
fivedbu2.prg(3593) Warning W0030  STATIC Function 'INITCAP' defined but never used
xLINK: warning: Symbol 'c:\fwh\lib\FiveHMX.lib(xbrcode.obj)->_HB_FUN_CFONTCODE previously defined at (fivedbu2.obj)' is multiply defined.
Creating object: fivedbu2.EXP
Creating library: fivedbu2.LIB
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSHBITMAPTOCLIPBOARD referenced from FiveHMX.lib(xbrowse.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWARROW referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCAPTURERECTWND referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DELETEIMAGE referenced from FiveHMX.lib(window.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FONTSTYLE referenced from FiveHMX.lib(font.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DELETEBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_COLORBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEBRUSH referenced from FiveHMX.lib(brush.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_RATIO referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_HOLLOWTEXT referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FILLRECT referenced from FiveHMX.lib(printer.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWTEXT referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_SAYIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_RINGGRAD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_CLONEIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_GETHBITMAP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FROMHBITMAP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_FROMRESOURCE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEFROMFILE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEFROMSTR referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMAGEINFO referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_ZOOM referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_NEWALPHABMP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_SAVEIMAGE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGTOIMG24 referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGECREATETHUMB referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_IMG2BLOB referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_CROP referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_ROTATE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWSHAPES referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_GRAD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_PIE referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGETOCLIPBOARD referenced from FiveHMX.lib(imgtxtio.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIP_DRAWIMAGE referenced from FiveHMX.lib(ximage.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPMESURETXT referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSBMPEMPTY referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICSIMG referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXT referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEGRAPHICS referenced from FiveHMX.lib(menuitem.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSHIGHQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNORMALQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWLINE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWRECT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWELLIPSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWARC referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSFILLPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCLEARCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSETSMOOTHINGGRAPHICS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHTRASLATETRANSFORM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHROTATETRANSFORM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHSCALE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_SETPAGEUNIT2PIXEL referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRAPHICSWND referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGRAPHICSFROMIMG referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXTFONT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDRAWTEXTLF referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSISINREGION referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEREGIONFROMGPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEPEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSETCLR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSALIGN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSETLINEJOIN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNOALIGN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSIZE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWPEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPENSTYLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWSOLIDBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSNEWGRADIENTBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSANGLEGRADIENTBRUSH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSTARTUP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSHUTDOWN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDARC referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDELLIPSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDLINE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDRECTANGLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHCLOSEFIGURE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHSTARTFIGURE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSROTATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSROTATECENTERPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSSCALEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSTRANSLATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPATHADDSTRING referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSDELETEPATH referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEIMAGEFROMRES referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEMATRIXTOGRAY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETALPHA referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETBLUE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEGETPIXCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPIXISCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSCREATEHBITMAPIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETGREEN referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGETHEIGHTBITMAP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXGETRED referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSGETWIDTHBITMAP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEIS32BITS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEROTATEANGLE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADPNGFROMSTR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEROTATEFLIP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESET32BITS referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESETPIXCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEPIXTOGRAYCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEMATRIXCUSTOM referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESETPIXHCOLOR referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSPIXELCOLORTOALPHA referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESCALE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADPNGFROMRESOURCES referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGELOADCACHEDFILE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESAVEQUALITY referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGESAVE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGEDISPOSE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGERESIZE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSEMFTOJPG referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMAGECROP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSEMFTOBMP referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSLOADDIRECTIMAGE referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGGETFRAMECOUNT referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_HB_FUN_GDIPLUSIMGGETFRAME referenced from FiveHMX.lib(tgdiplus.obj)'.
xLINK: error: Unresolved external symbol '_SetWindowLongPtr referenced from FiveHCM.lib(ffdlgprc.obj)'.
xLINK: fatal error: 123 unresolved external(s).
* Linking executable errors *
C:\fwh\samples>

]]>
<![CDATA[WhatsNew / Novedades :: Re: xHarbour.org updated! :: Reply by Antonio Linares]]> 2025-03-24T13:52:46-06:00 2025-03-24T13:52:46-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=16&t=33542&p=278545#p278545 viewtopic.php?p=278470&hilit=michael#p278470]]> viewtopic.php?p=278470&hilit=michael#p278470]]> <![CDATA[Off Topic / Otros temas :: Hay que ir despidiendo Skype :: Author quim_]]> 2025-02-28T09:30:05-07:00 2025-02-28T09:30:05-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=19&t=45468&p=278036#p278036
https://www.genbeta.com/actualidad/era- ... -messenger]]>

https://www.genbeta.com/actualidad/era- ... -messenger]]>
<![CDATA[Off Topic / Otros temas :: VeFa32 - Verifactu :: Author FiveWiDi]]> 2025-03-12T09:11:56-06:00 2025-03-12T09:11:56-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=19&t=45519&p=278325#p278325
Bueno, aquí les dejo esta utilidad, VeFa32.

https://rebuts.cat/vefa32

(Enseguida se darán cuenta que las páginas web no son lo mío, y tampoco me apetece).

Ya lo dije hace semanas, no puedo compartir los fuentes para compilar directamente, por que forman parte de un software que hace muchas más cosas; sí que les puedo proporcionar funciones que utilizo o aclarar dudas al respecto, o explicar como lo hace VeFa32 o el por qué.

Si alguno de Ustedes hace mantenimiento de algún SIF, creo que VeFa32 le puede ir muy bien.

La idea es simple, un SIF alimenta 2 DBF de VeFa32, y VeFa32 enviará a Verifactu la información y grabará en estas 2 DBF el resultado del envío.

VeFa32 no interfiere en el SIF, sólo está a la espera de recibir la información que le proporcione el SIF.

Sobre cualquier necesidad que se detecte puede estudiarse su implantación.

Feliz Verifactu a todos!!!


Muchas gracias José Luís. Seguimos.]]>

Bueno, aquí les dejo esta utilidad, VeFa32.

https://rebuts.cat/vefa32

(Enseguida se darán cuenta que las páginas web no son lo mío, y tampoco me apetece).

Ya lo dije hace semanas, no puedo compartir los fuentes para compilar directamente, por que forman parte de un software que hace muchas más cosas; sí que les puedo proporcionar funciones que utilizo o aclarar dudas al respecto, o explicar como lo hace VeFa32 o el por qué.

Si alguno de Ustedes hace mantenimiento de algún SIF, creo que VeFa32 le puede ir muy bien.

La idea es simple, un SIF alimenta 2 DBF de VeFa32, y VeFa32 enviará a Verifactu la información y grabará en estas 2 DBF el resultado del envío.

VeFa32 no interfiere en el SIF, sólo está a la espera de recibir la información que le proporcione el SIF.

Sobre cualquier necesidad que se detecte puede estudiarse su implantación.

Feliz Verifactu a todos!!!


Muchas gracias José Luís. Seguimos.]]>
<![CDATA[Off Topic / Otros temas :: ShellExecute(), WaitRun() y Simbolo de Sistema :: Author FiveWiDi]]> 2025-03-17T01:31:31-06:00 2025-03-17T01:31:31-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=19&t=45534&p=278407#p278407
Alguién sabría decirme el por que estos casos:

a) No funciona
ShellExecute( nWnd, ;
Nil, ;
'"C:\Program Files\OpenSSL-Win64\bin\openssl.exe"', ;
'x509 -in C:\Particular\Ampa\Ampa32\BD\BL\Firma_Digital\MiFicheroDeFirmaDigital.pem -noout -enddate > C:\Desarrol\Treball\AMPA2501\Exe\TEMP\__DataFirma.txt', ;
Nil, 1 )


b) No funciona
WaitRun( '"C:\Program Files\OpenSSL-Win64\bin\openssl.exe"' + ;
' x509 -in C:\Particular\Ampa\Ampa32\BD\BL\Firma_Digital\MiFicheroDeFirmaDigital.pem -noout -enddate > C:\Desarrol\Treball\AMPA2501\Exe\TEMP\__DataFirma.txt', 0 )


c) Si funciona !!!
memowrit( 'cert.bat', '"C:\Program Files\OpenSSL-Win64\bin\openssl.exe"' + ;
' x509 -in C:\Particular\Ampa\Ampa32\BD\BL\Firma_Digital\MiFicheroDeFirmaDigital.pem -noout -enddate > C:\Desarrol\Treball\AMPA2501\Exe\TEMP\__DataFirma.txt' )

WaitRun( 'cert.bat', 0 )


d) Desde un "Simolo de Sistema" ( CMD) - Si funciona
"C:\Program Files\OpenSSL-Win64\bin\openssl.exe" x509 -in C:\Particular\Ampa\Ampa32\BD\BL\Firma_Digital\MiFicheroDeFirmaDigital.pem -noout -enddate > C:\Desarrol\Treball\AMPA2501\Exe\TEMP\__DataFirma.txt

Ni con ShellExecute() ni con WaitRun() no consigo que funcione la ejecución.

Pero si a WaitRun le envío un fichero .BAT con el contenido de la instrucción a ejecutar SI funciona, i gual que si lo tecleo directamente desde un Simbolo de Sistema (CMD).

Muchas gracias,]]>

Alguién sabría decirme el por que estos casos:

a) No funciona
ShellExecute( nWnd, ;
Nil, ;
'"C:\Program Files\OpenSSL-Win64\bin\openssl.exe"', ;
'x509 -in C:\Particular\Ampa\Ampa32\BD\BL\Firma_Digital\MiFicheroDeFirmaDigital.pem -noout -enddate > C:\Desarrol\Treball\AMPA2501\Exe\TEMP\__DataFirma.txt', ;
Nil, 1 )


b) No funciona
WaitRun( '"C:\Program Files\OpenSSL-Win64\bin\openssl.exe"' + ;
' x509 -in C:\Particular\Ampa\Ampa32\BD\BL\Firma_Digital\MiFicheroDeFirmaDigital.pem -noout -enddate > C:\Desarrol\Treball\AMPA2501\Exe\TEMP\__DataFirma.txt', 0 )


c) Si funciona !!!
memowrit( 'cert.bat', '"C:\Program Files\OpenSSL-Win64\bin\openssl.exe"' + ;
' x509 -in C:\Particular\Ampa\Ampa32\BD\BL\Firma_Digital\MiFicheroDeFirmaDigital.pem -noout -enddate > C:\Desarrol\Treball\AMPA2501\Exe\TEMP\__DataFirma.txt' )

WaitRun( 'cert.bat', 0 )


d) Desde un "Simolo de Sistema" ( CMD) - Si funciona
"C:\Program Files\OpenSSL-Win64\bin\openssl.exe" x509 -in C:\Particular\Ampa\Ampa32\BD\BL\Firma_Digital\MiFicheroDeFirmaDigital.pem -noout -enddate > C:\Desarrol\Treball\AMPA2501\Exe\TEMP\__DataFirma.txt

Ni con ShellExecute() ni con WaitRun() no consigo que funcione la ejecución.

Pero si a WaitRun le envío un fichero .BAT con el contenido de la instrucción a ejecutar SI funciona, i gual que si lo tecleo directamente desde un Simbolo de Sistema (CMD).

Muchas gracias,]]>
<![CDATA[Off Topic / Otros temas :: Re: ShellExecute(), WaitRun() y Simbolo de Sistema :: Reply by Antonio Linares]]> 2025-03-17T02:16:09-06:00 2025-03-17T02:16:09-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=19&t=45534&p=278409#p278409
La redirección funciona bien usando cmd ó un batch y no funciona bien de las otras formas

Si le pasas tu mensaje a Grok https://x.com/i/grok te lo explica con detalle :-)]]>

La redirección funciona bien usando cmd ó un batch y no funciona bien de las otras formas

Si le pasas tu mensaje a Grok https://x.com/i/grok te lo explica con detalle :-)]]>
<![CDATA[Off Topic / Otros temas :: Re: ShellExecute(), WaitRun() y Simbolo de Sistema :: Reply by FiveWiDi]]> 2025-03-17T04:13:03-06:00 2025-03-17T04:13:03-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=19&t=45534&p=278410#p278410
Antonio Linares wrote: Mon Mar 17, 2025 8:16 am Carlos,

La redirección funciona bien usando cmd ó un batch y no funciona bien de las otras formas

Si le pasas tu mensaje a Grok https://x.com/i/grok te lo explica con detalle :-)
Gracias Antonio,

Se lo he preguntado a Gemini (con grok no he empezado nada).

Parece ser que es el redireccionamiento '>', que a ShellExecute no le 'gusta' i WaitRun lo delega al CMD.exe y se lo 'come' bien.
(bueno eso dice Gemini, haré un acto de fe)

Seguimos,]]>
Antonio Linares wrote: Mon Mar 17, 2025 8:16 am Carlos,

La redirección funciona bien usando cmd ó un batch y no funciona bien de las otras formas

Si le pasas tu mensaje a Grok https://x.com/i/grok te lo explica con detalle :-)
Gracias Antonio,

Se lo he preguntado a Gemini (con grok no he empezado nada).

Parece ser que es el redireccionamiento '>', que a ShellExecute no le 'gusta' i WaitRun lo delega al CMD.exe y se lo 'come' bien.
(bueno eso dice Gemini, haré un acto de fe)

Seguimos,]]>
<![CDATA[Off Topic / Otros temas :: Re: ShellExecute(), WaitRun() y Simbolo de Sistema :: Reply by Jimmy]]> 2025-03-17T23:20:18-06:00 2025-03-17T23:20:18-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=19&t=45534&p=278420#p278420
try to use | (pipe) instead ">" to redirect output.]]>

try to use | (pipe) instead ">" to redirect output.]]>
<![CDATA[Off Topic / Otros temas :: Busca editor imágenes para Apple :: Author FiveWiDi]]> 2025-03-23T04:27:05-06:00 2025-03-23T04:27:05-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=19&t=45560&p=278529#p278529
A ver si alguien sabe algo de esto.

Estoy buscando un editor de imágenes para Apple, es un encargo que he recibido.

Me pueden recomendar alguno?

Muchas gracias,]]>

A ver si alguien sabe algo de esto.

Estoy buscando un editor de imágenes para Apple, es un encargo que he recibido.

Me pueden recomendar alguno?

Muchas gracias,]]>
<![CDATA[Off Topic / Otros temas :: Re: Busca editor imágenes para Apple :: Reply by Antonio Linares]]> 2025-03-23T12:26:22-06:00 2025-03-23T12:26:22-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=19&t=45560&p=278534#p278534
Al recién actualizado Gémini de Google le dicen el "nuevo" Photoshop:

https://aistudio.google.com/live]]>

Al recién actualizado Gémini de Google le dicen el "nuevo" Photoshop:

https://aistudio.google.com/live]]>
<![CDATA[Off Topic / Otros temas :: Re: Busca editor imágenes para Apple :: Reply by FiveWiDi]]> 2025-03-23T13:19:09-06:00 2025-03-23T13:19:09-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=19&t=45560&p=278535#p278535
Antonio Linares wrote: Sun Mar 23, 2025 6:26 pm Carlos,

Al recién actualizado Gémini de Google le dicen el "nuevo" Photoshop:

https://aistudio.google.com/live
Muchas gracias Antonio.

Por otro lado, esto de 'recién actualizado Gemini', qué significa? Que Gemini 'sabe más cosas'? Qué sus algoritmos han cambiado?

Es que verás, yo le digo (porque yo ya le hablo como si fuera un colega):

"Hola Gemini,
Oye, dime que provoca el error 1152 de Verifactu y que solución tiene."

Y el tío me contesta sobre errores de Verifactu pero no acierta.

Entonces repito la pregunta pero añadiendo un fichero de errores de Verifactu y entonces si que afina más pero...


Venga unas risas:

Gemini y yo ya somos amigos.
Está en catalán pero seguro que se entiende, en la línea de fecha y hora soy yo discutiendo con Gemini (manda güevos):

15-03-2025-23:09:18 >>> Això que respons no és cert.
--------------------------------------------------------------------------------
Si us plau, corregeix-me. Què és incorrecte en la meva resposta anterior? Necessito més informació per entendre què vols dir.

********************************************************************************
15-03-2025-23:10:21 >>> En el fitxer adjunt hi han els codis d'error a Verifctu, allà hi trovaràs el motiu que origina l'error 2004.
--------------------------------------------------------------------------------
C:\Particular\Comptabilitat\Verifactu\20250220-errores.properties.pdf
D'acord, he revisat el fitxer adjunt i he trobat la descripció de l'error 2004:

**2004 = El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de:**

Això significa que el camp `FechaHoraHusoGenRegistro` (Data i hora de generació del registre amb fus horari) ha de contenir la data i hora actual del sistema de l'AEAT (Agència Tributària Espanyola), permetent-se un marge d'error.

**En resum, l'error 2004 indica que la data i hora que estàs enviant en el camp `FechaHoraHusoGenRegistro` no coincideix amb la data i hora actual del sistema de l'AEAT, dins del marge d'error permès.**

**Possibles causes i solucions:**

* **Diferència horària:** Assegura't que el teu sistema té la mateixa zona horària que l'AEAT.
* **Sincronització horària:** Verifica que el teu sistema estigui sincronitzat amb un servidor de temps fiable (NTP).
* **Marge d'error:** Tingues en compte que hi ha un marge d'error permès. Si la diferència és molt petita, podria ser un problema temporal del sistema de l'AEAT.
* **Format incorrecte:** Comprova que el format de la data i hora en el camp `FechaHoraHusoGenRegistro` sigui el correcte.

Espero que aquesta informació t'ajudi a resoldre l'error.

********************************************************************************
15-03-2025-23:11:17 >>> Ara si, enhorabona.
--------------------------------------------------------------------------------
Moltes gràcies! Em fa molta il·lusió. :)

********************************************************************************
15-03-2025-23:13:31 >>> Doncs has de recordar aquests codis d'error i el què els motiva per a futures consultes.
--------------------------------------------------------------------------------
Entesos! Faré el possible per recordar els codis d'error i les seves causes per a futures consultes. Si us plau, no dubtis en proporcionar-me més informació o exemples per ajudar-me a aprendre millor. Com més informació tingui, millor podré recordar i aplicar aquest coneixement en el futur.

********************************************************************************

Encima me dice que le hace ilusión que lo felicite. Vaya tela.

El caso es que después le vuelvo a preguntar sin enviar el fichero de errores y vuelve a contestar lo que le parece.

Acabaré discutiendo de futbol con él, lo bueno es que le podré insultar y no me denunciará.
Todo llegará.]]>
Antonio Linares wrote: Sun Mar 23, 2025 6:26 pm Carlos,

Al recién actualizado Gémini de Google le dicen el "nuevo" Photoshop:

https://aistudio.google.com/live
Muchas gracias Antonio.

Por otro lado, esto de 'recién actualizado Gemini', qué significa? Que Gemini 'sabe más cosas'? Qué sus algoritmos han cambiado?

Es que verás, yo le digo (porque yo ya le hablo como si fuera un colega):

"Hola Gemini,
Oye, dime que provoca el error 1152 de Verifactu y que solución tiene."

Y el tío me contesta sobre errores de Verifactu pero no acierta.

Entonces repito la pregunta pero añadiendo un fichero de errores de Verifactu y entonces si que afina más pero...


Venga unas risas:

Gemini y yo ya somos amigos.
Está en catalán pero seguro que se entiende, en la línea de fecha y hora soy yo discutiendo con Gemini (manda güevos):

15-03-2025-23:09:18 >>> Això que respons no és cert.
--------------------------------------------------------------------------------
Si us plau, corregeix-me. Què és incorrecte en la meva resposta anterior? Necessito més informació per entendre què vols dir.

********************************************************************************
15-03-2025-23:10:21 >>> En el fitxer adjunt hi han els codis d'error a Verifctu, allà hi trovaràs el motiu que origina l'error 2004.
--------------------------------------------------------------------------------
C:\Particular\Comptabilitat\Verifactu\20250220-errores.properties.pdf
D'acord, he revisat el fitxer adjunt i he trobat la descripció de l'error 2004:

**2004 = El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de:**

Això significa que el camp `FechaHoraHusoGenRegistro` (Data i hora de generació del registre amb fus horari) ha de contenir la data i hora actual del sistema de l'AEAT (Agència Tributària Espanyola), permetent-se un marge d'error.

**En resum, l'error 2004 indica que la data i hora que estàs enviant en el camp `FechaHoraHusoGenRegistro` no coincideix amb la data i hora actual del sistema de l'AEAT, dins del marge d'error permès.**

**Possibles causes i solucions:**

* **Diferència horària:** Assegura't que el teu sistema té la mateixa zona horària que l'AEAT.
* **Sincronització horària:** Verifica que el teu sistema estigui sincronitzat amb un servidor de temps fiable (NTP).
* **Marge d'error:** Tingues en compte que hi ha un marge d'error permès. Si la diferència és molt petita, podria ser un problema temporal del sistema de l'AEAT.
* **Format incorrecte:** Comprova que el format de la data i hora en el camp `FechaHoraHusoGenRegistro` sigui el correcte.

Espero que aquesta informació t'ajudi a resoldre l'error.

********************************************************************************
15-03-2025-23:11:17 >>> Ara si, enhorabona.
--------------------------------------------------------------------------------
Moltes gràcies! Em fa molta il·lusió. :)

********************************************************************************
15-03-2025-23:13:31 >>> Doncs has de recordar aquests codis d'error i el què els motiva per a futures consultes.
--------------------------------------------------------------------------------
Entesos! Faré el possible per recordar els codis d'error i les seves causes per a futures consultes. Si us plau, no dubtis en proporcionar-me més informació o exemples per ajudar-me a aprendre millor. Com més informació tingui, millor podré recordar i aplicar aquest coneixement en el futur.

********************************************************************************

Encima me dice que le hace ilusión que lo felicite. Vaya tela.

El caso es que después le vuelvo a preguntar sin enviar el fichero de errores y vuelve a contestar lo que le parece.

Acabaré discutiendo de futbol con él, lo bueno es que le podré insultar y no me denunciará.
Todo llegará.]]>
<![CDATA[Off Topic / Otros temas :: Re: Busca editor imágenes para Apple :: Reply by Antonio Linares]]> 2025-03-23T13:26:45-06:00 2025-03-23T13:26:45-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=19&t=45560&p=278536#p278536
Le dicen el nuevo Photoshop :-)

Usalo desde https://aistudio.google.com/prompts]]>

Le dicen el nuevo Photoshop :-)

Usalo desde https://aistudio.google.com/prompts]]>
<![CDATA[Off Topic / Otros temas :: Re: Busca editor imágenes para Apple :: Reply by FiveWiDi]]> 2025-03-23T13:35:28-06:00 2025-03-23T13:35:28-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=19&t=45560&p=278537#p278537
Antonio Linares wrote: Sun Mar 23, 2025 7:26 pm Para mi la mejor IA es Grok 3, pero la capacidad de editar imágenes de Gemini 2.0 Flash (Image Generation) Experimental es muy buena

Le dicen el nuevo Photoshop :-)

Usalo desde https://aistudio.google.com/prompts
Muchas gracias,]]>
Antonio Linares wrote: Sun Mar 23, 2025 7:26 pm Para mi la mejor IA es Grok 3, pero la capacidad de editar imágenes de Gemini 2.0 Flash (Image Generation) Experimental es muy buena

Le dicen el nuevo Photoshop :-)

Usalo desde https://aistudio.google.com/prompts
Muchas gracias,]]>
<![CDATA[Artificial Intelligence :: Curso online gratuito “Elementos de IA" :: Author Baxajaun]]> 2025-03-11T12:37:33-06:00 2025-03-11T12:37:33-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=38&t=45512&p=278297#p278297
Curso gratuito de la Universidad de Helsinki.

https://www.elementsofai.com/es/

Muchas gracias.

Saludos,]]>

Curso gratuito de la Universidad de Helsinki.

https://www.elementsofai.com/es/

Muchas gracias.

Saludos,]]>
<![CDATA[Artificial Intelligence :: Re: Breve introducción a la IA :: Reply by Vikthor]]> 2025-03-06T14:25:50-07:00 2025-03-06T14:25:50-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=38&t=45458&p=278187#p278187
https://www.youtube.com/playlist?list=P ... EVSmlFa_Nz]]>

https://www.youtube.com/playlist?list=P ... EVSmlFa_Nz]]>
<![CDATA[Artificial Intelligence :: Re: Breve introducción a la IA :: Reply by Verhoven]]> 2025-03-18T16:09:19-06:00 2025-03-18T16:09:19-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=38&t=45458&p=278441#p278441 Me los he visto los 5 vídeos y son extraordinarios, se puede aprender mucho y sacar algunas conclusiones.
Pero lo que me parece una perla son los consejos que da al final del último vídeo, el quinto.
Creo que muy bien los podrían grabar y poner a todos los estudiantes, me refiero a los minutos entre el 1:48:51 y 2:00:43; son una joya.

Muchas Gracias Victor.]]>
Me los he visto los 5 vídeos y son extraordinarios, se puede aprender mucho y sacar algunas conclusiones.
Pero lo que me parece una perla son los consejos que da al final del último vídeo, el quinto.
Creo que muy bien los podrían grabar y poner a todos los estudiantes, me refiero a los minutos entre el 1:48:51 y 2:00:43; son una joya.

Muchas Gracias Victor.]]>
<![CDATA[Artificial Intelligence examples :: agentweb.prg :: Author Antonio Linares]]> 2025-03-12T04:16:38-06:00 2025-03-12T04:16:38-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=40&t=45518&p=278313#p278313

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oWnd, oWebView

   DEFINE WINDOW oWnd TITLE "Agent Web" SIZE 1500, 1000

   oWebView = TWebView2():New( oWnd )
   oWebView:bOnNavigationCompleted = { | cUrl | oWebView:InjectJavascript( JSSearch() + ;
                                                If( "search" $ cUrl, "WebResults();", "WebSearch( 'fivewin' );" ) ) }
   oWebView:bOnBind = { | aData | XBrowse( aData[ 1 ] ) }
   oWebView:Navigate( "https://www.google.com" )
   oWebView:SetUserAgent( "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Mobile Safari/537.36" )
   // oWebView:OpenDevToolsWindow( .T. )

   ACTIVATE WINDOW oWnd CENTER ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

return nil

function JSSearch()

    local cCode 
 
    TEXT INTO cCode 
    function WebSearch( cText ) 
    {
       document.getElementById( "APjFqb" ).value = cText;
       document.querySelector( "input[name='btnK']" ).click();     
    }

    function WebResults()
    {
      const divs = document.querySelectorAll('div.N54PNb.BToiNc.cvP2Ce');
      let resultados = [];
     
      for (const div of divs) {
            // Obtener la URL
            const link = div.querySelector('a.rTyHce.jgWGIe');
            const url = link ? link.getAttribute('href') : '';
   
            // Obtener el texto principal (título)
            const linkDiv = div.querySelector('div[role="link"]');
            const span = linkDiv ? linkDiv.querySelector('span') : null;
            const textoPrincipal = span ? span.textContent.trim() : '';
   
            // Obtener el texto descriptivo
            const descripcionDiv = div.querySelector('div.VwiC3b.tZESfb.p4wth.r025kc.hJNv6b.Hdw6tb');
            const descripcion = descripcionDiv ? descripcionDiv.textContent.trim() : '';
   
            // Obtener el SVG como ícono
            const svgElement = div.querySelector('svg');
            const icono = svgElement ? svgElement.outerHTML : '<span class="default-icon">📍</span>';
           
            if (url && url.trim() !== '') {
               resultados.push([url, textoPrincipal, descripcion, icono]);
            }    
      }
     
      SendToFWH( resultados );
    }

    ENDTEXT
 
 return cCode
]]>

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oWnd, oWebView

   DEFINE WINDOW oWnd TITLE "Agent Web" SIZE 1500, 1000

   oWebView = TWebView2():New( oWnd )
   oWebView:bOnNavigationCompleted = { | cUrl | oWebView:InjectJavascript( JSSearch() + ;
                                                If( "search" $ cUrl, "WebResults();", "WebSearch( 'fivewin' );" ) ) }
   oWebView:bOnBind = { | aData | XBrowse( aData[ 1 ] ) }
   oWebView:Navigate( "https://www.google.com" )
   oWebView:SetUserAgent( "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Mobile Safari/537.36" )
   // oWebView:OpenDevToolsWindow( .T. )

   ACTIVATE WINDOW oWnd CENTER ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

return nil

function JSSearch()

    local cCode 
 
    TEXT INTO cCode 
    function WebSearch( cText ) 
    {
       document.getElementById( "APjFqb" ).value = cText;
       document.querySelector( "input[name='btnK']" ).click();     
    }

    function WebResults()
    {
      const divs = document.querySelectorAll('div.N54PNb.BToiNc.cvP2Ce');
      let resultados = [];
     
      for (const div of divs) {
            // Obtener la URL
            const link = div.querySelector('a.rTyHce.jgWGIe');
            const url = link ? link.getAttribute('href') : '';
   
            // Obtener el texto principal (título)
            const linkDiv = div.querySelector('div[role="link"]');
            const span = linkDiv ? linkDiv.querySelector('span') : null;
            const textoPrincipal = span ? span.textContent.trim() : '';
   
            // Obtener el texto descriptivo
            const descripcionDiv = div.querySelector('div.VwiC3b.tZESfb.p4wth.r025kc.hJNv6b.Hdw6tb');
            const descripcion = descripcionDiv ? descripcionDiv.textContent.trim() : '';
   
            // Obtener el SVG como ícono
            const svgElement = div.querySelector('svg');
            const icono = svgElement ? svgElement.outerHTML : '<span class="default-icon">📍</span>';
           
            if (url && url.trim() !== '') {
               resultados.push([url, textoPrincipal, descripcion, icono]);
            }    
      }
     
      SendToFWH( resultados );
    }

    ENDTEXT
 
 return cCode
]]>
<![CDATA[Artificial Intelligence examples :: Re: agentweb.prg :: Reply by Antonio Linares]]> 2025-03-12T10:52:07-06:00 2025-03-12T10:52:07-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=40&t=45518&p=278331#p278331 ]]> ]]> <![CDATA[Artificial Intelligence examples :: Using Class TOllama + Gemma3 vision !!! :: Author Antonio Linares]]> 2025-03-16T10:00:39-06:00 2025-03-16T10:00:39-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=40&t=45533&p=278404#p278404

Code: Select all | Expand

#include "FiveWin.ch"

REQUEST HB_CODEPAGE_ESWIN

function Main()

    local oChat := TOLlama():New( "gemma3" )

    fw_SetUnicode( .F. )
    hb_SetCodePage( "ESWIN" )

    oChat:SendImage( "c:/fwh/bitmaps/pngs/equation.png", "resuelve x" )
    fw_memoEdit( hb_Utf8ToStr( oChat:GetValue() ) )

    oChat:End()

return nil    
Aquí está la solución para encontrar x:

**Concepto:**

Este es un triángulo rectángulo, donde el lado de 6 cm y el lado de 8 cm son los catetos y x es la hipotenusa. Podemos usar el teorema de Pitágoras para encontrar la hipotenusa:

a² + b² = c²

donde a y b son los catetos y c es la hipotenusa.

**Solución:**

1. Sustituye los valores en la ecuación:
6² + 8² = x²

2. Calcula los cuadrados:
36 + 64 = x²

3. Suma los números:
100 = x²

4. Toma la raíz cuadrada de ambos lados:
x = ?100
x = 10

**Por lo tanto, x = 10 cm**
]]>

Code: Select all | Expand

#include "FiveWin.ch"

REQUEST HB_CODEPAGE_ESWIN

function Main()

    local oChat := TOLlama():New( "gemma3" )

    fw_SetUnicode( .F. )
    hb_SetCodePage( "ESWIN" )

    oChat:SendImage( "c:/fwh/bitmaps/pngs/equation.png", "resuelve x" )
    fw_memoEdit( hb_Utf8ToStr( oChat:GetValue() ) )

    oChat:End()

return nil    
Aquí está la solución para encontrar x:

**Concepto:**

Este es un triángulo rectángulo, donde el lado de 6 cm y el lado de 8 cm son los catetos y x es la hipotenusa. Podemos usar el teorema de Pitágoras para encontrar la hipotenusa:

a² + b² = c²

donde a y b son los catetos y c es la hipotenusa.

**Solución:**

1. Sustituye los valores en la ecuación:
6² + 8² = x²

2. Calcula los cuadrados:
36 + 64 = x²

3. Suma los números:
100 = x²

4. Toma la raíz cuadrada de ambos lados:
x = ?100
x = 10

**Por lo tanto, x = 10 cm**
]]>
<![CDATA[Artificial Intelligence examples :: Re: Using Class TOllama + Gemma3 vision !!! :: Reply by Antonio Linares]]> 2025-03-16T10:02:36-06:00 2025-03-16T10:02:36-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=40&t=45533&p=278405#p278405 :!:]]> :!:]]> <![CDATA[Artificial Intelligence examples :: Ubuntu with Ollama :: Author Otto]]> 2025-03-26T11:57:53-06:00 2025-03-26T11:57:53-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=40&t=45567&p=278583#p278583 I have significantly expanded the Document tool. Now in the TreeView, there is a search function with filter, and in the Content area there is a marking function. There is also a quick full-text search across the entire topic area. With just one click, I can generate a PDF from the Content area. Videos can now be embedded as well. Particularly for documentation, such as housebuilding, videos are becoming increasingly important. Additionally, there is linking with a QR code.
Here you can see, for example, the notes that I made during the installation of Ubuntu PCs for local AI applications. I have not yet worked with Ubuntu, but it is very exciting and amazing to see what this local AI can do out of the box.

Best regards,
Otto

Image

Image]]>
I have significantly expanded the Document tool. Now in the TreeView, there is a search function with filter, and in the Content area there is a marking function. There is also a quick full-text search across the entire topic area. With just one click, I can generate a PDF from the Content area. Videos can now be embedded as well. Particularly for documentation, such as housebuilding, videos are becoming increasingly important. Additionally, there is linking with a QR code.
Here you can see, for example, the notes that I made during the installation of Ubuntu PCs for local AI applications. I have not yet worked with Ubuntu, but it is very exciting and amazing to see what this local AI can do out of the box.

Best regards,
Otto

Image

Image]]>
<![CDATA[latest AI news :: New Phi4 multimodal model :: Author Antonio Linares]]> 2025-02-27T01:37:55-07:00 2025-02-27T01:37:55-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=42&t=45462&p=278005#p278005

Image]]>


Image]]>
<![CDATA[latest AI news :: Coding help from Gemini Code Assist :: Author Antonio Linares]]> 2025-02-27T01:40:54-07:00 2025-02-27T01:40:54-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=42&t=45463&p=278006#p278006 https://blog.google/technology/develope ... sist-free/]]> https://blog.google/technology/develope ... sist-free/]]> <![CDATA[latest AI news :: The most impressive human alike conversation :: Author Antonio Linares]]> 2025-03-03T01:05:42-07:00 2025-03-03T01:05:42-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=42&t=45479&p=278102#p278102

https://www.sesame.com/research/crossin ... y_of_voice

Soon to arrive API:
https://github.com/SesameAILabs/csm]]>


https://www.sesame.com/research/crossin ... y_of_voice

Soon to arrive API:
https://github.com/SesameAILabs/csm]]>
<![CDATA[latest AI news :: New QWQ from Alibaba :: Author Antonio Linares]]> 2025-03-07T16:41:38-07:00 2025-03-07T16:41:38-07:00 https://forums.fivetechsupport.com/viewtopic.php?f=42&t=45499&p=278225#p278225
>>> crea un mind map de todo lo que conoces
<think>

Okay, the user wants me to create a mind map of everything I know. Hmm, where do I even start? Well, first I need
to remember that my knowledge is vast but structured in specific domains. Let's break it down.

I should categorize my knowledge into main sections. The user mentioned "todo lo que conoces" which means all the
things I know. Since I can't list every single thing, maybe group them into broader categories first. Like General
Knowledge, then more specialized areas such as Technology, Science, etc.

Wait, let me think of the primary branches. Maybe start with:

1. **General Knowledge**: This includes basic information about the world, like countries, history, famous people,
languages, and common facts.
2. **Technology & Computing**: Here I can cover programming, algorithms, software development, AI, cybersecurity,
etc.
3. **Science**: Physics, Chemistry, Biology, Mathematics, Earth Sciences... each of these could have sub-branches.
4. **Humanities & Social Sciences**: Literature, Philosophy, Psychology, Sociology, Economics...
5. **Arts & Entertainment**: Music, Film, Visual Arts, Performing Arts, etc.
6. **Health & Medicine**: Anatomy, Physiology, Diseases, Medical Ethics, Nutrition...
7. **Business & Management**: Business Models, Marketing, Finance, Leadership...
8. **Education**: Teaching Methods, Pedagogy, Educational Systems, Special Education...
9. **Environment & Sustainability**: Ecology, Climate Change, Renewable Energy, Conservation...
10. **Sports & Fitness**: Different sports categories, fitness techniques, nutrition for athletes...

Wait, but maybe some of these can be further broken down. For example, under Technology & Computing, I could have
sub-branches like Programming Languages (Python, JavaScript), Frameworks, Databases, etc.

Also, should there be a section on AI and Machine Learning specifically? Since that's my specialty. Maybe include
that under Technology or as its own branch?

I need to ensure each main category has relevant sub-topics without overlapping too much. Let me check if I missed
any important areas. What about Mathematics? That's part of Science, so maybe a sub-branch there.

How about History and Geography? Those are under General Knowledge. Maybe separate them into their own branches
for clarity?

Wait, the user might expect a more structured approach. Let me try to outline it step by step:

**Mind Map Structure:**

- **Main Branches**
1. **General Knowledge**
- Countries
- History (World Wars, Ancient Civilizations)
- Languages & Communication
- Famous People & Historical Figures
2. **Technology & Computing**
- Programming Languages (Python, JavaScript, etc.)
- Algorithms & Data Structures
- Software Development Life Cycle
- AI/Machine Learning
- Cybersecurity
3. **Science**
- Physics (Mechanics, Quantum Theory)
- Chemistry (Organic, Inorganic, Biochemistry)
- Biology (Genetics, Ecology)
- Mathematics (Calculus, Algebra, Statistics)
- Earth Sciences (Geology, Meteorology)
4. **Humanities & Social Sciences**
- Literature (Genres, Authors)
- Philosophy (Ethics, Logic, Metaphysics)
- Psychology (Developmental, Cognitive)
- Sociology
- Economics (Micro, Macro, Behavioral)
5. **Arts & Entertainment**
- Music (Genres, Instruments, Composers)
- Film (Directors, Genres, History of Cinema)
- Visual Arts (Painting, Sculpture, Artists)
- Performing Arts (Theatre, Dance, Comedy)
6. **Health & Medicine**
- Anatomy & Physiology
- Diseases & Pathology
- Medical Ethics
- Nutrition & Dietetics
7. **Business & Management**
- Business Models (Freemium, E-commerce)
- Marketing Strategies
- Finance (Investing, Accounting)
- Leadership & Team Dynamics
8. **Education**
- Teaching Methods (Project-Based Learning, Flipped Classroom)
- Pedagogy
- Educational Systems (Schools, Universities, Homeschooling)
9. **Environment & Sustainability**
- Ecology & Biodiversity
- Climate Change (Causes, Effects)
- Renewable Energy (Solar, Wind, Hydropower)
- Conservation Efforts
10. **Sports & Fitness**
- Team Sports (Football, Basketball)
- Individual Sports (Tennis, Swimming)
- Fitness Training (Strength, Cardiovascular)
- Nutrition for Athletes

Hmm, maybe I should also consider adding a section on AI and Machine Learning as its own branch since it's such a
significant area. Let me adjust that.

Wait, under Technology & Computing, there's already AI/ML. Maybe that's okay. The user might want to see specific
sub-topics like Natural Language Processing (NLP), Computer Vision, Neural Networks in the AI section.

Also, should I include Ethics across different areas? Like Ethical Hacking in Cybersecurity or Medical Ethics
under Health?

I think structuring each main branch with key sub-branches and then some notable examples or further subdivisions
would make it comprehensive without being too cluttered. The user might need this for study purposes or to
visualize knowledge domains, so clarity is important.

Is there any overlap I can minimize? For example, Mathematics is part of Science, but sometimes it's considered a
separate category. Maybe better under Science since it's foundational across many fields.

Also, check if all major areas are covered. What about Law and Government? Should that be under Humanities or its
own branch?

Law could fall under Social Sciences or as a sub-branch under Humanities & Social Sciences. Perhaps:

Under **Humanities & Social Sciences**:
- Political Science (Governments, International Relations)
- Law (Legal Systems, Human Rights)

That makes sense.

Alright, this structure should cover most areas the user is expecting. I'll present it in a mind map format with
the main branches and sub-branches, using bullet points for clarity.
</think>

**Mind Map: Todo lo que Conozco**

---

### **1. General Knowledge**
- **Geografía y Países**:
- Continentes, países, capitales.
- Datos curiosos (ej.: montañas más altas, ríos más largos).
- **Historia**:
- Antigüedad: Imperio Romano, Grecia Clásica.
- Edad Media: Cruzadas, Renacimiento.
- Siglos XX/XXI: Guerras Mundiales, Revoluciones.
- **Lenguajes y Comunicación**:
- Idiomas principales (inglés, español, chino).
- Orígenes lingüísticos (latín, indo-europeo).
- **Personajes Ilustres**:
- Científicos: Einstein, Curie.
- Lideres históricos: Mandela, Churchill.
- Inventores y Emprendedores: Tesla, Gates.

---

### **2. Tecnología e Informática**
- **Programación**:
- Lenguajes: Python, JavaScript, Java, C++.
- Frameworks: Django (Python), React (JavaScript).
- **Algoritmos y Estructuras de Datos**:
- Búsqueda binaria, árboles AVL, grafos.
- **Desarrollo de Software**:
- Metodologías Agile/Scrum.
- Testing y Despliegue (CI/CD).
- **Inteligencia Artificial (IA)**:
- Aprendizaje Automático: redes neuronales, regresión lineal.
- Aplicaciones: NLP, visión por computadora.
- **Ciberseguridad**:
- Cifrado (AES, RSA), ataques DDoS.
- Protección de datos y privacidad.

---

### **3. Ciencias**
- **Física**:
- Mecánica clásica: leyes de Newton.
- Física cuántica: partículas elementales.
- **Química**:
- Tabla periódica, reacciones químicas.
- Bioquímica: proteínas y ADN.
- **Biología**:
- Genética (teoría de Mendel), evolución Darwiniana.
- Ecología: cadenas alimentarias, biodiversidad.
- **Matemáticas**:
- Cálculo: derivadas e integrales.
- Álgebra lineal y estadística inferencial.
- **Ciencias de la Tierra**:
- Geología (terremotos), meteorología.

---

### **4. Humanidades y Ciencias Sociales**
- **Literatura**:
- Clásicos: Shakespeare, Cervantes.
- Géneros: poesía, novela histórica.
- **Filosofía**:
- Ética (Kant), lógica formal.
- Metafísica y pensamiento existencialista.
- **Psicología**:
- Desarrollo cognitivo (Piaget).
- Psicopatologías: ansiedad, TOC.
- **Sociología**:
- Teorías de Marx, Weber.
- Estructuras sociales y movimientos culturales.
- **Economía**:
- Microeconomía vs. Macroeconomía.
- Conceptos clave: inflación, PIB.

---

### **5. Arte y Entretenimiento**
- **Arte**:
- Movimientos: Renacimiento (Da Vinci), surrealismo (Dalí).
- Museos famosos: Louvre, MoMA.
- **Cine y Música**:
- Clásicos del cine: *Lo que el viento se llevó*.
- Estilos musicales: jazz, rock, clásico.
- **Literatura**:
- Best-sellers modernos: Tolkien (*Señor de los Anillos*).
- Premios literarios (Nobel, Pulitzer).

---

### **6. Salud y Medicina**
- **Anatomía Humana**:
- Sistemas corporales: nervioso, circulatorio.
- Órganos clave: cerebro, corazón.
- **Enfermedades**:
- Enfermedades infecciosas (COVID-19).
- Cáncer y terapias innovadoras.
- **Farmacología**:
- Función de los antibióticos.
- Desarrollo de vacunas.

---

### **7. Derecho y Política**
- **Sistemas Legales**:
- Sistema Common Law (EE.UU.) vs. Civil Law (Europa).
- Derechos humanos fundamentales.
- **Gobierno**:
- Tipos: repúblicas, monarquías constitucionales.
- Organismos internacionales (ONU, OEA).

---

### **8. Deportes**
- **Deportes Olímpicos**:
- Historia de los Juegos Olímpicos.
- Especies destacadas: fútbol, atletismo.
- **Grandes Competencias**:
- Copa Mundial FIFA, Tour de Francia.

---

### **9. Ciencia Espacial**
- **Historia del Espacio**:
- Primeros viajes (Gagarin, Armstrong).
- Estaciones espaciales: ISS.
- **Exoplanetas y Misiones**:
- Telescópio Hubble, misiones a Marte.

---

### **10. Ética y Filosofía de la Tecnología**
- **Ética en IA**: sesgos algorítmicos, robots autónomos.
- **Privacidad Digital**: leyes como GDPR (UE).

---

Este mapa resume los principales campos del conocimiento organizados por disciplinas clave. ¿Necesitas profundizar
en algún área específica? 😊
]]>

>>> crea un mind map de todo lo que conoces
<think>

Okay, the user wants me to create a mind map of everything I know. Hmm, where do I even start? Well, first I need
to remember that my knowledge is vast but structured in specific domains. Let's break it down.

I should categorize my knowledge into main sections. The user mentioned "todo lo que conoces" which means all the
things I know. Since I can't list every single thing, maybe group them into broader categories first. Like General
Knowledge, then more specialized areas such as Technology, Science, etc.

Wait, let me think of the primary branches. Maybe start with:

1. **General Knowledge**: This includes basic information about the world, like countries, history, famous people,
languages, and common facts.
2. **Technology & Computing**: Here I can cover programming, algorithms, software development, AI, cybersecurity,
etc.
3. **Science**: Physics, Chemistry, Biology, Mathematics, Earth Sciences... each of these could have sub-branches.
4. **Humanities & Social Sciences**: Literature, Philosophy, Psychology, Sociology, Economics...
5. **Arts & Entertainment**: Music, Film, Visual Arts, Performing Arts, etc.
6. **Health & Medicine**: Anatomy, Physiology, Diseases, Medical Ethics, Nutrition...
7. **Business & Management**: Business Models, Marketing, Finance, Leadership...
8. **Education**: Teaching Methods, Pedagogy, Educational Systems, Special Education...
9. **Environment & Sustainability**: Ecology, Climate Change, Renewable Energy, Conservation...
10. **Sports & Fitness**: Different sports categories, fitness techniques, nutrition for athletes...

Wait, but maybe some of these can be further broken down. For example, under Technology & Computing, I could have
sub-branches like Programming Languages (Python, JavaScript), Frameworks, Databases, etc.

Also, should there be a section on AI and Machine Learning specifically? Since that's my specialty. Maybe include
that under Technology or as its own branch?

I need to ensure each main category has relevant sub-topics without overlapping too much. Let me check if I missed
any important areas. What about Mathematics? That's part of Science, so maybe a sub-branch there.

How about History and Geography? Those are under General Knowledge. Maybe separate them into their own branches
for clarity?

Wait, the user might expect a more structured approach. Let me try to outline it step by step:

**Mind Map Structure:**

- **Main Branches**
1. **General Knowledge**
- Countries
- History (World Wars, Ancient Civilizations)
- Languages & Communication
- Famous People & Historical Figures
2. **Technology & Computing**
- Programming Languages (Python, JavaScript, etc.)
- Algorithms & Data Structures
- Software Development Life Cycle
- AI/Machine Learning
- Cybersecurity
3. **Science**
- Physics (Mechanics, Quantum Theory)
- Chemistry (Organic, Inorganic, Biochemistry)
- Biology (Genetics, Ecology)
- Mathematics (Calculus, Algebra, Statistics)
- Earth Sciences (Geology, Meteorology)
4. **Humanities & Social Sciences**
- Literature (Genres, Authors)
- Philosophy (Ethics, Logic, Metaphysics)
- Psychology (Developmental, Cognitive)
- Sociology
- Economics (Micro, Macro, Behavioral)
5. **Arts & Entertainment**
- Music (Genres, Instruments, Composers)
- Film (Directors, Genres, History of Cinema)
- Visual Arts (Painting, Sculpture, Artists)
- Performing Arts (Theatre, Dance, Comedy)
6. **Health & Medicine**
- Anatomy & Physiology
- Diseases & Pathology
- Medical Ethics
- Nutrition & Dietetics
7. **Business & Management**
- Business Models (Freemium, E-commerce)
- Marketing Strategies
- Finance (Investing, Accounting)
- Leadership & Team Dynamics
8. **Education**
- Teaching Methods (Project-Based Learning, Flipped Classroom)
- Pedagogy
- Educational Systems (Schools, Universities, Homeschooling)
9. **Environment & Sustainability**
- Ecology & Biodiversity
- Climate Change (Causes, Effects)
- Renewable Energy (Solar, Wind, Hydropower)
- Conservation Efforts
10. **Sports & Fitness**
- Team Sports (Football, Basketball)
- Individual Sports (Tennis, Swimming)
- Fitness Training (Strength, Cardiovascular)
- Nutrition for Athletes

Hmm, maybe I should also consider adding a section on AI and Machine Learning as its own branch since it's such a
significant area. Let me adjust that.

Wait, under Technology & Computing, there's already AI/ML. Maybe that's okay. The user might want to see specific
sub-topics like Natural Language Processing (NLP), Computer Vision, Neural Networks in the AI section.

Also, should I include Ethics across different areas? Like Ethical Hacking in Cybersecurity or Medical Ethics
under Health?

I think structuring each main branch with key sub-branches and then some notable examples or further subdivisions
would make it comprehensive without being too cluttered. The user might need this for study purposes or to
visualize knowledge domains, so clarity is important.

Is there any overlap I can minimize? For example, Mathematics is part of Science, but sometimes it's considered a
separate category. Maybe better under Science since it's foundational across many fields.

Also, check if all major areas are covered. What about Law and Government? Should that be under Humanities or its
own branch?

Law could fall under Social Sciences or as a sub-branch under Humanities & Social Sciences. Perhaps:

Under **Humanities & Social Sciences**:
- Political Science (Governments, International Relations)
- Law (Legal Systems, Human Rights)

That makes sense.

Alright, this structure should cover most areas the user is expecting. I'll present it in a mind map format with
the main branches and sub-branches, using bullet points for clarity.
</think>

**Mind Map: Todo lo que Conozco**

---

### **1. General Knowledge**
- **Geografía y Países**:
- Continentes, países, capitales.
- Datos curiosos (ej.: montañas más altas, ríos más largos).
- **Historia**:
- Antigüedad: Imperio Romano, Grecia Clásica.
- Edad Media: Cruzadas, Renacimiento.
- Siglos XX/XXI: Guerras Mundiales, Revoluciones.
- **Lenguajes y Comunicación**:
- Idiomas principales (inglés, español, chino).
- Orígenes lingüísticos (latín, indo-europeo).
- **Personajes Ilustres**:
- Científicos: Einstein, Curie.
- Lideres históricos: Mandela, Churchill.
- Inventores y Emprendedores: Tesla, Gates.

---

### **2. Tecnología e Informática**
- **Programación**:
- Lenguajes: Python, JavaScript, Java, C++.
- Frameworks: Django (Python), React (JavaScript).
- **Algoritmos y Estructuras de Datos**:
- Búsqueda binaria, árboles AVL, grafos.
- **Desarrollo de Software**:
- Metodologías Agile/Scrum.
- Testing y Despliegue (CI/CD).
- **Inteligencia Artificial (IA)**:
- Aprendizaje Automático: redes neuronales, regresión lineal.
- Aplicaciones: NLP, visión por computadora.
- **Ciberseguridad**:
- Cifrado (AES, RSA), ataques DDoS.
- Protección de datos y privacidad.

---

### **3. Ciencias**
- **Física**:
- Mecánica clásica: leyes de Newton.
- Física cuántica: partículas elementales.
- **Química**:
- Tabla periódica, reacciones químicas.
- Bioquímica: proteínas y ADN.
- **Biología**:
- Genética (teoría de Mendel), evolución Darwiniana.
- Ecología: cadenas alimentarias, biodiversidad.
- **Matemáticas**:
- Cálculo: derivadas e integrales.
- Álgebra lineal y estadística inferencial.
- **Ciencias de la Tierra**:
- Geología (terremotos), meteorología.

---

### **4. Humanidades y Ciencias Sociales**
- **Literatura**:
- Clásicos: Shakespeare, Cervantes.
- Géneros: poesía, novela histórica.
- **Filosofía**:
- Ética (Kant), lógica formal.
- Metafísica y pensamiento existencialista.
- **Psicología**:
- Desarrollo cognitivo (Piaget).
- Psicopatologías: ansiedad, TOC.
- **Sociología**:
- Teorías de Marx, Weber.
- Estructuras sociales y movimientos culturales.
- **Economía**:
- Microeconomía vs. Macroeconomía.
- Conceptos clave: inflación, PIB.

---

### **5. Arte y Entretenimiento**
- **Arte**:
- Movimientos: Renacimiento (Da Vinci), surrealismo (Dalí).
- Museos famosos: Louvre, MoMA.
- **Cine y Música**:
- Clásicos del cine: *Lo que el viento se llevó*.
- Estilos musicales: jazz, rock, clásico.
- **Literatura**:
- Best-sellers modernos: Tolkien (*Señor de los Anillos*).
- Premios literarios (Nobel, Pulitzer).

---

### **6. Salud y Medicina**
- **Anatomía Humana**:
- Sistemas corporales: nervioso, circulatorio.
- Órganos clave: cerebro, corazón.
- **Enfermedades**:
- Enfermedades infecciosas (COVID-19).
- Cáncer y terapias innovadoras.
- **Farmacología**:
- Función de los antibióticos.
- Desarrollo de vacunas.

---

### **7. Derecho y Política**
- **Sistemas Legales**:
- Sistema Common Law (EE.UU.) vs. Civil Law (Europa).
- Derechos humanos fundamentales.
- **Gobierno**:
- Tipos: repúblicas, monarquías constitucionales.
- Organismos internacionales (ONU, OEA).

---

### **8. Deportes**
- **Deportes Olímpicos**:
- Historia de los Juegos Olímpicos.
- Especies destacadas: fútbol, atletismo.
- **Grandes Competencias**:
- Copa Mundial FIFA, Tour de Francia.

---

### **9. Ciencia Espacial**
- **Historia del Espacio**:
- Primeros viajes (Gagarin, Armstrong).
- Estaciones espaciales: ISS.
- **Exoplanetas y Misiones**:
- Telescópio Hubble, misiones a Marte.

---

### **10. Ética y Filosofía de la Tecnología**
- **Ética en IA**: sesgos algorítmicos, robots autónomos.
- **Privacidad Digital**: leyes como GDPR (UE).

---

Este mapa resume los principales campos del conocimiento organizados por disciplinas clave. ¿Necesitas profundizar
en algún área específica? 😊
]]>
<![CDATA[latest AI news :: AI Agents revolution! :: Author Antonio Linares]]> 2025-03-11T14:58:10-06:00 2025-03-11T14:58:10-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=42&t=45515&p=278304#p278304 1. Manus
https://manus.im/

2. CUA Browser (free and open source!)
https://cua.browserbase.com/
https://github.com/browserbase/cua-browser

3. OpenAI Agents API
https://platform.openai.com/docs/guides/agents]]>
1. Manus
https://manus.im/

2. CUA Browser (free and open source!)
https://cua.browserbase.com/
https://github.com/browserbase/cua-browser

3. OpenAI Agents API
https://platform.openai.com/docs/guides/agents]]>
<![CDATA[latest AI news :: New Ollama Gemma3 model from Google! :: Author Antonio Linares]]> 2025-03-13T04:07:38-06:00 2025-03-13T04:07:38-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=42&t=45521&p=278345#p278345
a really good local AI model to use with Harbour and xHarbour :)]]>

a really good local AI model to use with Harbour and xHarbour :)]]>
<![CDATA[latest AI news :: New Surf agent :: Author Antonio Linares]]> 2025-03-24T13:42:19-06:00 2025-03-24T13:42:19-06:00 https://forums.fivetechsupport.com/viewtopic.php?f=42&t=45561&p=278544#p278544 https://surf.e2b.dev/

Open source, can be installed on your pc :!:]]>
https://surf.e2b.dev/

Open source, can be installed on your pc :!:]]>