Page 1 of 1

Funciones desde una dll

PostPosted: Tue Oct 19, 2010 2:31 pm
by jose_murugosa
Compañeros del foro,

Parece que estos días me he puesto a hacer todo lo que nunca hice, así que estaré jorobando un poquito por estos lugares......

Quisiera un poco de orientación sobre como llamar funciones contenidas en una dll.

Concretamente se trata de RMChart.dll una dll que permite la generación de muy bellos gráficos.

He visto algo de DLL FUNCTION .....

Pero como el unico lenguage que apenas conozco es fivewin, las funciones desde dll son misterio :oops:

Alguien podría ayudarme proporcionandome un ejemplo de como ejecutar estas funciones desde fivewin, por ejemplo esta:

RMC_CreateChartFromFile function.
Create a new chart by reading a *.rmc-file or passing the data string.
--------------------------------------------------------------------------------
Syntax
nResult (LONG) = RMC_CreateChartFromFile(
ByVal nParentHndl (LONG),
ByVal nCtrlId (LONG),
ByVal nX (LONG),
ByVal nY (LONG),
ByVal nExportOnly (LONG),
ByRef sRMCFile (ASCIIZ)
)

Gracias desde ya por vuestra ayuda. :D

Re: Funciones desde una dll

PostPosted: Tue Oct 19, 2010 7:42 pm
by jose_murugosa
:roll:

Re: Funciones desde una dll

PostPosted: Wed Oct 20, 2010 9:16 am
by jose_murugosa
cualquier guia sirve.....:shock:

Re: Funciones desde una dll

PostPosted: Wed Oct 20, 2010 9:58 am
by JmGarcia
Lo primero que tienes que tener claro es los nombres de las funciones, sus parámetros y tipos.
Los defines al final del programa como DLL32 FUNCTION <NombreFuncionEnTuPrograma> ( <parametro> AS <tipo>... ) AS <tipo> PASCAL FROM "NombreFuncionEnLaDLL" LIB "<NombreDeLaDLL.dll>"
Despues haces las llamadas como cualquier funcción.

Code: Select all  Expand view
function main()
local nResult:=0,a:=0,b:=0,c:=0,d:=0,e:=0,f:=""

nResult:=RMC_CreateChartFromFile(a,b,c,d,e,f)

return nil

DLL32 FUNCTION RMC_CreateChartFromFile(nParentHndl AS LONG,;
                                       nCtrlId AS LONG,;
                                       nX AS LONG,;
                                       nY AS LONG,;
                                       nExportOnly AS LONG,;
                                       sRMCFile AS LPSTR) ;
AS LONG PASCAL FROM "RMC_CreateChartFromFile" LIB "NombreDeLaDLL.dll"

Re: Funciones desde una dll

PostPosted: Wed Oct 20, 2010 10:00 am
by jose_murugosa
JmGarcia wrote:Lo primero que tienes que tener claro es los nombres de las funciones, sus parámetros y tipos.
Los defines al final del programa como DLL32 FUNCTION <NombreFuncionEnTuPrograma> ( <parametro> AS <tipo>... ) AS <tipo> PASCAL FROM "NombreFuncionEnLaDLL" LIB "<NombreDeLaDLL.dll>"
Despues haces las llamadas como cualquier funcción.

Code: Select all  Expand view
function main()
local nResult:=0,a:=0,b:=0,c:=0,d:=0,e:=0,f:=""

nResult:=RMC_CreateChartFromFile(a,b,c,d,e,f)

return nil

DLL32 FUNCTION RMC_CreateChartFromFile(nParentHndl AS LONG,;
                                       nCtrlId AS LONG,;
                                       nX AS LONG,;
                                       nY AS LONG,;
                                       nExportOnly AS LONG,;
                                       sRMCFile AS LPSTR) ;
AS LONG PASCAL FROM "RMC_CreateChartFromFile" LIB "NombreDeLaDLL.dll"


Muuuuuuuuuchassss graaaaaaciasssss!!!!, ya mismo me pongo a probar!!!! :D

Re: Funciones desde una dll

PostPosted: Wed Oct 20, 2010 1:37 pm
by jose_murugosa
Bueno!!!

He logrado poner accesibles a los programas en fivewin las funciones de RMChart y aparentemente funcionan, ya que al llamarlas
no me da error.

Pero.... tengo dudas, que provienen de mi ignorancia de varios detalles del manejo de windows.
Volviendo a la función que mencionaba al principio....

nResult (LONG) = RMC_CreateChartFromFile(
ByVal nParentHndl (LONG),
ByVal nCtrlId (LONG),
ByVal nX (LONG),
ByVal nY (LONG),
ByVal nExportOnly (LONG),
ByRef sRMCFile (ASCIIZ)
)

NParentHndl - Es el handle de la ventana creo, si entiendo bien es: si ventana: oWnd:hWnd y si dialog oDlg:hWnd....
nCtrlId - Este es el ID único del control.... acá no se... yo defino arbitrariamente el valor de este id?, ... no tengo muy claro eso :( nX y nY - Son valores numéricos correspondientes a la esquina superior izquierda del gráfico

nExportOnly - es un LONG y dice que debe ser verdadeo para que se vea el gráfico, ¿significa esto que debe ser 1 por verdadero y
0 por falso?.
:(

sRMCFile - es el nombre del archivo RMC que contiene las características del gráfico a desplegar


En este link encontrarán: la dll, el archivo .hlp y el archivo rmc por si puede ser util para alguien, es una dll gratuita, agradezco desde ya la ayuda que me puedan brindar para ir captando la idea de como trabajar con ella.

http://www.box.net/shared/h0jrmnkzzd

Gracias desde YA:)

Re: Funciones desde una dll

PostPosted: Wed Oct 20, 2010 2:27 pm
by thefull

Re: Funciones desde una dll

PostPosted: Wed Oct 20, 2010 3:02 pm
by JmGarcia
jose_murugosa wrote:nExportOnly - es un LONG y dice que debe ser verdadeo para que se vea el gráfico, ¿significa esto que debe ser 1 por verdadero y 0 por falso?. :(
Sí, se puede usar 1 o 0. Pero en la llamada a la función usa mejor ".T." o ".F."

Re: Funciones desde una dll

PostPosted: Wed Oct 20, 2010 3:07 pm
by jose_murugosa
Gracias Rafa!!!!!!
Parece que intentaba descubrir la pólvora.

Gracias JMGarcía por tus comentarios y ayuda!!!!!!

Vuestro interés y vuestras rápidas respuestas han sido extraordinarios, no me sorprende porque siempre es así, verdaderamente me siento muy feliz de pertenecer a esta comunidad tan servicial.

Bueno, tengo muuuuuuucho para leer, revisar, compilar y probar, GRACIAS DE NUEVO :D