![]() |
Dll+Builder? como?
Buenas.
Me encuentro trabajando en un proyecto de control y monitoreo usando para ello el puerto usb de mi computador; la cuestion es : 1. que necesito incluir las funciones de una dll que son las que se comunican con el puerto y no c como es que puedo accesar a ellas desde el builder ; tengo la dll y ademas un archivo .cpp con las descripciones de las funciones y todo pero Que hago con esto? he revisado los hilos del foro y he visto que Delphi puede comunicarse directamente a la api; pero no c nada de delphi; y el proyecto debe ser en builder . 2 los archivos son los que da la microchip para trabajar con PIC18f4550 con el cual ya tengo todo listo ; lo he probado con un programa de ejemplo que dan en otra pagina ( programado en delphi para mi pesar ) y funciona; dan el codigo fuente y todo; pero la api esta escrita en C Builder (ironico no?) he modificado el codigo del pic y puedo hacer que varias cosas distintas pero lo interesante queda dependiendo del programa en el PC ya que no puedo modificar este programa. sin alguien tiene alguna sugerencia. 4 los archivos son: mpusbapi.dll ;_mpusbapi.cpp; _mpusbapi.h Muchisimas gracias de Antemano |
Estas de buenas:
Código:
#include <vcl.h> Código:
#include <vcl.h> Código:
#ifndef Unit1H |
gracias ; pero tengo unas dudas; cuando la funcion tiene mas de un parametro como debo llamarla? agrego los parametros uno a continuacion del otro?. en el codigo aparece_:
F=(void (__stdcall *)(caso *))GetProcAddress(Handle,"LongitudCad"); no estoy muy claro; que hace F en el codigo: F(&Caso); otra cosa es que algunas de las funciones retornan un valor y no se que hacer en ese caso. disculpa las molestias |
eres afortunado otra vez, era el ultimo vistazo q echaba a estos hilos :) :
F es un puntero a una función, alli se carga " por decirlo así " (Marteens tiene tiempo para explicarlo mejor) una referencia a ella, tal como ves en ese " F(&Caso) " la linea " F=(void (__stdcall *)(caso *))GetProcAddress(Handle,"LongitudCad"); " dice q F referirá a una función q "nada devuelve (void)" q se llama "LongitudCad" y sera obtenida de la DLL cargada en Handle y q tiene como parámetro un puntero a una estructura de tipo "caso", si tiene mas paràmetros pues los agregas uno tras otro tanto en la DLL como en la linea anterior en la parte "(caso *,...)" y si devuelve valor sería " F=( tipo_de_valor (__stdcall... " otra cosa..mosca con lo devuelto, es corto el tiempo para explicarlo todo...es mejor q devuelvas valores por parámetros usanso punteros o referencias por & |
Voy a ver todo eso; si alguna ves vuelves a revisar este hilo te dejo por escrito las gracias; por tu tiempo y por darme una mano. GRACIAS
|
gracias
perfecto aprendi mucho con lo que escribiste gracias todo funciona a la perfeccion, toco hacer unas cuantas cosillas mas pero la base fue lo mas importante despues de sto todo fue mas facil
|
Hola,
Aleph, estoy con un proyecto igual al tuyo. Yo el tema de la comunicacion con la dll, la tengo resuelta, pero al pasar al codigo de delphi a c, algo tengo que haber hecho mal ya que no responde a las comunicaciones. Le estoy dando vueltas pero nada... ¿Has conseguido comunicarte con el pic? Un saludo. |
La franja horaria es GMT +2. Ahora son las 06:23:36. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi