C STRUCTURE

Post Reply
aferra
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

C STRUCTURE

Post by aferra »

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: C STRUCTURE

Post by Antonio Linares »

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/?fromgr ... iUBBXPAOpc
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: C STRUCTURE

Post by Antonio Linares »

Problema solucionado:

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

https://github.com/harbour/core/blob/ma ... cstruct.ch

Con ese, funciona bien :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
aferra
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

Re: C STRUCTURE

Post by aferra »

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: C STRUCTURE

Post by Antonio Linares »

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
aferra
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

Re: C STRUCTURE

Post by aferra »

Gracias, sigue el ejemplo que funciona con xHarbour

Code: Select all

#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
 
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: C STRUCTURE

Post by Antonio Linares »

Existe una versión demo de "rmchart.dll" ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
aferra
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

Re: C STRUCTURE

Post by aferra »

Last edited by aferra on Wed Mar 20, 2013 8:09 pm, edited 2 times in total.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: C STRUCTURE

Post by Antonio Linares »

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: C STRUCTURE

Post by Antonio Linares »

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
aferra
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

Re: C STRUCTURE

Post by aferra »

asimoes
Posts: 5
Joined: Mon Sep 29, 2014 10:58 am

Re: C STRUCTURE

Post by asimoes »

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.
Post Reply