FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour C STRUCTURE
Posts: 88
Joined: Wed Apr 28, 2010 06:34 PM
C STRUCTURE
Posted: Tue Mar 19, 2013 06:55 PM

buenas tardes

en xHarbour lo hago y funciona muy bien

include "FiveWin.Ch"

include "cstruct.ch"

typedef struct { CTYPE_DOUBLE nDouble[200] } DataStructD12

function testes()

LOCAL oData1 IS DataStructD12

etc.....

return nil

Harbour ahora da este error en el archivo cstruct.ch

  #xcommand END C STRUCTURE [<!stru!>] => ; ;
              __ClsSetModule( __ActiveStructure() ); ;
           RETURN

Error: Unresolved external '_HB_FUN___CLSSETMODULE'

Alguien sabe c贸mo cambiar para que funcione correctamente?

Alguien sabe c贸mo cambiar para que funcione correctamente?

gracias

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: C STRUCTURE
Posted: Tue Mar 19, 2013 07:41 PM
Lo acabo de reportar en la lista de desarrollo de Harbour, a ver cual ser铆a la forma correcta de reemplazar esa funci贸n:

https://groups.google.com/forum/?fromgroups=#!topic/harbour-devel/IiUBBXPAOpc
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: C STRUCTURE
Posted: Tue Mar 19, 2013 10:17 PM
Problema solucionado:

No puedes usar cstruct.ch de xHarbour, sino el que proporciona Harbour:

https://github.com/harbour/core/blob/master/contrib/xhb/cstruct.ch

Con ese, funciona bien :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 88
Joined: Wed Apr 28, 2010 06:34 PM
Re: C STRUCTURE
Posted: Wed Mar 20, 2013 11:47 AM

Gracias Antonio, casi todo est谩 funcionando, s贸lo la parte que no muestra los gr谩ficos, creo que se debe a tActivex, al Harbour que se debe usar?

Utilizo RmChart para visualizar las gr谩ficas.

Saludos

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: C STRUCTURE
Posted: Wed Mar 20, 2013 11:50 AM

Puedes proporcionar un PRG de ejemplo de como usas RmChart, para que podamos probarlo y ver que le ocurre ? gracias :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 88
Joined: Wed Apr 28, 2010 06:34 PM
Re: C STRUCTURE
Posted: Wed Mar 20, 2013 12:38 PM
Gracias, sigue el ejemplo que funciona con xHarbour

Code (fw): Select all Collapse
#include "FiveWin.Ch"
#include "cstruct.ch"
#include "RMCHART.Ch"

#define DLL_OSAPI 0x20

typedef struct { CTYPE_DOUBLE nDouble[12] } DataStructD12

FUNCTION TesteGrafico()
LOCAL aDados := { { 225.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 } , { 220.00, 100.00, 125.00, 300.00, 150.00, 125.00, 85.00, 50.00, 285.00, 275.00, 295.00, 280.00 }, { 125.25, 100.00, 100.00, 150.00, 250.00, 300.00, 25.00, 75.00, 300.00, 200.00, 325.00, 300.00 } }
LOCAL cLegenda := "Entradas*Saidas*Mais Um"
LOCAL cLabels := "Janeiro*Fevereiro*Mar莽o*Abril*Maio*Junho*Julho*Agosto*Setembro*Outubro*Novembro*Dezembro"
LOCAL cTitulo := "Grafico de Teste Grafico"
PRIVATE hDll := DllLoad("rmchart.dll")

    DEFINE DIALOG oDlgGra1 FROM 0,0 TO 400,770 PIXEL FONT oClassVar:oFntB COLOR oClassVar:nCorDlgT,oClassVar:nCorDlgJ
        oDlgGra1:lHelpIcon := .F.

        oChart := TActiveX():New( oDlgGra1, "RMChart.RMChartX", 0, 0, 0, 0 )

   ACTIVATE DIALOG oDlgGra1 CENTER ON INIT GeraRmc( oDlgGra1, oChart, aDados, cTitulo, cLabels, cLegenda )

    DllUnload( hDLL )

RETURN NIL

FUNCTION GeraRmc( oDlgGra, oChart, aDados, cTitulo, cLabels, cLegenda )
LOCAL nRetVal := nMax := 0
LOCAL cImagem := "" //"C:\SIG32new\Bitmaps\Paper.jpg"
LOCAL cUnidade := "R$ "
LOCAL cTextoVert := ""
LOCAL aDadosGraf:={}
LOCAL oData1 IS DataStructD12
LOCAL oData2 IS DataStructD12
LOCAL oData3 IS DataStructD12

FOR cTrGra1:=1 TO LEN( aDados )

    nMax := MAX( nMax, Amax( aDados[cTrGra1] ) )

    FOR cTrGra2:=1 TO LEN( aDados[cTrGra1] )

        IF cTrGra1 == 1
            oData1:nDouble[cTrGra2] := aDados[cTrGra1,cTrGra2]
        ELSEIF cTrGra1 == 2
            oData2:nDouble[cTrGra2] := aDados[cTrGra1,cTrGra2]
        ELSEIF cTrGra1 == 3
            oData3:nDouble[cTrGra2] := aDados[cTrGra1,cTrGra2]
        ENDIF

    NEXT

    IF cTrGra1 == 1
        AADD( aDadosGraf, oData1[1] )
    ELSEIF cTrGra1 == 2
        AADD( aDadosGraf, oData2[1] )
    ELSEIF cTrGra1 == 3
        AADD( aDadosGraf, oData3[1] )
    ENDIF

NEXT

nMax := ROUND( ( INT( nMax/10 ) * 10 ) + 10 , 2 )

nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_CREATECHART", oDlgGra:hWnd, 1001, 0, 0, 770, 400, ColorAzure, RMC_CTRLSTYLE3DLIGHT, .F., cImagem, "", 0, 0 )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDREGION", 1001, 0, 0, 760, 400, "Sig SoftWare", .F. )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDCAPTION", 1001, 1, cTitulo, ColorTransparent, ColorRed, 9, .T. )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDGRID", 1001, 1, ColorLightBlue, .F., 20, 20, 685, 330, RMC_BICOLOR_LABELAXIS )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDLABELAXIS", 1001, 1, cLabels, 1, LEN( aDados[1] ), RMC_LABELAXISBOTTOM, 8, ColorBlack, RMC_TEXTCENTER, ColorBlack, RMC_LINESTYLENONE, "" )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDDATAAXIS", 1001, 1, RMC_DATAAXISRIGHT, 0.0, nMax, LEN( aDados[1] ), 8, ColorBlack, ColorBlack, RMC_LINESTYLESOLID, 0, cUnidade, cTextoVert, "", RMC_TEXTCENTER )

FOR x:=1 TO LEN(aDadosGraf)
    nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDBARSERIES", 1001, 1, aDadosGraf[x], 12, RMC_BARGROUP, RMC_BAR_FLAT_GRADIENT2, .F., 0, .F., 1, RMC_VLABEL_NONE, x, RMC_HATCHBRUSH_ONPRINTING )
NEXT

nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_ADDLEGEND", 1001, 1, cLegenda, RMC_LEGEND_BOTTOM, ColorTransparent, RMC_LEGENDNORECT, ColorRed, 8, .T. )
nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_DRAW", 1001 )

RETURN NIL
///////////////////////////////////////////////////////////////////////////////////////
//                                                                                   //
///////////////////////////////////////////////////////////////////////////////////////
FUNCTION ImprimeGrafico( oDlgGra )

nRetVal := DllCall(hDll,DLL_OSAPI,"RMC_DRAW2PRINTER", 1001, oDlgGra:hWnd, 0, 0, 0, 0, RMC_EMF )
?nRetVal

RETURN NIL

////////////////////////////DADOS DA FUNCAO////////////////////////////////////////////
// NOME       : aMax                                                                 //
// SINTESE    : Retornar o maior valor de um vetor                                   //
// PARAMETROS : <1> aVetor                                                           //
//              <2> nElemento (para vetores multimensionais)                         //
// RETORNO    : xMaior elemento do vetor                                             //
///////////////////////////////////////////////////////////////////////////////////////
function aMax( aVetor, nElem )

local aNovoVet
local xMaxElem

DEFAULT nElem:=0

aNovoVet:=aclone( aVetor )
if nElem=0
        aNovoVet:=asort( aNovoVet )
        xMaxElem:=aNovoVet[len(aNovoVet)]
else
        aNovoVet:=aasort( aNovoVet, nElem )
        xMaxElem:=aNovoVet[nElem, len(aNovoVet)]
endif

return xMaxElem

////////////////////////////DADOS DA FUNCAO////////////////////////////////////////////
// NOME       : AaSort                                                               //
// FINALIDADE : ordenar os elementos de um vetor muldimensional                      //
// PARAMETROS : <1> aVetor a ser ordenado                                            //
//              [2] nElemento do vetor a ser ordenado (default=1)                    //
//              [3] cOrdem Crescente ou Decrescente (default='C')                    //
// RETORNO    : aVetor ordenado                                                      //
///////////////////////////////////////////////////////////////////////////////////////
function AaSort( aVetor, nElem, cOrdem )

local aRetorno, x, y

DEFAULT nElem:=1
DEFAULT cOrdem:='C'
if cOrdem='C'
        aRetorno:= asort( aVetor,,, { |x, y| x[nElem] < y[nElem] } )
else
        aRetorno:= asort( aVetor,,, { |x, y| x[nElem] > y[nElem] } )
endif

return aRetorno
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: C STRUCTURE
Posted: Wed Mar 20, 2013 02:20 PM

Existe una versi贸n demo de "rmchart.dll" ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 88
Joined: Wed Apr 28, 2010 06:34 PM
Re: C STRUCTURE
Posted: Wed Mar 20, 2013 02:40 PM
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: C STRUCTURE
Posted: Wed Mar 20, 2013 07:43 PM

Lo siento, pero no te proporcionar茅 m谩s soporte t茅cnico hasta que no elimines los ficheros ilegales que tienes en tu cuenta de 4shared...

Sorry, but I will not provide you any further tech support until you remove all the illegal files that you keep on your 4shared account...

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: C STRUCTURE
Posted: Wed Mar 20, 2013 08:58 PM
Already reported to 4shared and removed accordingly:

Hello,

Thank you for letting us know. We have deactivated the links to the illegal files.

If you know any other illegal use of our service, please let us know. We will do
our best to remove the files as soon as possible.

We appreciate your desire to make our service better. Thank you.


Best regards,
Vadim
support@4shared.com
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 88
Joined: Wed Apr 28, 2010 06:34 PM
Re: C STRUCTURE
Posted: Thu Mar 21, 2013 11:34 AM
Posts: 5
Joined: Mon Sep 29, 2014 10:58 AM
Re: C STRUCTURE
Posted: Tue May 10, 2016 09:07 PM

Ol谩,

Voltando ao assunto do rmchart, com base ao exemplo do aferra, a minha duvida 茅 de como exibir todos os dados de todos os 12 meses?
Consegui portar o c贸digo para o harbour.

Continue the discussion